@@ -78,6 +78,11 @@ instance isTrans_hausdorffEntourage (U : SetRel α α) [U.IsTrans] :
7878 (hausdorffEntourage U).IsTrans := by
7979 grw [isTrans_iff_comp_subset_self, ← hausdorffEntourage_comp, comp_subset_self]
8080
81+ @[simp]
82+ theorem singleton_mem_hausdorffEntourage (U : SetRel α α) (x y : α) :
83+ ({x}, {y}) ∈ hausdorffEntourage U ↔ (x, y) ∈ U := by
84+ simp [hausdorffEntourage]
85+
8186end hausdorffEntourage
8287
8388variable [UniformSpace α]
@@ -129,6 +134,40 @@ theorem isClosed_powerset {F : Set α} (hF : IsClosed F) :
129134 simp_rw [Set.powerset, ← isOpen_compl_iff, Set.compl_setOf, ← Set.inter_compl_nonempty_iff]
130135 exact isOpen_inter_nonempty_of_isOpen hF.isOpen_compl
131136
137+ theorem isClopen_singleton_empty : IsClopen {(∅ : Set α)} := by
138+ constructor
139+ · rw [← Set.powerset_empty]
140+ exact isClosed_powerset isClosed_empty
141+ · simp_rw [isOpen_iff_mem_nhds, Set.mem_singleton_iff, forall_eq, nhds_eq_uniformity]
142+ filter_upwards [Filter.mem_lift' <| Filter.mem_lift' Filter.univ_mem] with F ⟨_, hF⟩
143+ simpa using hF
144+
145+ theorem isUniformEmbedding_singleton : IsUniformEmbedding ({·} : α → Set α) where
146+ injective := Set.singleton_injective
147+ comap_uniformity := by
148+ change Filter.comap _ (Filter.lift' _ _) = _
149+ simp_rw [Filter.comap_lift'_eq, Function.comp_def, Set.preimage,
150+ singleton_mem_hausdorffEntourage]
151+ exact Filter.lift'_id
152+
153+ theorem isClosedEmbedding_singleton [T0Space α] :
154+ Topology.IsClosedEmbedding ({·} : α → Set α) where
155+ __ := isUniformEmbedding_singleton.isEmbedding
156+ isClosed_range := by
157+ rw [← isOpen_compl_iff, isOpen_iff_mem_nhds]
158+ intro s hs
159+ rcases Set.eq_empty_or_nonempty s with rfl | h
160+ · rwa [(isOpen_singleton_iff_nhds_eq_pure _).mp isClopen_singleton_empty.isOpen,
161+ Filter.mem_pure]
162+ rcases h.exists_eq_singleton_or_nontrivial with ⟨x, rfl⟩ | ⟨x, hx, y, hy, hxy⟩
163+ · cases hs <| Set.mem_range_self x
164+ obtain ⟨U, V, hU, hV, hxU, hyV, hUV⟩ := t2_separation hxy
165+ filter_upwards [(isOpen_inter_nonempty_of_isOpen hU).inter (isOpen_inter_nonempty_of_isOpen hV)
166+ |>.mem_nhds ⟨⟨x, hx, hxU⟩, ⟨y, hy, hyV⟩⟩]
167+ rintro _ ⟨hzU, hzV⟩ ⟨z, rfl⟩
168+ rw [Set.mem_setOf, Set.singleton_inter_nonempty] at hzU hzV
169+ exact hUV.notMem_of_mem_left hzU hzV
170+
132171end UniformSpace.hausdorff
133172
134173namespace TopologicalSpace.Closeds
@@ -160,6 +199,35 @@ theorem isClosed_subsets_of_isClosed {s : Set α} (hs : IsClosed s) :
160199 IsClosed {t : Closeds α | (t : Set α) ⊆ s} :=
161200 isClosed_induced (UniformSpace.hausdorff.isClosed_powerset hs)
162201
202+ section T0Space
203+
204+ variable [T0Space α]
205+
206+ theorem isUniformEmbedding_singleton : IsUniformEmbedding (Closeds.singleton (α := α)) :=
207+ isUniformEmbedding_coe.of_comp_iff.mp UniformSpace.hausdorff.isUniformEmbedding_singleton
208+
209+ theorem uniformContinuous_singleton : UniformContinuous (Closeds.singleton (α := α)) :=
210+ isUniformEmbedding_singleton.uniformContinuous
211+
212+ @[fun_prop]
213+ theorem isEmbedding_singleton : IsEmbedding (Closeds.singleton (α := α)) :=
214+ isUniformEmbedding_singleton.isEmbedding
215+
216+ @[fun_prop]
217+ theorem continuous_singleton : Continuous (Closeds.singleton (α := α)) :=
218+ isEmbedding_singleton.continuous
219+
220+ @[fun_prop]
221+ theorem isClosedEmbedding_singleton :
222+ Topology.IsClosedEmbedding (Closeds.singleton (α := α)) where
223+ __ := isUniformEmbedding_singleton.isEmbedding
224+ isClosed_range := by
225+ rw [← SetLike.coe_injective.preimage_image (s := Set.range singleton), ← Set.range_comp]
226+ exact UniformSpace.hausdorff.isClosedEmbedding_singleton.isClosed_range.preimage
227+ uniformContinuous_coe.continuous
228+
229+ end T0Space
230+
163231end TopologicalSpace.Closeds
164232
165233namespace TopologicalSpace.Compacts
@@ -206,6 +274,12 @@ theorem isClosed_subsets_of_isClosed {s : Set α} (hs : IsClosed s) :
206274 IsClosed {t : Compacts α | (t : Set α) ⊆ s} :=
207275 isClosed_induced (UniformSpace.hausdorff.isClosed_powerset hs)
208276
277+ theorem isUniformEmbedding_singleton : IsUniformEmbedding ({·} : α → Compacts α) :=
278+ isUniformEmbedding_coe.of_comp_iff.mp UniformSpace.hausdorff.isUniformEmbedding_singleton
279+
280+ theorem uniformContinuous_singleton : UniformContinuous ({·} : α → Compacts α) :=
281+ isUniformEmbedding_singleton.uniformContinuous
282+
209283end TopologicalSpace.Compacts
210284
211285namespace TopologicalSpace.NonemptyCompacts
@@ -268,4 +342,10 @@ theorem isClosed_subsets_of_isClosed {s : Set α} (hs : IsClosed s) :
268342 IsClosed {t : NonemptyCompacts α | (t : Set α) ⊆ s} :=
269343 isClosed_induced (UniformSpace.hausdorff.isClosed_powerset hs)
270344
345+ theorem isUniformEmbedding_singleton : IsUniformEmbedding ({·} : α → NonemptyCompacts α) :=
346+ isUniformEmbedding_coe.of_comp_iff.mp UniformSpace.hausdorff.isUniformEmbedding_singleton
347+
348+ theorem uniformContinuous_singleton : UniformContinuous ({·} : α → NonemptyCompacts α) :=
349+ isUniformEmbedding_singleton.uniformContinuous
350+
271351end TopologicalSpace.NonemptyCompacts
0 commit comments