File: Mathlib/Topology/GDelta.lean

full_name: IsGδ
code: /-- A Gδ set is a countable intersection of open sets. -/
def IsGδ (s : Set X) : Prop 
goal: Prop

full_name: IsOpen.isGδ
code: /-- An open set is a Gδ set. -/
theorem IsOpen.isGδ {s : Set X} (h : IsOpen s) : IsGδ s 
goal: IsGδ s

full_name: IsGδ.empty
code: @[simp]
protected theorem IsGδ.empty : IsGδ (∅ : Set X) 
goal: IsGδ ∅

full_name: IsGδ.univ
code: @[simp]
protected theorem IsGδ.univ : IsGδ (univ : Set X) 
goal: IsGδ Set.univ

full_name: IsGδ.biInter_of_isOpen
code: theorem IsGδ.biInter_of_isOpen {I : Set ι} (hI : I.Countable) {f : ι → Set X}
    (hf : ∀ i ∈ I, IsOpen (f i)) : IsGδ (⋂ i ∈ I, f i) 
goal: IsGδ (⋂ i ∈ I, f i)

full_name: IsGδ.iInter_of_isOpen
code: theorem IsGδ.iInter_of_isOpen [Countable ι'] {f : ι' → Set X} (hf : ∀ i, IsOpen (f i)) :
    IsGδ (⋂ i, f i) 
goal: IsGδ (⋂ i, f i)

full_name: isGδ_iff_eq_iInter_nat
code: lemma isGδ_iff_eq_iInter_nat {s : Set X} :
    IsGδ s ↔ ∃ (f : ℕ → Set X), (∀ n, IsOpen (f n)) ∧ s = ⋂ n, f n 
goal: IsGδ s ↔ ∃ f, (∀ (n : ℕ), IsOpen (f n)) ∧ s = ⋂ n, f n

full_name: IsGδ.iInter
code: /-- The intersection of an encodable family of Gδ sets is a Gδ set. -/
protected theorem IsGδ.iInter [Countable ι'] {s : ι' → Set X} (hs : ∀ i, IsGδ (s i)) :
    IsGδ (⋂ i, s i) 
goal: IsGδ (⋂ i, s i)

full_name: IsGδ.biInter
code: theorem IsGδ.biInter {s : Set ι} (hs : s.Countable) {t : ∀ i ∈ s, Set X}
    (ht : ∀ (i) (hi : i ∈ s), IsGδ (t i hi)) : IsGδ (⋂ i ∈ s, t i ‹_›) 
goal: IsGδ (⋂ i, ⋂ (h : i ∈ s), t i h)

full_name: IsGδ.sInter
code: /-- A countable intersection of Gδ sets is a Gδ set. -/
theorem IsGδ.sInter {S : Set (Set X)} (h : ∀ s ∈ S, IsGδ s) (hS : S.Countable) : IsGδ (⋂₀ S) 
goal: IsGδ (⋂₀ S)

full_name: IsGδ.inter
code: theorem IsGδ.inter {s t : Set X} (hs : IsGδ s) (ht : IsGδ t) : IsGδ (s ∩ t) 
goal: IsGδ (s ∩ t)

full_name: IsGδ.union
code: /-- The union of two Gδ sets is a Gδ set. -/
theorem IsGδ.union {s t : Set X} (hs : IsGδ s) (ht : IsGδ t) : IsGδ (s ∪ t) 
goal: IsGδ (s ∪ t)

full_name: IsGδ.sUnion
code: /-- The union of finitely many Gδ sets is a Gδ set, `Set.sUnion` version. -/
theorem IsGδ.sUnion {S : Set (Set X)} (hS : S.Finite) (h : ∀ s ∈ S, IsGδ s) : IsGδ (⋃₀ S) 
goal: IsGδ (⋃₀ S)

full_name: IsGδ.biUnion
code: /-- The union of finitely many Gδ sets is a Gδ set, bounded indexed union version. -/
theorem IsGδ.biUnion {s : Set ι} (hs : s.Finite) {f : ι → Set X} (h : ∀ i ∈ s, IsGδ (f i)) :
    IsGδ (⋃ i ∈ s, f i) 
goal: IsGδ (⋃ i ∈ s, f i)

full_name: IsGδ.iUnion
code: /-- The union of finitely many Gδ sets is a Gδ set, bounded indexed union version. -/
theorem IsGδ.iUnion [Finite ι'] {f : ι' → Set X} (h : ∀ i, IsGδ (f i)) : IsGδ (⋃ i, f i) 
goal: IsGδ (⋃ i, f i)

full_name: IsClosed.isGδ
code: theorem IsClosed.isGδ {X : Type*} [UniformSpace X] [IsCountablyGenerated (𝓤 X)] {s : Set X}
    (hs : IsClosed s) : IsGδ s 
goal: IsGδ s

full_name: IsGδ.setOf_continuousAt
code: /-- The set of points where a function is continuous is a Gδ set. -/
theorem IsGδ.setOf_continuousAt [UniformSpace Y] [IsCountablyGenerated (𝓤 Y)] (f : X → Y) :
    IsGδ { x | ContinuousAt f x } 
goal: IsGδ {x | ContinuousAt f x}

full_name: residual
code: /-- A set `s` is called *residual* if it includes a countable intersection of dense open sets. -/
def residual (X : Type*) [TopologicalSpace X] : Filter X 
goal: Filter X

full_name: countableInterFilter_residual
code: instance countableInterFilter_residual : CountableInterFilter (residual X) 
goal: CountableInterFilter (residual X)

full_name: residual_of_dense_open
code: /-- Dense open sets are residual. -/
theorem residual_of_dense_open {s : Set X} (ho : IsOpen s) (hd : Dense s) : s ∈ residual X 
goal: s ∈ residual X

full_name: residual_of_dense_Gδ
code: /-- Dense Gδ sets are residual. -/
theorem residual_of_dense_Gδ {s : Set X} (ho : IsGδ s) (hd : Dense s) : s ∈ residual X 
goal: s ∈ residual X

full_name: mem_residual_iff
code: /-- A set is residual iff it includes a countable intersection of dense open sets. -/
theorem mem_residual_iff {s : Set X} :
    s ∈ residual X ↔
      ∃ S : Set (Set X), (∀ t ∈ S, IsOpen t) ∧ (∀ t ∈ S, Dense t) ∧ S.Countable ∧ ⋂₀ S ⊆ s 
goal: s ∈ residual X ↔ ∃ S, (∀ t ∈ S, IsOpen t) ∧ (∀ t ∈ S, Dense t) ∧ S.Countable ∧ ⋂₀ S ⊆ s

full_name: IsNowhereDense
code: /-- A set is called **nowhere dense** iff its closure has empty interior. -/
def IsNowhereDense (s : Set X) 
goal: Prop

full_name: isNowhereDense_empty
code: /-- The empty set is nowhere dense. -/
@[simp]
lemma isNowhereDense_empty : IsNowhereDense (∅ : Set X) 
goal: IsNowhereDense ∅

full_name: IsClosed.isNowhereDense_iff
code: /-- A closed set is nowhere dense iff its interior is empty. -/
lemma IsClosed.isNowhereDense_iff {s : Set X} (hs : IsClosed s) :
    IsNowhereDense s ↔ interior s = ∅ 
goal: IsNowhereDense s ↔ interior s = ∅

full_name: IsNowhereDense.closure
code: /-- If a set `s` is nowhere dense, so is its closure. -/
protected lemma IsNowhereDense.closure {s : Set X} (hs : IsNowhereDense s) :
    IsNowhereDense (closure s) 
goal: IsNowhereDense (closure s)

full_name: IsNowhereDense.subset_of_closed_isNowhereDense
code: /-- A nowhere dense set `s` is contained in a closed nowhere dense set (namely, its closure). -/
lemma IsNowhereDense.subset_of_closed_isNowhereDense {s : Set X} (hs : IsNowhereDense s) :
    ∃ t : Set X, s ⊆ t ∧ IsNowhereDense t ∧ IsClosed t 
goal: ∃ t, s ⊆ t ∧ IsNowhereDense t ∧ IsClosed t

full_name: isClosed_isNowhereDense_iff_compl
code: /-- A set `s` is closed and nowhere dense iff its complement `sᶜ` is open and dense. -/
lemma isClosed_isNowhereDense_iff_compl {s : Set X} :
    IsClosed s ∧ IsNowhereDense s ↔ IsOpen sᶜ ∧ Dense sᶜ 
goal: IsClosed s ∧ IsNowhereDense s ↔ IsOpen sᶜ ∧ Dense sᶜ

full_name: IsMeagre
code: /-- A set is called **meagre** iff its complement is a residual (or comeagre) set. -/
def IsMeagre (s : Set X) 
goal: Prop

full_name: meagre_empty
code: /-- The empty set is meagre. -/
lemma meagre_empty : IsMeagre (∅ : Set X) 
goal: IsMeagre ∅

full_name: IsMeagre.mono
code: /-- Subsets of meagre sets are meagre. -/
lemma IsMeagre.mono {s t : Set X} (hs : IsMeagre s) (hts : t ⊆ s) : IsMeagre t 
goal: IsMeagre t

full_name: IsMeagre.inter
code: /-- An intersection with a meagre set is meagre. -/
lemma IsMeagre.inter {s t : Set X} (hs : IsMeagre s) : IsMeagre (s ∩ t) 
goal: IsMeagre (s ∩ t)

full_name: isMeagre_iUnion
code: /-- A countable union of meagre sets is meagre. -/
lemma isMeagre_iUnion {s : ℕ → Set X} (hs : ∀ n, IsMeagre (s n)) : IsMeagre (⋃ n, s n) 
goal: IsMeagre (⋃ n, s n)

full_name: isMeagre_iff_countable_union_isNowhereDense
code: /-- A set is meagre iff it is contained in a countable union of nowhere dense sets. -/
lemma isMeagre_iff_countable_union_isNowhereDense {s : Set X} :
    IsMeagre s ↔ ∃ S : Set (Set X), (∀ t ∈ S, IsNowhereDense t) ∧ S.Countable ∧ s ⊆ ⋃₀ S 
goal: IsMeagre s ↔ ∃ S, (∀ t ∈ S, IsNowhereDense t) ∧ S.Countable ∧ s ⊆ ⋃₀ S