Definition: Sierpinski-bottom
⊥ ==  λn.ff

Lemma: Sierpinski-bottom_wf
⊥ ∈ ℕ ⟶ 𝔹

Lemma: equal-Sierpinski-bottom
[x:ℕ ⟶ 𝔹]. uiff(x = ⊥ ∈ (ℕ ⟶ 𝔹);∀n:ℕ(¬↑(x n)))

Definition: Sierpinski-top
⊤ ==  λn.tt

Lemma: Sierpinski-top_wf
⊤ ∈ ℕ ⟶ 𝔹

Lemma: Sierpinski-unequal-1
⊥ = ⊤ ∈ (ℕ ⟶ 𝔹⇐⇒ False

Lemma: two-class-equiv-rel
[T:Type]. ∀[t:T].  EquivRel(T;x,y.x t ∈ ⇐⇒ t ∈ T)

Definition: Sierpinski
Sierpinski ==  f,g:ℕ ⟶ 𝔹//(f = ⊥ ∈ (ℕ ⟶ 𝔹⇐⇒ = ⊥ ∈ (ℕ ⟶ 𝔹))

Lemma: Sierpinski_wf
Sierpinski ∈ Type

Lemma: subtype-Sierpinski
(ℕ ⟶ 𝔹) ⊆Sierpinski

Lemma: not-Sierpinski-top
[x:Sierpinski]. ((¬(x = ⊤ ∈ Sierpinski))  (x = ⊥ ∈ Sierpinski))

Lemma: not-Sierpinski-bottom
[x:Sierpinski]. ((¬(x = ⊥ ∈ Sierpinski))  (x = ⊤ ∈ Sierpinski))

Lemma: Sierpinski-unequal
¬(⊥ = ⊤ ∈ Sierpinski)

Lemma: Sierpinski-cases
[x:Sierpinski]. ((¬(x = ⊤ ∈ Sierpinski)) ∧ (x = ⊥ ∈ Sierpinski))))

Lemma: Sierpinski-cases2
[x:Sierpinski]. (¬¬((x = ⊤ ∈ Sierpinski) ∨ (x = ⊥ ∈ Sierpinski)))

Definition: sp-meet
f ∧ ==  λn.let x,y coded-pair(n) in (f x) ∧b (g y)

Lemma: sp-meet_wf
[f,g:Sierpinski].  (f ∧ g ∈ Sierpinski)

Definition: sp-join
f ∨ ==  λn.((f n) ∨b(g n))

Lemma: sp-join_wf
[f,g:Sierpinski].  (f ∨ g ∈ Sierpinski)

Lemma: sp-meet-is-top
[x,y:Sierpinski].  (x ∧ = ⊤ ∈ Sierpinski ⇐⇒ (x = ⊤ ∈ Sierpinski) ∧ (y = ⊤ ∈ Sierpinski))

Lemma: sp-join-is-bottom
[x,y:Sierpinski].  (x ∨ = ⊥ ∈ Sierpinski ⇐⇒ (x = ⊥ ∈ Sierpinski) ∧ (y = ⊥ ∈ Sierpinski))

Definition: sp-lub
lub(n.A[n]) ==  λn.let i,j coded-pair(n) in A[i] j

Lemma: sp-lub_wf1
[B:f,g:ℕ ⟶ ℕ ⟶ 𝔹//fun-equiv(ℕ;a,b.↓= ⊥ ∈ (ℕ ⟶ 𝔹⇐⇒ = ⊥ ∈ (ℕ ⟶ 𝔹);f;g)]. (lub(n.B[n]) ∈ Sierpinski)

Lemma: sp-lub_wf
[A:ℕ ⟶ Sierpinski]. (lub(n.A[n]) ∈ Sierpinski)

Definition: sp-le
x ≤ ==  (x = ⊤ ∈ Sierpinski)  (y = ⊤ ∈ Sierpinski)

Lemma: sp-le_wf
[x,y:Sierpinski].  (x ≤ y ∈ ℙ)

Lemma: sp-le_weakening
[x:Sierpinski]. x ≤ x

Lemma: sp-le-top
[x:Sierpinski]. x ≤ ⊤

Lemma: sp-le-bottom
[x:Sierpinski]. ⊥ ≤ x

Lemma: sp-le_transitivity
[x,y,z:Sierpinski].  (x ≤  y ≤  x ≤ z)

Lemma: sp-lub-is-bottom
[A:ℕ ⟶ Sierpinski]. (lub(n.A[n]) = ⊥ ∈ Sierpinski ⇐⇒ ∀n:ℕ(A[n] = ⊥ ∈ Sierpinski))

Lemma: sp-lub-is-top1
[A:ℕ ⟶ Sierpinski]. (lub(n.A[n]) = ⊤ ∈ Sierpinski ⇐⇒ ¬(∀n:ℕ(A[n] = ⊥ ∈ Sierpinski)))

Lemma: sp-lub-is-top
[A:ℕ ⟶ Sierpinski]. (lub(n.A[n]) = ⊤ ∈ Sierpinski ⇐⇒ ¬¬(∃n:ℕ(A[n] = ⊤ ∈ Sierpinski)))

Lemma: sp-lub-property
[A:ℕ ⟶ Sierpinski]. ((∀n:ℕA[n] ≤ lub(n.A[n])) ∧ (∀c:Sierpinski. ((∀n:ℕA[n] ≤ c)  lub(n.A[n]) ≤ c)))

Lemma: Sierpinski-equal-bottom
[x:ℕ ⟶ 𝔹]. uiff(x = ⊥ ∈ Sierpinski;x = ⊥ ∈ (ℕ ⟶ 𝔹))

Lemma: Sierpinski-equal
[x,y:Sierpinski].  uiff(x y ∈ Sierpinski;x = ⊥ ∈ Sierpinski ⇐⇒ = ⊥ ∈ Sierpinski)

Lemma: Sierpinski-equal2
[x,y:Sierpinski].  uiff(x y ∈ Sierpinski;x = ⊤ ∈ Sierpinski ⇐⇒ = ⊤ ∈ Sierpinski)

Lemma: sp-meet-com
[x,y:Sierpinski].  (x ∧ y ∧ x ∈ Sierpinski)

Lemma: sp-join-com
[x,y:Sierpinski].  (x ∨ y ∨ x ∈ Sierpinski)

Lemma: sp-meet-assoc
[x,y,z:Sierpinski].  (x ∧ y ∧ x ∧ y ∧ z ∈ Sierpinski)

Lemma: sp-join-assoc
[x,y,z:Sierpinski].  (x ∨ y ∨ x ∨ y ∨ z ∈ Sierpinski)

Lemma: sp-meet-top
[x:Sierpinski]. (x ∧ ⊤ x ∈ Sierpinski)

Lemma: sp-join-bottom
[x:Sierpinski]. (x ∨ ⊥ x ∈ Sierpinski)

Lemma: sp-meet-bottom
[x:Sierpinski]. (x ∧ ⊥ = ⊥ ∈ Sierpinski)

Lemma: sp-join-top
[x:Sierpinski]. (x ∨ ⊤ = ⊤ ∈ Sierpinski)

Lemma: sp-join-meet-distrib
[x,y,z:Sierpinski].  (x ∧ y ∨ x ∨ z ∧ y ∨ z ∈ Sierpinski)

Lemma: sp-meet-join-distrib
[x,y,z:Sierpinski].  (x ∨ y ∧ x ∧ z ∨ y ∧ z ∈ Sierpinski)

Lemma: sp-join-idemp
[x:Sierpinski]. (x ∨ x ∈ Sierpinski)

Lemma: sp-meet-idemp
[x:Sierpinski]. (x ∧ x ∈ Sierpinski)

Definition: Open
Open(X) ==  X ⟶ Sierpinski

Lemma: Open_wf
[X:Type]. (Open(X) ∈ Type)

Definition: open-isect
open-isect(A;B) ==  λx.A x ∧ x

Lemma: open-isect_wf
[X:Type]. ∀[A,B:Open(X)].  (open-isect(A;B) ∈ Open(X))

Definition: open-union
open-union(n.A[n]) ==  λx.lub(n.A[n] x)

Lemma: open-union_wf
[X:Type]. ∀[A:ℕ ⟶ Open(X)].  (open-union(n.A[n]) ∈ Open(X))

Definition: in-open
x ∈ ==  (A x) = ⊤ ∈ Sierpinski

Lemma: in-open_wf
[X:Type]. ∀[x:X]. ∀[A:Open(X)].  (x ∈ A ∈ ℙ)

Lemma: in-open-isect
[X:Type]. ∀[x:X]. ∀[A,B:Open(X)].  (x ∈ open-isect(A;B) ⇐⇒ x ∈ A ∧ x ∈ B)

Lemma: in-open-union
[X:Type]. ∀[x:X]. ∀[A:ℕ ⟶ Open(X)].  (x ∈ open-union(n.A[n]) ⇐⇒ ¬¬(∃n:ℕ((A[n] x) = ⊤ ∈ Sierpinski)))

Definition: overt
Overt(X) ==
  ∀[Y:Type]. ∃ex:Open(X × Y) ⟶ Open(Y). ∀A:Open(X × Y). ∀B:Open(Y).  (∀y:Y. ex y ≤ ⇐⇒ ∀x:X. ∀y:Y.  A <x, y> ≤ \000Cy)

Lemma: overt_wf
[X:Type]. (Overt(X) ∈ ℙ')

Lemma: nat-overt
Overt(ℕ)

Definition: weak-overt
wOvert(X) ==  ∀[Y:Type]. ∃f:Open(X × Y) ⟶ Open(Y). ∀A:Open(X × Y). ∀y:Y.  (y ∈ ⇐⇒ ¬¬(∃x:X. <x, y> ∈ A))

Lemma: weak-overt_wf
[X:Type]. (wOvert(X) ∈ ℙ')

Lemma: weak-overt-implies-overt
[X:Type]. (wOvert(X)  Overt(X))

Lemma: nat-weak-overt
wOvert(ℕ)

Definition: strong-overt
sOvert(X) ==  ∀Y:Type. ∃f:Open(X × Y) ⟶ Open(Y). ∀A:Open(X × Y). ∀y:Y.  (y ∈ ⇐⇒ ∃x:X. <x, y> ∈ A)

Lemma: strong-overt_wf
[X:Type]. (sOvert(X) ∈ ℙ')

Lemma: nat-strong-overt-implies-Markov
sOvert(ℕ (∀g:ℕ ⟶ 𝔹((¬(∀n:ℕff))  (∃n:ℕtt)))



Home Index