4.4.Β Construction of a separating continuous function
Continuing with the outline we had proposed, we now construct the following function
\begin{array}{rcrcl}
F & : & X & \longrightarrow & \mathcal{P}(\mathbb{Q}) \\
& & x & \longmapsto & \{p \in \mathbb{Q} ~|~ x \in H(p)\}
\end{array}
def F {X : Type} [TopologicalSpace X]
(hT : β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β U)
(C1 C2 : Set X)
: X β Set β := fun x : X β¦ {p : β | x β H hT C1 C2 p}Now, we want to construct a function of the following form
\begin{array}{rcrcl}
f & : & X & \longrightarrow & [0, 1] \\
& & x & \longmapsto & \inf F(x)
\end{array}
However, we have to make sure that we can define this function, that is, that the set F(x) has an infimum for each x \in X.
4.4.1.Β The function F
Lemma 4.9
Let F : X \to \mathcal{P}(\mathbb{Q}) be the function defined above. Then for each x \in X, F(x) is a non-empty set.
Proof. Let x \in X. Any q > 1 is such that q \in F(x), since if q >1, H(q) = X, hence x \in H(q). β
lemma hF_non_empty {X : Type} [T : TopologicalSpace X]
(hT : β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β U)
(C1 C2 : Set X)
: β x : X, (F hT C1 C2 x).Nonempty := X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xβ’ β (x : X), (F hT C1 C2 x).Nonempty
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xβ’ (F hT C1 C2 x).Nonempty
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xβ’ 2 β F hT C1 C2 x
All goals completed! πLemma 4.10
For each x \in X, if q < 0 then q \notin F(x). That is, all the elements of F(x) are non-negative.
Proof. Let x \in X and q < 0. Then H(q) = \emptyset, hence obviously x \notin H(q). β
We will call this result hFx_non_neg. As a consequence, we have:
Lemma 4.11
For each x \in X, 0 is a lower bound of F(x).
lemma hFx_has_lb_0 {X : Type} [T : TopologicalSpace X]
(hT : β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β U)
(C1 C2 : Set X)
: β x : X, 0 β lowerBounds (F hT C1 C2 x) := X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xβ’ β (x : X), 0 β lowerBounds (F hT C1 C2 x)
Therefore, given x \in X, since F(x) is a non-empty set bounded from below, we can conclude that F(x) has an infimum as a real set, that is, we can conclude that there exists a number r \in \mathbb{R} such that r = \inf F(x). This result is included in Mathlib:
theorem Real.exists_isGLB {s : Set β} (hne : s.Nonempty) (hbdd : BddBelow s) :
β x, IsGLB s xWe could try to write something like this:
lemma hFx_has_lb_0 (...)
: β x : X, β r : β, IsGLB (F hT C1 C2 x) r := by sorry
However, this gives us the following error:
argument r has type β but is expected to have type β
This is because, in Mathlib, IsGLB is defined in the following way:
def IsGLB [Preorder Ξ±] (s : Set Ξ±) : Ξ± β Prop :=
IsGreatest (lowerBounds s)
That is, it is only defined for values of type \alpha if s \subset \alpha. Since F(x) \subset \mathbb{Q}, we cannot say that r \in \mathbb{R} is its infimum.
Therefore, we need to define in Lean an auxiliary function \tilde{F} such that \tilde{F}(x) = F(x) for each x, but seen as a subset of \mathbb{R}. We do it in the following way.
def inclQR : β β β := fun q β¦ q
def F_Real {X : Type} [TopologicalSpace X]
(hT : β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β U)
(C1 C2 : Set X)
: X β Set β :=
fun x β¦ inclQR '' (F hT C1 C2 x)
This new function \tilde{F} is a function with the same properties as F, that is, for each x \in X, \tilde{F}(x) is a non-empty set with 0 as a lower bound. This is proved immediately using the properties of F, although it is necessary to be careful with Lean's type inference in some cases.
But now \tilde{F} returns subsets of \mathbb{R}, so we can assert that it has an infimum in \mathbb{R}.
lemma F_Real_has_inf {X : Type} [T : TopologicalSpace X]
(hT : β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β U)
(C1 C2 : Set X)
: β x : X, β r : β, IsGLB (F_Real hT C1 C2 x) r := X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xβ’ β (x : X), β r, IsGLB (F_Real hT C1 C2 x) r
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xβ’ β r, IsGLB (F_Real hT C1 C2 x) r
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xβ’ (F_Real hT C1 C2 x).NonemptyX:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xβ’ BddBelow (F_Real hT C1 C2 x)
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xβ’ BddBelow (F_Real hT C1 C2 x)
All goals completed! π
4.4.2.Β The function f
Once we have made sure that \tilde{F} has an infimum, we can try to define our function f as we wanted. Before that, let us make the following remark.
We want to find a function f : X \to [0, 1]. However, we have only guaranteed that \inf \tilde{F}(x) \in \mathbb{R}; not necessarily \inf \tilde{F}(x) \in [0, 1].
Evidently, the latter is true, because 0 is a lower bound, so the infimum will be at least 0, and \forall q>1, q \in F(x), so the infimum cannot be greater than 1.
However, for ease of working with Lean, we will first define a function that is simply
\begin{array}{rcrcl}
k & : & X & \longrightarrow & \mathbb{R} \\
& & x & \longmapsto & \inf \tilde{F}(x)
\end{array}
and we prove that indeed k(x) \in [0, 1] for each x\in X. Later, we will use the function f(x) = k(x), taking care to specify that k(x) \in [0, 1].
noncomputable def k {X : Type} [TopologicalSpace X]
(hT : β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β U)
(C1 C2 : Set X)
: X β β :=
fun x β¦ Classical.choose (F_Real_has_inf hT C1 C2 x)
We obtain the following property, the result of applying Classical.choose_spec to k.
lemma k_prop {X : Type} [T : TopologicalSpace X]
(hT : β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β U)
(C1 C2 : Set X)
: β x, IsGLB (F_Real hT C1 C2 x) (k hT C1 C2 x) := X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xβ’ β (x : X), IsGLB (F_Real hT C1 C2 x) (k hT C1 C2 x)Lemma 4.12
For each x \in X, the function k : X \to \mathbb{R} we have just defined satisfies k(x) \in [0, 1].
lemma k_in_01 {X : Type} [T : TopologicalSpace X]
(hT : β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β U)
(C1 C2 : Set X)
: β x : X, (k hT C1 C2 x) β Set.Icc 0 1 := X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xβ’ β (x : X), k hT C1 C2 x β Set.Icc 0 1Proof. The proof is easy and we have already explained it, but in Lean we need to give a complete specification, so we explain it.
Let x \in X. Recall that k(x) is a lower bound of \tilde{F}(x) (klb) and it is the greatest of them (kglb).
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xβ’ k hT C1 C2 x β Set.Icc 0 1
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xklb:k hT C1 C2 x β lowerBounds (F_Real hT C1 C2 x)kglb:k hT C1 C2 x β upperBounds (lowerBounds (F_Real hT C1 C2 x))β’ k hT C1 C2 x β Set.Icc 0 1
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xklb:k hT C1 C2 x β lowerBounds (F_Real hT C1 C2 x)kglb:k hT C1 C2 x β upperBounds (lowerBounds (F_Real hT C1 C2 x))β’ 0 β€ k hT C1 C2 xX:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xklb:k hT C1 C2 x β lowerBounds (F_Real hT C1 C2 x)kglb:k hT C1 C2 x β upperBounds (lowerBounds (F_Real hT C1 C2 x))β’ k hT C1 C2 x β€ 1
Seeing that k(x) \geq 0 is easy, because we have already seen that 0 is a lower bound, and k(x) is the greatest one.
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xklb:k hT C1 C2 x β lowerBounds (F_Real hT C1 C2 x)kglb:k hT C1 C2 x β upperBounds (lowerBounds (F_Real hT C1 C2 x))β’ 0 β€ k hT C1 C2 x All goals completed! π
Now, to see that k(x) \leq 1, we proceed by contradiction. Suppose that k(x) > 1. Then there exists a rational number q such that 1 < q < k(x). Since q > 1, we know that q \in \tilde{F}(x). But in that case, since k(x) is a lower bound, k(x) \leq q, which is contradictory.
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xklb:k hT C1 C2 x β lowerBounds (F_Real hT C1 C2 x)kglb:k hT C1 C2 x β upperBounds (lowerBounds (F_Real hT C1 C2 x))β’ k hT C1 C2 x β€ 1 X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xklb:k hT C1 C2 x β lowerBounds (F_Real hT C1 C2 x)kglb:k hT C1 C2 x β upperBounds (lowerBounds (F_Real hT C1 C2 x))c:Β¬k hT C1 C2 x β€ 1β’ False
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xklb:k hT C1 C2 x β lowerBounds (F_Real hT C1 C2 x)kglb:k hT C1 C2 x β upperBounds (lowerBounds (F_Real hT C1 C2 x))c:1 < k hT C1 C2 xβ’ False
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xklb:k hT C1 C2 x β lowerBounds (F_Real hT C1 C2 x)kglb:k hT C1 C2 x β upperBounds (lowerBounds (F_Real hT C1 C2 x))c:1 < k hT C1 C2 xq:βhq1:1 < βqhqk:βq < k hT C1 C2 xβ’ False
have hq := F_Real_1inf hT C1 C2 x q (X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xklb:k hT C1 C2 x β lowerBounds (F_Real hT C1 C2 x)kglb:k hT C1 C2 x β upperBounds (lowerBounds (F_Real hT C1 C2 x))c:1 < k hT C1 C2 xq:βhq1:1 < βqhqk:βq < k hT C1 C2 xβ’ q > 1 All goals completed! π)
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xklb:k hT C1 C2 x β lowerBounds (F_Real hT C1 C2 x)kglb:k hT C1 C2 x β upperBounds (lowerBounds (F_Real hT C1 C2 x))c:1 < k hT C1 C2 xq:βhq1:1 < βqhqk:βq < k hT C1 C2 xhq:k hT C1 C2 x β€ inclQR qβ’ False
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set Xx:Xklb:k hT C1 C2 x β lowerBounds (F_Real hT C1 C2 x)kglb:k hT C1 C2 x β upperBounds (lowerBounds (F_Real hT C1 C2 x))c:1 < k hT C1 C2 xq:βhq1:1 < βqhqk:βq < k hT C1 C2 xhq:Β¬inclQR q < k hT C1 C2 xβ’ False
All goals completed! πβ
Finally, before moving on to the proof of Urysohn's lemma at last, we give several properties of k that we will need. Recall that H was G \circ f^{-1} extended to \mathbb{Q}.
Lemma 4.13
For each p \in \mathbb{Q} and each x \in X, if x \in \overline{H(p)} then k(x) \leq p.
lemma k_claim1 {X : Type} [T : TopologicalSpace X]
(hT : β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β U)
(C1 C2 : Set X)
(hC1 : IsClosed C1)
(hC2 : IsOpen C2αΆ)
(hC1C2 : C1 β C2αΆ)
: β p : β, β x : X, x β closure (H hT C1 C2 p) β (k hT C1 C2 x) β€ p := X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆβ’ β (p : β), β x β closure (H hT C1 C2 p), k hT C1 C2 x β€ βp
Proof. Let p \in \mathbb{Q} and x \in X with x \in \overline{H(p)}. Suppose, for contradiction, that k(x) > p. Then there exists a rational q \in \mathbb{Q} such that p < q < k(x).
intro p X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆp:βx:Xβ’ x β closure (H hT C1 C2 p) β k hT C1 C2 x β€ βp X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆp:βx:Xhx:x β closure (H hT C1 C2 p)β’ k hT C1 C2 x β€ βp
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆp:βx:Xhx:x β closure (H hT C1 C2 p)c:Β¬k hT C1 C2 x β€ βpβ’ False
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆp:βx:Xhx:x β closure (H hT C1 C2 p)c:βp < k hT C1 C2 xβ’ False
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆp:βx:Xhx:x β closure (H hT C1 C2 p)c:βp < k hT C1 C2 xq:βhq:βp < βq β§ βq < k hT C1 C2 xβ’ False
Since p < q and x \in \overline{H(p)}, by (β
) we have that x \in H(q).
apply H_isOrdered hT C1 C2 hC1 hC2 hC1C2 p q
(X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆp:βx:Xhx:x β closure (H hT C1 C2 p)c:βp < k hT C1 C2 xq:βhq:βp < βq β§ βq < k hT C1 C2 xβ’ p < q All goals completed! π)
at hx
Now, x \in H(q) means that q \in \tilde{F}(x). But k(x) is a lower bound of \tilde{F}(x), hence k(x) < q, which contradicts q < k(x).
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆp:βx:Xc:βp < k hT C1 C2 xq:βhq:βp < βq β§ βq < k hT C1 C2 xhx:x β H hT C1 C2 qβ’ inclQR q β F_Real hT C1 C2 xX:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆp:βx:Xc:βp < k hT C1 C2 xq:βhq:βp < βq β§ βq < k hT C1 C2 xhx:x β H hT C1 C2 qaux:inclQR q β F_Real hT C1 C2 xβ’ False
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆp:βx:Xc:βp < k hT C1 C2 xq:βhq:βp < βq β§ βq < k hT C1 C2 xhx:x β H hT C1 C2 qβ’ inclQR q β F_Real hT C1 C2 x X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆp:βx:Xc:βp < k hT C1 C2 xq:βhq:βp < βq β§ βq < k hT C1 C2 xhx:x β H hT C1 C2 qβ’ β x_1 β F hT C1 C2 x, inclQR x_1 = inclQR q
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆp:βx:Xc:βp < k hT C1 C2 xq:βhq:βp < βq β§ βq < k hT C1 C2 xhx:x β H hT C1 C2 qβ’ q β F hT C1 C2 x β§ inclQR q = inclQR q
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆp:βx:Xc:βp < k hT C1 C2 xq:βhq:βp < βq β§ βq < k hT C1 C2 xhx:x β H hT C1 C2 qβ’ q β F hT C1 C2 x
All goals completed! π
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆp:βx:Xc:βp < k hT C1 C2 xq:βhq:βp < βq β§ βq < k hT C1 C2 xhx:x β H hT C1 C2 qaux:inclQR q β F_Real hT C1 C2 xklb:k hT C1 C2 x β lowerBounds (F_Real hT C1 C2 x)rightβ:k hT C1 C2 x β upperBounds (lowerBounds (F_Real hT C1 C2 x))β’ False
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆp:βx:Xc:βp < k hT C1 C2 xq:βhq:βp < βq β§ βq < k hT C1 C2 xhx:x β H hT C1 C2 qklb:k hT C1 C2 x β lowerBounds (F_Real hT C1 C2 x)rightβ:k hT C1 C2 x β upperBounds (lowerBounds (F_Real hT C1 C2 x))aux:k hT C1 C2 x β€ inclQR qβ’ False
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆp:βx:Xc:βp < k hT C1 C2 xq:βhq:βp < βq β§ βq < k hT C1 C2 xhx:x β H hT C1 C2 qklb:k hT C1 C2 x β lowerBounds (F_Real hT C1 C2 x)rightβ:k hT C1 C2 x β upperBounds (lowerBounds (F_Real hT C1 C2 x))aux:Β¬inclQR q < k hT C1 C2 xβ’ False
All goals completed! πβ
Lemma 4.14
For each p \in \mathbb{Q} and each x \in X, if x \notin H(p) then k(x) \geq p.
lemma k_claim2 {X : Type} [T : TopologicalSpace X]
(hT : β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β U)
(C1 C2 : Set X)
(hC1 : IsClosed C1)
(hC2 : IsOpen C2αΆ)
(hC1C2 : C1 β C2αΆ)
: β p : β, β x : X, x β (H hT C1 C2 p) β (k hT C1 C2 x) β₯ p := X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆβ’ β (p : β), β x β H hT C1 C2 p, k hT C1 C2 x β₯ βpProof. The proof is very similar to the previous one and can be found in the repository. β
4.4.3.Β Properties on the closed sets C_1 and C_2
Finally, let us see how the function k behaves on the closed sets we want to separate. This will leave the path completely clear to complete the proof of Urysohn's lemma. We are going to see the proofs for C_1; the ones for C_2 are similar and can be checked in the repository.
We want to arrive at k(C_1) = \{0\}. This property is built step by step, using properties of the functions it relies on.
Lemma 4.15
Consider F : X \to \mathcal{P}(\mathbb{Q}). For each x \in C_1, we have that F(x) = \{q \in \mathbb{Q} ~|~ q \geq 0\}.
lemma F_at_C1 {X : Type} [T : TopologicalSpace X]
(hT : β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β U)
(C1 C2 : Set X)
(hC1 : IsClosed C1)
(hC2 : IsOpen C2αΆ)
(hC1C2 : C1 β C2αΆ)
: β x : X, x β C1 β F hT C1 C2 x = {q : β | q β₯ 0} := X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆβ’ β x β C1, F hT C1 C2 x = {q | q β₯ 0}
Proof. Let x \in C_1. Seeing that F(x) \subseteq \{q \in \mathbb{Q} ~|~ q \geq 0\} is easy, since we have already seen that no value of F(x) is negative (hFx_non_neg). Now, let q \geq 0 and let us see that q \in F(x), that is, that x \in H(q).
If q > 0, by the property (β
) of H, \overline{H(0)} \subseteq H(q). And by the construction of H we have C_1 \subseteq H(0). Hence x \in H(q). If q = 0, since C_1 \subseteq H(0), x\in H(q).
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆx:Xhx:x β C1q:βhq:q β {q | q β₯ 0}β’ q β F hT C1 C2 x X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆx:Xhx:x β C1q:βhq:0 β€ qβ’ q β F hT C1 C2 x
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆx:Xhx:x β C1q:βhqβ:0 β€ qhq:0 < qβ’ q β F hT C1 C2 xX:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆx:Xhx:x β C1q:βhqβ:0 β€ qhq:0 = qβ’ q β F hT C1 C2 x
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆx:Xhx:x β C1q:βhqβ:0 β€ qhq:0 < qβ’ q β F hT C1 C2 x X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆx:Xhx:x β C1q:βhqβ:0 β€ qhq:0 < qβ’ x β closure (H hT C1 C2 0)
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆx:Xhx:x β C1q:βhqβ:0 β€ qhq:0 < qβ’ x β H hT C1 C2 0
All goals completed! π
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆx:Xhx:x β C1q:βhqβ:0 β€ qhq:0 = qβ’ q β F hT C1 C2 x X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆx:Xhx:x β C1q:βhqβ:0 β€ qhq:0 = qβ’ 0 β F hT C1 C2 x
All goals completed! πβ
Lemma 4.16
Consider F : X \to \mathcal{P}(\mathbb{Q}). For each x \in C_1, we have that \inf{F}(x) = 0.
lemma F_0_GLB_in_C1 {X : Type} [T : TopologicalSpace X]
(hT : β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β U)
(C1 C2 : Set X)
(hC1 : IsClosed C1)
(hC2 : IsOpen C2αΆ)
(hC1C2 : C1 β C2αΆ)
: β x : X, x β C1 β IsGLB (F hT C1 C2 x) 0 := X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆβ’ β x β C1, IsGLB (F hT C1 C2 x) 0
Once we know that F(x) = \{q \in \mathbb{Q} ~|~ q \geq 0\}, seeing that the infimum of this set is 0 is direct. Note that here we can indeed define the infimum over F because 0 \in \mathbb{Q}. Now we can state the same for \tilde{F}, simply being careful with the type of F(x) and of 0.
Lemma 4.17
Consider \tilde{F} : X \to \mathcal{P}(\mathbb{R}). For each x \in C_1, we have that \inf{\tilde{F}}(x) = 0.
lemma F_Real_0_GLB_in_C1 {X : Type} [T : TopologicalSpace X]
(hT : β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β U)
(C1 C2 : Set X)
(hC1 : IsClosed C1)
(hC2 : IsOpen C2αΆ)
(hC1C2 : C1 β C2αΆ)
: β x : X, x β C1 β IsGLB (F_Real hT C1 C2 x) 0 := X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆβ’ β x β C1, IsGLB (F_Real hT C1 C2 x) 0Finally, we have:
Lemma 4.18
Consider k : X \to \mathbb{R}. Recall that C_1 is non-empty. We have that k (C_1) = \{0\}.
lemma k_in_C1_is_0 {X : Type} [T : TopologicalSpace X]
(hT : β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β U)
(C1 C2 : Set X)
(hC1 : IsClosed C1)
(hC2 : IsOpen C2αΆ)
(hC1C2 : C1 β C2αΆ)
(hC1_nonempty : C1 β β
)
: k hT C1 C2 '' C1 = {0} := X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
β’ k hT C1 C2 '' C1 = {0}
Proof. To see that k(C_1) \subseteq \{0\}, since k(x) := \inf \tilde{F}(x), and \inf \tilde{F}(x) = 0 for x \in C_1 by the previous result, it suffices to use that the infimum is unique.
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:ββ’ r β k hT C1 C2 '' C1 β r β {0}
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:ββ’ r β k hT C1 C2 '' C1 β r β {0}X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:ββ’ r β {0} β r β k hT C1 C2 '' C1
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:ββ’ r β k hT C1 C2 '' C1 β r β {0} X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:βx:Xhx:x β C1hr:k hT C1 C2 x = rβ’ r β {0}
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:βx:Xhx:x β C1hr:k hT C1 C2 x = rβ’ k hT C1 C2 x β {0}
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:βx:Xhx:x β C1hr:k hT C1 C2 x = rβ’ IsGLB (F_Real hT C1 C2 x) 0
All goals completed! π
To see that \{0\} \subseteq k(x), we need to see that there exists an x \in C_1 such that k(x) = 0. Since C_1 is non-empty, let x \in C_1 be arbitrary. Then k(x) = 0, proceeding in the same way as in the first inclusion.
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:ββ’ r β {0} β r β k hT C1 C2 '' C1 X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:βhr:r β {0}β’ r β k hT C1 C2 '' C1
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:βhr:r β {0}β’ 0 β k hT C1 C2 '' C1
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:βhr:r β {0}x:Xhx:x β C1β’ 0 β k hT C1 C2 '' C1
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:βhr:r β {0}x:Xhx:x β C1β’ x β C1 β§ k hT C1 C2 x = 0
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:βhr:r β {0}x:Xhx:x β C1β’ x β C1X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:βhr:r β {0}x:Xhx:x β C1β’ k hT C1 C2 x = 0
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:βhr:r β {0}x:Xhx:x β C1β’ x β C1 All goals completed! π
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:βhr:r β {0}x:Xhx:x β C1β’ k hT C1 C2 x = 0 X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:βhr:r β {0}x:Xhx:x β C1aux:IsGLB (F_Real hT C1 C2 x) 0β’ k hT C1 C2 x = 0
X:TypeT:TopologicalSpace XhT:β (U C : Set X), IsOpen U β IsClosed C β C β U β β V, IsOpen V β§ C β V β§ closure V β UC1:Set XC2:Set XhC1:IsClosed C1hC2:IsOpen C2αΆhC1C2:C1 β C2αΆhC1_nonempty:C1 β β
r:βhr:r β {0}x:Xhx:x β C1aux:IsGLB (F_Real hT C1 C2 x) 0aux':IsGLB (F_Real hT C1 C2 x) (Classical.choose β―)β’ k hT C1 C2 x = 0
All goals completed! πβ