@@ -281,18 +281,40 @@ theorem _root_.IsCompact.powerset_vietoris {K : Set α} (hK : IsCompact K) :
281281instance [CompactSpace α] : CompactSpace (Set α) :=
282282 ⟨powerset_univ ▸ isCompact_univ.powerset_vietoris⟩
283283
284+ theorem subset_closure_of_specializes {s t : Set α} (h : s ⤳ t) : t ⊆ closure s :=
285+ h.mem_closed isClosed_closure.powerset_vietoris subset_closure
286+
287+ theorem specializes_iff {s t : Set α} : s ⤳ t ↔ (∀ x ∈ s, ∃ y ∈ t, x ⤳ y) ∧ t ⊆ closure s := by
288+ refine ⟨fun h => ⟨fun x hx => ?_, subset_closure_of_specializes h⟩, fun ⟨hst, hts⟩ => ?_⟩
289+ · obtain ⟨y, hyt, hxy⟩ := h.mem_closed (s := {u | (u ∩ closure {x}).Nonempty})
290+ (isClosed_inter_nonempty_of_isClosed isClosed_closure) ⟨x, hx, subset_closure rfl⟩
291+ exact ⟨y, hyt, specializes_iff_mem_closure.mpr hxy⟩
292+ · simp_rw [Specializes, nhds_generateFrom, le_iInf₂_iff]
293+ rintro _ ⟨hs, ⟨U, hU, rfl⟩ | ⟨U, hU, rfl⟩⟩
294+ · refine iInf₂_le U.powerset ⟨fun x hx => ?_, .inl <| mem_image_of_mem _ hU⟩
295+ obtain ⟨y, hyt, hxy⟩ := hst x hx
296+ exact hxy.mem_open hU <| hs hyt
297+ · obtain ⟨x, hxt, hxU⟩ := hs
298+ obtain ⟨y, hyU, hys⟩ := mem_closure_iff.mp (hts hxt) U hU hxU
299+ exact iInf₂_le {t | (t ∩ U).Nonempty} ⟨⟨y, hys, hyU⟩, .inr <| mem_image_of_mem _ hU⟩
300+
301+ theorem specializes_iff_of_t1Space {s t : Set α} [T1Space α] : s ⤳ t ↔ s ⊆ t ∧ t ⊆ closure s := by
302+ simp_rw [specializes_iff, specializes_iff_eq, existsAndEq, and_true, ← subset_def]
303+
304+ theorem subset_of_specializes {s t : Set α} [T1Space α] (h : s ⤳ t) : s ⊆ t :=
305+ (specializes_iff_of_t1Space.mp h).1
306+
284307theorem specializes_of_subset_closure {s t : Set α} (hst : s ⊆ t) (hts : t ⊆ closure s) :
285308 s ⤳ t := by
286- simp_rw [Specializes, nhds_generateFrom, le_iInf₂_iff]
287- rintro _ ⟨hs, ⟨U, hU, rfl⟩ | ⟨U, hU, rfl⟩⟩
288- · exact iInf₂_le U.powerset ⟨hst.trans hs, .inl <| mem_image_of_mem _ hU⟩
289- · obtain ⟨x, hxt, hxU⟩ := hs
290- obtain ⟨y, hyU, hys⟩ := mem_closure_iff.mp (hts hxt) U hU hxU
291- exact iInf₂_le {t | (t ∩ U).Nonempty} ⟨⟨y, hys, hyU⟩, .inr <| mem_image_of_mem _ hU⟩
309+ aesop (add simp specializes_iff)
292310
293311theorem specializes_closure {s : Set α} : s ⤳ closure s :=
294312 specializes_of_subset_closure subset_closure .rfl
295313
314+ instance [T1Space α] : T0Space (Set α) where
315+ t0 _ _ h :=
316+ subset_antisymm (subset_of_specializes h.specializes) (subset_of_specializes h.specializes')
317+
296318end vietoris
297319
298320namespace Compacts
@@ -456,6 +478,54 @@ instance [DiscreteTopology α] : DiscreteTopology (Compacts α) := by
456478theorem discreteTopology_iff : DiscreteTopology (Compacts α) ↔ DiscreteTopology α :=
457479 ⟨fun _ => isEmbedding_singleton.discreteTopology, fun _ => inferInstance⟩
458480
481+ instance [T1Space α] : T0Space (Compacts α) :=
482+ isEmbedding_coe.t0Space
483+
484+ instance [T2Space α] : T2Space (Compacts α) where
485+ t2 K₁ K₂ h := by
486+ wlog h' : ¬(K₁ ≤ K₂) generalizing K₁ K₂
487+ · grind [Disjoint.symm, le_antisymm]
488+ rw [SetLike.not_le_iff_exists] at h'
489+ obtain ⟨x, hx₁, hx₂⟩ := h'
490+ obtain ⟨U, V, hU, hV, hU', hV', hUV⟩ := K₂.isCompact.separation_of_notMem hx₂
491+ exact ⟨_, _, isOpen_inter_nonempty_of_isOpen hV, isOpen_subsets_of_isOpen hU, ⟨x, hx₁, hV'⟩,
492+ hU', by grind [Set.Nonempty]⟩
493+
494+ @[simp]
495+ theorem t2Space_iff : T2Space (Compacts α) ↔ T2Space α :=
496+ ⟨fun _ => isEmbedding_singleton.t2Space, fun _ => inferInstance⟩
497+
498+ instance [RegularSpace α] : RegularSpace (Compacts α) := by
499+ simp_rw [regularSpace_generateFrom induced_generateFrom_eq, image_union, image_image, powerset,
500+ preimage_setOf_eq, Filter.disjoint_iff]
501+ rintro _ (⟨U, hU, rfl⟩ | ⟨U, hU, rfl⟩) K hK
502+ · obtain ⟨V, W, hV, hW, hKV, hUW, hVW⟩ :=
503+ SeparatedNhds.of_isCompact_isClosed K.isCompact hU.isClosed_compl
504+ (disjoint_compl_right_iff_subset.mpr hK)
505+ refine ⟨{K | (↑K ∩ W).Nonempty}, ?_, {K | ↑K ⊆ V},
506+ (isOpen_subsets_of_isOpen hV).mem_nhds_iff.mpr hKV, by grind [Set.Nonempty]⟩
507+ simp_rw [(isOpen_inter_nonempty_of_isOpen hW).mem_nhdsSet, compl_setOf,
508+ ← inter_compl_nonempty_iff]
509+ grw [hUW]
510+ · obtain ⟨x, hx₁, hx₂⟩ := hK
511+ obtain ⟨V, W, hV, hW, hxV, hUW, hVW⟩ :=
512+ SeparatedNhds.of_isCompact_isClosed (isCompact_singleton (x := x)) hU.isClosed_compl
513+ (by simpa)
514+ refine ⟨{K | ↑K ⊆ W}, ?_, {K | (↑K ∩ V).Nonempty}, ?_, by grind [Set.Nonempty]⟩
515+ · simp_rw [(isOpen_subsets_of_isOpen hW).mem_nhdsSet, compl_setOf, not_nonempty_iff_eq_empty,
516+ ← disjoint_iff_inter_eq_empty, ← subset_compl_iff_disjoint_right]
517+ gcongr
518+ · rw [(isOpen_inter_nonempty_of_isOpen hV).mem_nhds_iff]
519+ exact ⟨x, hx₁, hxV <| Set.mem_singleton x⟩
520+
521+ @[simp]
522+ theorem regularSpace_iff : RegularSpace (Compacts α) ↔ RegularSpace α :=
523+ ⟨fun _ => isEmbedding_singleton.regularSpace, fun _ => inferInstance⟩
524+
525+ @[simp]
526+ theorem t3Space_iff : T3Space (Compacts α) ↔ T3Space α :=
527+ ⟨fun _ => isEmbedding_singleton.t3Space, fun _ => inferInstance⟩
528+
459529theorem isCompact_subsets_of_isCompact {K : Set α} (hK : IsCompact K) :
460530 IsCompact {L : Compacts α | ↑L ⊆ K} := by
461531 rw [isEmbedding_coe.isCompact_iff]
@@ -679,6 +749,27 @@ instance [DiscreteTopology α] : DiscreteTopology (NonemptyCompacts α) :=
679749theorem discreteTopology_iff : DiscreteTopology (NonemptyCompacts α) ↔ DiscreteTopology α :=
680750 ⟨fun _ => isEmbedding_singleton.discreteTopology, fun _ => inferInstance⟩
681751
752+ instance [T1Space α] : T0Space (NonemptyCompacts α) :=
753+ isEmbedding_toCompacts.t0Space
754+
755+ instance [T2Space α] : T2Space (NonemptyCompacts α) :=
756+ isEmbedding_toCompacts.t2Space
757+
758+ @[simp]
759+ theorem t2Space_iff : T2Space (NonemptyCompacts α) ↔ T2Space α :=
760+ ⟨fun _ => isEmbedding_singleton.t2Space, fun _ => inferInstance⟩
761+
762+ instance [RegularSpace α] : RegularSpace (NonemptyCompacts α) :=
763+ isEmbedding_toCompacts.regularSpace
764+
765+ @[simp]
766+ theorem regularSpace_iff : RegularSpace (NonemptyCompacts α) ↔ RegularSpace α :=
767+ ⟨fun _ => isEmbedding_singleton.regularSpace, fun _ => inferInstance⟩
768+
769+ @[simp]
770+ theorem t3Space_iff : T3Space (NonemptyCompacts α) ↔ T3Space α :=
771+ ⟨fun _ => isEmbedding_singleton.t3Space, fun _ => inferInstance⟩
772+
682773instance [CompactSpace α] : CompactSpace (NonemptyCompacts α) :=
683774 isClosedEmbedding_toCompacts.compactSpace
684775
0 commit comments