@@ -6,6 +6,7 @@ Authors: Sébastien Gouëzel
66module
77
88public import Mathlib.Topology.GDelta.Basic
9+ public import Mathlib.Topology.Constructions
910
1011/-!
1112# Baire spaces
@@ -17,7 +18,7 @@ and all locally compact regular spaces are Baire spaces.
1718We prove the theorems in `Mathlib/Topology/Baire/CompleteMetrizable`
1819and `Mathlib/Topology/Baire/LocallyCompactRegular`.
1920
20- In this file we prove various corollaries of Baire theorems .
21+ In this file we prove some lemmas about Baire spaces .
2122
2223The good concept underlying the theorems is that of a Gδ set, i.e., a countable intersection
2324of open sets. Then Baire theorem can also be formulated as the fact that a countable
@@ -47,6 +48,39 @@ theorem dense_iInter_of_isOpen_nat {f : ℕ → Set X} (ho : ∀ n, IsOpen (f n)
4748 (hd : ∀ n, Dense (f n)) : Dense (⋂ n, f n) :=
4849 BaireSpace.baire_property f ho hd
4950
51+ /-- If `p : Y → X` is an open embedding and `X` is a Baire space, then `Y` is a Baire space. -/
52+ theorem Topology.IsOpenEmbedding.baireSpace {Y : Type *} [TopologicalSpace Y] {p : Y → X}
53+ (hp : Topology.IsOpenEmbedding p) : BaireSpace Y := by
54+ constructor
55+ intro f hof hdf
56+ let s := range p
57+ let c := fun n : ℕ => p '' f n ∪ (closure s)ᶜ
58+ have c_open (n : ℕ) : IsOpen (c n) := IsOpen.union (hp.isOpenMap (f n) (hof n))
59+ isClosed_closure.isOpen_compl
60+ have c_dense (n : ℕ) : Dense (c n) := by
61+ rw [dense_iff_closure_eq, subset_antisymm_iff]
62+ have : univ ⊆ closure (c n) := calc
63+ _ ⊆ (interior (closure s)) ∪ (interior (closure s))ᶜ := by grind
64+ _ ⊆ closure s ∪ (interior (closure s))ᶜ := by gcongr; exact interior_subset
65+ _ ⊆ closure (p '' f n) ∪ (interior (closure s))ᶜ := union_subset_union
66+ (closure_minimal (hp.continuous.range_subset_closure_image_dense (hdf n))
67+ isClosed_closure) (subset_refl (interior (closure s))ᶜ)
68+ _ ⊆ closure (p '' f n) ∪ closure ((closure s)ᶜ) := union_subset_union (by simp) (by simp)
69+ _ = closure (c n) := closure_union.symm
70+ grind
71+ have c_inter_dense : Dense (⋂ n, c n) := dense_iInter_of_isOpen_nat c_open c_dense
72+ have c_inter_eq : ⋂ n, f n = p ⁻¹' (⋂ n, c n) := by
73+ ext x
74+ simp only [mem_iInter, mem_preimage, mem_union, mem_compl_iff, c]
75+ refine ⟨fun h i => by grind, fun h i => ?_⟩
76+ exact hp.injective.mem_set_image.mp (imp_iff_or_not.mpr (h i)
77+ (subset_closure (mem_range_self x)))
78+ exact c_inter_eq ▸ Dense.preimage c_inter_dense hp.isOpenMap
79+
80+ /-- An open subset of a Baire space is Baire. -/
81+ theorem IsOpen.baireSpace {s : Set X} (hO : IsOpen s) : BaireSpace s :=
82+ hO.isOpenEmbedding_subtypeVal.baireSpace
83+
5084/-- Baire theorem: a countable intersection of dense open sets is dense. Formulated here with ⋂₀. -/
5185theorem dense_sInter_of_isOpen {S : Set (Set X)} (ho : ∀ s ∈ S, IsOpen s) (hS : S.Countable)
5286 (hd : ∀ s ∈ S, Dense s) : Dense (⋂₀ S) := by
0 commit comments