Skip to content

Commit 8897366

Browse files
committed
Update Lemmas.lean
1 parent d61f1f5 commit 8897366

1 file changed

Lines changed: 21 additions & 22 deletions

File tree

Mathlib/Topology/Baire/Lemmas.lean

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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 ⋂₀. -/
105104
theorem dense_sInter_of_isOpen {S : Set (Set X)} (ho : ∀ s ∈ S, IsOpen s) (hS : S.Countable)

0 commit comments

Comments
 (0)