@@ -10,6 +10,7 @@ public import Mathlib.Topology.Compactness.SigmaCompact
1010public import Mathlib.Topology.Connected.TotallyDisconnected
1111public import Mathlib.Topology.Inseparable
1212public import Mathlib.Topology.Separation.Regular
13+ public import Mathlib.Topology.UrysohnsLemma
1314public import Mathlib.Topology.GDelta.Basic
1415
1516/-!
@@ -39,6 +40,14 @@ section Separation
3940theorem IsGδ.compl_singleton (x : X) [T1Space X] : IsGδ ({x}ᶜ : Set X) :=
4041 isOpen_compl_singleton.isGδ
4142
43+ lemma IsGδ.preimage {X Y} [TopologicalSpace X] [TopologicalSpace Y]
44+ (f : ContinuousMap X Y) {s : Set Y} (hs : IsGδ s) : IsGδ (f ⁻¹' s) := by
45+ rcases hs with ⟨T, To, cardT, hsT⟩
46+ use Set.preimage f '' T
47+ split_ands
48+ · rintro _ ⟨t, ht, rfl⟩; exact (To t ht).preimage f.continuous
49+ · exact Countable.image cardT (Set.preimage ⇑f)
50+ · simp [hsT]
4251
4352theorem Set.Countable.isGδ_compl {s : Set X} [T1Space X] (hs : s.Countable) : IsGδ sᶜ := by
4453 rw [← biUnion_of_singleton s, compl_iUnion₂]
@@ -101,6 +110,17 @@ theorem Disjoint.hasSeparatingCover_closed_gdelta_right {s t : Set X} [NormalSpa
101110 rw [← closure_eq_iff_isClosed.mpr t_cl] at clt_sub_g'
102111 exact subset_closure.trans <| (clt_sub_g' n).trans <| (g'_open n).subset_interior_closure
103112
113+ lemma of_precise_separating
114+ (sep : {s t : Set X} → IsClosed s → IsClosed t → Disjoint s t →
115+ {δ : C(X, ℝ) // δ ⁻¹' {0 } = s ∧ δ ⁻¹' {1 } = t}) : PerfectlyNormalSpace X where
116+ __ := NormalSpace.of_separating fun {s t} sC tC disj ↦ (sep sC tC disj).map id
117+ (fun _ ↦ And.imp (fun h₀ x hx ↦ h₀.symm.subset hx) fun h₁ x hx ↦ h₁.symm.subset hx)
118+ closed_gdelta ⦃s⦄ sC := by
119+ have Gδ₀ : IsGδ ({0 } : Set ℝ) := IsGδ.singleton 0
120+ let ⟨δ, hδ₀, hδ₁⟩ := sep sC isClosed_empty (disjoint_empty s)
121+ rw [← hδ₀]
122+ apply Gδ₀.preimage
123+
104124instance (priority := 100 ) PerfectlyNormalSpace.toCompletelyNormalSpace
105125 [PerfectlyNormalSpace X] : CompletelyNormalSpace X where
106126 completely_normal _ _ hd₁ hd₂ := separatedNhds_iff_disjoint.mp <|
0 commit comments