@@ -591,6 +591,53 @@ instance ULift.instCompletelyNormalSpace [CompletelyNormalSpace X] :
591591 CompletelyNormalSpace (ULift X) :=
592592 IsEmbedding.uliftDown.completelyNormalSpace
593593
594+ /--
595+ A space is completely normal iff all open subspaces are normal.
596+ -/
597+ theorem completelyNormalSpace_iff_forall_isOpen_normalSpace :
598+ CompletelyNormalSpace X ↔ ∀ s : Set X, IsOpen s → NormalSpace s := by
599+ refine ⟨fun _ _ _ => inferInstance, fun h => ⟨fun s t hSt hsT => ?_⟩⟩
600+ let e := (closure s ∩ closure t)ᶜ
601+ have he : IsOpen e := (isClosed_closure.inter isClosed_closure).isOpen_compl
602+ specialize h e he
603+ have hst : Disjoint (((↑) : e → X) ⁻¹' closure s) (((↑) : e → X) ⁻¹' closure t) := by
604+ rw [disjoint_left]
605+ intro x hxs hxt
606+ exact x.2 ⟨hxs, hxt⟩
607+ obtain ⟨U, V, hU, hV, hsU, htV, hUV⟩ := normal_separation
608+ (isClosed_closure.preimage continuous_subtype_val)
609+ (isClosed_closure.preimage continuous_subtype_val) hst
610+ rw [Topology.IsInducing.subtypeVal.isOpen_iff] at hU hV
611+ obtain ⟨U, hU, rfl⟩ := hU
612+ obtain ⟨V, hV, rfl⟩ := hV
613+ rw [← separatedNhds_iff_disjoint]
614+ rw [Subtype.preimage_val_subset_preimage_val_iff, inter_comm e, inter_comm e] at hsU htV
615+ refine ⟨U ∩ e, V ∩ e, hU.inter he, hV.inter he, ?_, ?_, ?_⟩
616+ · intro x hx
617+ exact hsU ⟨subset_closure hx, fun h => hsT.notMem_of_mem_left hx h.2 ⟩
618+ · intro x hx
619+ exact htV ⟨subset_closure hx, fun h => hSt.notMem_of_mem_left h.1 hx⟩
620+ · rw [disjoint_left] at hUV ⊢
621+ intro x hxU hxV
622+ exact @hUV ⟨x, hxU.2 ⟩ hxU.1 hxV.1
623+
624+ /--
625+ A space is completely normal iff it is hereditarily normal.
626+ -/
627+ theorem completelyNormalSpace_iff_forall_normalSpace :
628+ CompletelyNormalSpace X ↔ ∀ s : Set X, NormalSpace s :=
629+ ⟨fun _ _ => inferInstance, fun h =>
630+ completelyNormalSpace_iff_forall_isOpen_normalSpace.2 fun s _ => h s⟩
631+
632+ alias ⟨_, CompletelyNormalSpace.of_forall_isOpen_normalSpace⟩ :=
633+ completelyNormalSpace_iff_forall_isOpen_normalSpace
634+ alias ⟨_, CompletelyNormalSpace.of_forall_normalSpace⟩ :=
635+ completelyNormalSpace_iff_forall_normalSpace
636+
637+ instance (priority := 100 ) CompletelyNormalSpace.of_regularSpace_secondCountableTopology
638+ [RegularSpace X] [SecondCountableTopology X] : CompletelyNormalSpace X :=
639+ .of_forall_normalSpace fun _ => .of_regularSpace_secondCountableTopology
640+
594641/-- A T₅ space is a completely normal T₁ space. -/
595642class T5Space (X : Type u) [TopologicalSpace X] : Prop extends T1Space X, CompletelyNormalSpace X
596643
@@ -616,6 +663,30 @@ instance [T5Space X] {p : X → Prop} : T5Space { x // p x } :=
616663instance ULift.instT5Space [T5Space X] : T5Space (ULift X) :=
617664 IsEmbedding.uliftDown.t5Space
618665
666+ /--
667+ A space is a `T5Space` iff all its open subspaces are `T4Space`.
668+ -/
669+ theorem t5Space_iff_forall_isOpen_t4Space :
670+ T5Space X ↔ ∀ s : Set X, IsOpen s → T4Space s where
671+ mp _ _ _ := inferInstance
672+ mpr h :=
673+ { toCompletelyNormalSpace :=
674+ completelyNormalSpace_iff_forall_isOpen_normalSpace.2 fun s hs => (h s hs).toNormalSpace
675+ toT1Space :=
676+ have := h univ isOpen_univ
677+ t1Space_of_injective_of_continuous
678+ (fun _ _ => congrArg Subtype.val) (continuous_id.subtype_mk mem_univ)}
679+
680+ /--
681+ A space is `T5Space` iff it is hereditarily `T4Space`.
682+ -/
683+ theorem t5Space_iff_forall_t4Space :
684+ T5Space X ↔ ∀ s : Set X, T4Space s :=
685+ ⟨fun _ _ => inferInstance, fun h => t5Space_iff_forall_isOpen_t4Space.2 fun s _ => h s⟩
686+
687+ alias ⟨_, T5Space.of_forall_isOpen_t4Space⟩ := t5Space_iff_forall_isOpen_t4Space
688+ alias ⟨_, T5Space.of_forall_t4Space⟩ := t5Space_iff_forall_t4Space
689+
619690open SeparationQuotient
620691
621692/-- The `SeparationQuotient` of a completely normal R₀ space is a T₅ space. -/
0 commit comments