Formalising Mathematics with Lean

4.1.Β The converseπŸ”—

Let us first see the proof of the converse, which is easier.

Proof. Suppose that any pair of disjoint closed sets of X can be separated by a continuous function, and let us see that then X is a normal space. Let C_1 and C_2 be disjoint closed sets in X.

X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace T' Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}⊒ NormalSpace X X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace T' Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}⊒ βˆ€ (C D : Set X), IsClosed C β†’ IsClosed D β†’ Disjoint C D β†’ βˆƒ U V, IsOpen U ∧ IsOpen V ∧ C βŠ† U ∧ D βŠ† V ∧ Disjoint U V -- `1` intro C1 X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace T' Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set X⊒ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ U V, IsOpen U ∧ IsOpen V ∧ C1 βŠ† U ∧ C2 βŠ† V ∧ Disjoint U V X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace T' Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1⊒ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ U V, IsOpen U ∧ IsOpen V ∧ C1 βŠ† U ∧ C2 βŠ† V ∧ Disjoint U V X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace T' Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2⊒ Disjoint C1 C2 β†’ βˆƒ U V, IsOpen U ∧ IsOpen V ∧ C1 βŠ† U ∧ C2 βŠ† V ∧ Disjoint U V X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace T' Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2⊒ βˆƒ U V, IsOpen U ∧ IsOpen V ∧ C1 βŠ† U ∧ C2 βŠ† V ∧ Disjoint U V -- `2`

Since in the definition of normal we do not ask the closed sets to be non-empty, we have to distinguish these cases. However, these cases are trivial because it suffices to take the empty set to cover the empty set and X to cover the other set. In Lean we have to be rigorous with this step, but here we will skip it for simplicity.

Suppose, then, that C_1 and C_2 are non-empty. By hypothesis, there exists a continuous function f : X \to [0, 1] such that f(C_1) = \{0\} and f(C_2) = \{1\}.

X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace T' Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:Continuous fhfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}⊒ βˆƒ U V, IsOpen U ∧ IsOpen V ∧ C1 βŠ† U ∧ C2 βŠ† V ∧ Disjoint U V

Consider then the sets U_1 = f^{-1}([0, \frac{1}{2})) and U_2 = f^{-1}((\frac{1}{2}, 1]). We want to see that they are the open sets we need for the definition of normal, that is, that they are open in X, that C_i \subseteq U_i and that they are disjoint.

X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace T' Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:Continuous fhfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}⊒ βˆƒ V, IsOpen (f ⁻¹' {y | ↑y ∈ Set.Ico 0 (1 / 2)}) ∧ IsOpen V ∧ C1 βŠ† f ⁻¹' {y | ↑y ∈ Set.Ico 0 (1 / 2)} ∧ C2 βŠ† V ∧ Disjoint (f ⁻¹' {y | ↑y ∈ Set.Ico 0 (1 / 2)}) V X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace T' Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:Continuous fhfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}⊒ IsOpen (f ⁻¹' {y | ↑y ∈ Set.Ico 0 (1 / 2)}) ∧ IsOpen (f ⁻¹' {y | ↑y ∈ Set.Ioc (1 / 2) 1}) ∧ C1 βŠ† f ⁻¹' {y | ↑y ∈ Set.Ico 0 (1 / 2)} ∧ C2 βŠ† f ⁻¹' {y | ↑y ∈ Set.Ioc (1 / 2) 1} ∧ Disjoint (f ⁻¹' {y | ↑y ∈ Set.Ico 0 (1 / 2)}) (f ⁻¹' {y | ↑y ∈ Set.Ioc (1 / 2) 1})

To see that U_1 is open, we use that f is continuous. It suffices to see that [0, \frac{1}{2}) is open in [0, 1]. But we already saw that intervals of the form [0, b) are open in [0, 1], so it suffices to apply that property. Analogous for U_2.

X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}⊒ IsOpen (f ⁻¹' {y | ↑y ∈ Set.Ico 0 (1 / 2)}) X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}⊒ IsOpen {y | ↑y ∈ Set.Ico 0 (1 / 2)} -- aplicar def. de f continua X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}⊒ Y = Set.Icc 0 1X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}⊒ R = TopoSubspace UsualTopology YX:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}⊒ 0 < 1 / 2 ∧ 1 / 2 < 1 -- `[0, 1/2)` es abierto en `[0, 1]` X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}⊒ Y = Set.Icc 0 1 All goals completed! πŸ™ X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}⊒ R = TopoSubspace UsualTopology Y All goals completed! πŸ™ X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}⊒ 0 < 1 / 2 ∧ 1 / 2 < 1 All goals completed! πŸ™

To see that C_1 \subseteq U_1, it suffices to see that f(C_1) \subseteq [0, \frac{1}{2}), which is trivial. Analogous for U_2.

X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}⊒ C1 βŠ† f ⁻¹' {y | ↑y ∈ Set.Ico 0 (1 / 2)} X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}⊒ {⟨0, β‹―βŸ©} βŠ† {y | ↑y ∈ Set.Ico 0 (1 / 2)} -- `{0} βŠ† [0, 1/2)` ? All goals completed! πŸ™

To see that they are disjoint, we see that [0, \frac{1}{2}) and (\frac{1}{2}, 1] are disjoint. Obviously they are, but for Lean it is a bit more complicated, so we proceed by contradiction in order to simplify the expressions. Finally we arrive at the fact that there is no x with x < 1/2 and x > 1/2.

X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}⊒ Disjoint (f ⁻¹' {y | ↑y ∈ Set.Ico 0 (1 / 2)}) (f ⁻¹' {y | ↑y ∈ Set.Ioc (1 / 2) 1}) X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}⊒ Disjoint {y | ↑y ∈ Set.Ico 0 (1 / 2)} {y | ↑y ∈ Set.Ioc (1 / 2) 1} X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}c:Β¬Disjoint {y | ↑y ∈ Set.Ico 0 (1 / 2)} {y | ↑y ∈ Set.Ioc (1 / 2) 1}⊒ False X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}c:Β¬{y | ↑y ∈ Set.Ico 0 (1 / 2)} ∩ {y | ↑y ∈ Set.Ioc (1 / 2) 1} = βˆ…βŠ’ False X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}c:({y | ↑y ∈ Set.Ico 0 (1 / 2)} ∩ {y | ↑y ∈ Set.Ioc (1 / 2) 1}).Nonempty⊒ False X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}x:↑Yhxu:x ∈ {y | ↑y ∈ Set.Ico 0 (1 / 2)}hxv:x ∈ {y | ↑y ∈ Set.Ioc (1 / 2) 1}⊒ False X:TypeY:Set ℝT:TopologicalSpace XT':TopologicalSpace ℝhT':T' = UsualTopologyR:TopologicalSpace ↑YhY:Y = Set.Icc 0 1hR:R = TopoSubspace UsualTopology Yh:βˆ€ (C1 C2 : Set X), C1 β‰  βˆ… β†’ C2 β‰  βˆ… β†’ IsClosed C1 β†’ IsClosed C2 β†’ Disjoint C1 C2 β†’ βˆƒ f, Continuous f ∧ f '' C1 = {⟨0, β‹―βŸ©} ∧ f '' C2 = {⟨1, β‹―βŸ©}C1:Set XC2:Set XhC1:IsClosed C1hC2:IsClosed C2hinter:Disjoint C1 C2hC1nempty:C1 β‰  βˆ…hC2nempty:C2 β‰  βˆ…f:X β†’ ↑Yhf:βˆ€ (s : Set ↑Y), IsOpen s β†’ IsOpen (f ⁻¹' s)hfC1:f '' C1 = {⟨0, β‹―βŸ©}hfC2:f '' C2 = {⟨1, β‹―βŸ©}x:↑Yhxu:0 ≀ ↑x ∧ ↑x < 2⁻¹hxv:2⁻¹ < ↑x ∧ ↑x ≀ 1⊒ False All goals completed! πŸ™

∎

The other implication is much more complex, especially in its Lean formalisation, as we will see next.