@@ -67,39 +67,38 @@ theorem IsGδ.baireSpace_of_dense (hG : IsGδ s) (hd : Dense s) : BaireSpace s :
6767 rw [h_inter_eq] at h_inter_dense
6868 exact Subtype.dense_iff.mpr fun a _ ↦ h_inter_dense a
6969
70- /-- An open subset of a Baire space is Baire. -/
71- theorem IsOpen.baireSpace {s : Set X} (hO : IsOpen s) : BaireSpace s := by
70+ /-- If `p : Y → X` is an open embedding and `X` is a Baire space, then `Y` is a Baire space. -/
71+ theorem Topology.IsOpenEmbedding.baireSpace {Y : Type *} [TopologicalSpace Y] {p : Y → X}
72+ (hp : Topology.IsOpenEmbedding p) : BaireSpace Y := by
7273 constructor
7374 intro f hof hdf
74- obtain ⟨g, hg1, hg2, hg3⟩ : ∃ g : ℕ → Set X,
75- (∀ n, IsOpen (g n)) ∧ (∀ n, Subtype.val ⁻¹' g n = f n) ∧
76- ∀ n, Subtype.val '' f n = s ∩ g n := by
77- choose g hg using hof
78- exact ⟨g, fun n => (hg n).1 , fun n => (hg n).2 ,
79- fun n => (hg n).2 ▸ Subtype.image_preimage_val s (g n)⟩
80- let c := fun n : ℕ => g n ∪ (closure s)ᶜ
81- have c_open (n : ℕ) : IsOpen (c n) := IsOpen.union (hg1 n) isClosed_closure.isOpen_compl
75+ let s := range p
76+ let c := fun n : ℕ => p '' f n ∪ (closure s)ᶜ
77+ have c_open (n : ℕ) : IsOpen (c n) := IsOpen.union (hp.isOpenMap (f n) (hof n))
78+ isClosed_closure.isOpen_compl
8279 have c_dense (n : ℕ) : Dense (c n) := by
8380 rw [dense_iff_closure_eq, subset_antisymm_iff]
84- have : ( univ : Set X) ⊆ closure (c n) := calc
81+ have : univ ⊆ closure (c n) := calc
8582 _ ⊆ (interior (closure s)) ∪ (interior (closure s))ᶜ := by grind
8683 _ ⊆ closure s ∪ (interior (closure s))ᶜ := by gcongr; exact interior_subset
87- _ ⊆ closure (Subtype.val '' f n) ∪ (interior (closure s))ᶜ := union_subset_union
88- (closure_minimal (Subtype.dense_iff.mp (hdf n)) isClosed_closure)
89- (subset_refl (interior (closure s))ᶜ)
90- _ ⊆ closure (g n ∩ s) ∪ (interior (closure s))ᶜ := by gcongr; simpa using (hg3 n).subset
91- _ ⊆ closure (g n) ∪ closure ((closure s)ᶜ) := union_subset_union
92- (closure_mono inter_subset_left) (by simp)
84+ _ ⊆ closure (p '' f n) ∪ (interior (closure s))ᶜ := union_subset_union
85+ (closure_minimal (hp.continuous.range_subset_closure_image_dense (hdf n))
86+ isClosed_closure) (subset_refl (interior (closure s))ᶜ)
87+ _ ⊆ closure (p '' f n) ∪ closure ((closure s)ᶜ) := union_subset_union (by simp) (by simp)
9388 _ = closure (c n) := closure_union.symm
9489 grind
9590 have c_inter_dense : Dense (⋂ n, c n) := dense_iInter_of_isOpen_nat c_open c_dense
96- have c_inter_eq : ⋂ n, f n = Subtype.val ⁻¹' (⋂ n, c n) := by
91+ have c_inter_eq : ⋂ n, f n = p ⁻¹' (⋂ n, c n) := by
9792 ext x
9893 simp only [mem_iInter, mem_preimage, mem_union, mem_compl_iff, c]
99- refine ⟨fun h i => ?_, fun h i => ?_⟩
100- · exact Or.inl (mem_preimage.mp ((hg2 i).symm ▸ h i))
101- · exact (hg2 i).subset (imp_iff_or_not.mpr (h i) (subset_closure x.2 ))
102- exact c_inter_eq ▸ Dense.preimage c_inter_dense (hO.isOpenMap_subtype_val)
94+ refine ⟨fun h i => by grind, fun h i => ?_⟩
95+ exact hp.injective.mem_set_image.mp (imp_iff_or_not.mpr (h i)
96+ (subset_closure (mem_range_self x)))
97+ exact c_inter_eq ▸ Dense.preimage c_inter_dense hp.isOpenMap
98+
99+ /-- An open subset of a Baire space is Baire. -/
100+ theorem IsOpen.baireSpace {s : Set X} (hO : IsOpen s) : BaireSpace s :=
101+ hO.isOpenEmbedding_subtypeVal.baireSpace
103102
104103/-- Baire theorem: a countable intersection of dense open sets is dense. Formulated here with ⋂₀. -/
105104theorem dense_sInter_of_isOpen {S : Set (Set X)} (ho : ∀ s ∈ S, IsOpen s) (hS : S.Countable)
0 commit comments