Lemma: decidable-finite-cantor
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ].  ((∀x,y:T.  Dec(R[x;y])) 
⇒ (∀n:ℕ. ∀F:(ℕn ⟶ 𝔹) ⟶ T.  Dec(∃f,g:ℕn ⟶ 𝔹. R[F f;F g])))
Lemma: simple-decidable-finite-cantor
∀[T:Type]. ∀[R:T ⟶ ℙ].  ((∀x:T. Dec(R[x])) 
⇒ (∀n:ℕ. ∀F:(ℕn ⟶ 𝔹) ⟶ T.  Dec(∃f:ℕn ⟶ 𝔹. R[F f])))
Definition: finite-cantor-decider
finite-cantor-decider(dcdr;n;F) ==
  case primrec(n;λs,t. if dcdr (F (λi.s[i])) (F (λi.t[i])) then inl <λi.s[i], λi.t[i]> else inr (λ%8.Ax)  fi
               λi,x,s,t. case x (s @ [tt]) (t @ [ff])
                         of inl(fg) =>
                         inl fg
                         | inr(_) =>
                         case x (s @ [ff]) (t @ [tt])
                          of inl(fg) =>
                          inl fg
                          | inr(_) =>
                          case x (s @ [ff]) (t @ [ff])
                           of inl(fg) =>
                           inl fg
                           | inr(_) =>
                           case x (s @ [tt]) (t @ [tt]) of inl(fg) => inl fg | inr(_) => inr (λ_.Ax) ) 
       [] 
       []
   of inl(fg) =>
   inl let f,g = fg 
       in <f, g, case dcdr (F f) (F g) of inl(x) => x | inr(_) => Ax>
   | inr(_) =>
   inr (λ_.Ax) 
Lemma: decidable-finite-cantor-ext
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ].  ((∀x,y:T.  Dec(R[x;y])) 
⇒ (∀n:ℕ. ∀F:(ℕn ⟶ 𝔹) ⟶ T.  Dec(∃f,g:ℕn ⟶ 𝔹. R[F f;F g])))
Lemma: finite-cantor-decider_wf
∀[T:Type]. ∀[R:T ⟶ T ⟶ ℙ].
  ∀dcdr:∀x,y:T.  Dec(R[x;y]). ∀n:ℕ. ∀F:(ℕn ⟶ 𝔹) ⟶ T.
    (finite-cantor-decider(dcdr;n;F) ∈ Dec(∃f,g:ℕn ⟶ 𝔹. R[F f;F g]))
Lemma: decidable-finite-cantor-to-int
∀[R:ℤ ⟶ ℤ ⟶ ℙ]. ((∀x,y:ℤ.  Dec(R[x;y])) 
⇒ (∀n:ℕ. ∀F:(ℕn ⟶ 𝔹) ⟶ ℤ.  Dec(∃f,g:ℕn ⟶ 𝔹. R[F f;F g])))
Definition: simple-finite-cantor-decider
FiniteCantorDecide(dcdr;n;F) ==
  case primrec(n;λs.if dcdr (F (λi.s[i])) then inl (λi.s[i]) else inr (λ%6.Ax)  fi λi,x,s. case x (s @ [tt])
                                                                                            of inl(f) =>
                                                                                            inl f
                                                                                            | inr(_) =>
                                                                                            case x (s @ [ff])
                                                                                             of inl(f) =>
                                                                                             inl f
                                                                                             | inr(_) =>
                                                                                             inr (λ_.Ax) ) 
       []
   of inl(f) =>
   inl <f, case dcdr (F f) of inl(x) => x | inr(_) => Ax>
   | inr(_) =>
   inr (λ_.Ax) 
Lemma: simple-decidable-finite-cantor-ext
∀[T:Type]. ∀[R:T ⟶ ℙ].  ((∀x:T. Dec(R[x])) 
⇒ (∀n:ℕ. ∀F:(ℕn ⟶ 𝔹) ⟶ T.  Dec(∃f:ℕn ⟶ 𝔹. R[F f])))
Lemma: simple-finite-cantor-decider_wf
∀[T:Type]. ∀[R:T ⟶ ℙ]. ∀[dcdr:∀x:T. Dec(R[x])]. ∀[n:ℕ]. ∀[F:(ℕn ⟶ 𝔹) ⟶ T].
  (FiniteCantorDecide(dcdr;n;F) ∈ Dec(∃f:ℕn ⟶ 𝔹. R[F f]))
Definition: strong-continuity-test
strong-continuity-test(M;n;f;b) ==  primrec(n;b;λi,r. if isl(M i f) then inr Ax  else r fi )
Lemma: strong-continuity-test_wf
∀[T:Type]. ∀[M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (ℕ?)]. ∀[n:ℕ]. ∀[f:ℕn ⟶ T]. ∀[b:ℕ?].  (strong-continuity-test(M;n;f;b) ∈ ℕ?)
Lemma: strong-continuity-test-unroll
∀[T:Type]. ∀[M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (ℕ?)]. ∀[n:ℕ]. ∀[f,b:Top].
  (strong-continuity-test(M;n;f;b) ~ if (n =z 0) then b
  if isl(M (n - 1) f) then inr Ax 
  else strong-continuity-test(M;n - 1;f;b)
  fi )
Lemma: strong-continuity-test-prop1
∀[T:Type]. ∀[M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (ℕ?)]. ∀[n:ℕ]. ∀[f:ℕn ⟶ T]. ∀[b:ℕ?].
  ((↑isl(strong-continuity-test(M;n;f;b)))
  
⇒ ((↑isl(b)) ∧ (∀i:ℕ. (i < n 
⇒ (↑isr(M i f)))) ∧ (strong-continuity-test(M;n;f;b) = b ∈ (ℕ?))))
Lemma: strong-continuity-test-prop2
∀[T:Type]
  ∀M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (ℕ?). ∀n:ℕ. ∀f:ℕn ⟶ T. ∀b:ℕ?.
    ((↑isl(b))
    
⇒ (↑isr(strong-continuity-test(M;n;f;b)))
    
⇒ (∃m:ℕ. (m < n ∧ (↑isl(strong-continuity-test(M;m;f;M m f))))))
Lemma: strong-continuity-test-prop3
∀[T:Type]. ∀[M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (ℕ?)]. ∀[n,m:ℕ]. ∀[f:ℕ ⟶ T].
  ((↑isl(strong-continuity-test(M;n;f;M n f))) 
⇒ (↑isl(strong-continuity-test(M;m;f;M m f))) 
⇒ (n = m ∈ ℤ))
Definition: bound-domain
bound-domain(f;n;e) ==  λx.if (x) < (0)  then ⊥  else if (x) < (n)  then f x  else (exception(e; x))
Definition: bsc-body
bsc-body(F;M;f) ==
  (∃n:ℕ. ((M n f) = (F f) ∈ ℕ))
  ∧ (∀n:ℕ. (M n f) = (F f) ∈ ℕ supposing M n f is an integer)
  ∧ (∀n,m:ℕ.  ((n ≤ m) 
⇒ M n f is an integer 
⇒ M m f is an integer))
Lemma: bsc-body_wf
∀[T:Type]. ∀[F:(ℕ ⟶ T) ⟶ ℕ]. ∀[M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (ℕ ⋃ (ℕ × ℕ))]. ∀[f:ℕ ⟶ T].  (bsc-body(F;M;f) ∈ ℙ)
Definition: basic-strong-continuity
basic-strong-continuity(T;F) ==
  ∃M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (ℕ ⋃ (ℕ × ℕ)) [(∀f:ℕ ⟶ T
                                           ((∃n:ℕ. ((M n f) = (F f) ∈ ℕ))
                                           ∧ (∀n:ℕ. (M n f) = (F f) ∈ ℕ supposing M n f is an integer)
                                           ∧ (∀n,m:ℕ.  ((n ≤ m) 
⇒ M n f is an integer 
⇒ M m f is an integer))))]
Lemma: basic-strong-continuity_wf
∀[T:Type]. ∀[F:(ℕ ⟶ T) ⟶ ℕ].  (basic-strong-continuity(T;F) ∈ ℙ)
Definition: sq-basic-strong-continuity
sq-basic-strong-continuity(T;F) ==
  ∃M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (ℕ ⋃ (ℕ × ℕ)) [(∀f:ℕ ⟶ T
                                           ((∃n:ℕ. ((M n f) = (F f) ∈ ℕ))
                                           ∧ (∀n:ℕ. (M n f) = (F f) ∈ ℕ supposing M n f is an integer)
                                           ∧ (∀n,m:ℕ.  ((n ≤ m) 
⇒ M n f is an integer 
⇒ M m f is an integer))))]
Lemma: sq-basic-strong-continuity_wf
∀[T:Type]. ∀[F:(ℕ ⟶ T) ⟶ ℕ].  (sq-basic-strong-continuity(T;F) ∈ ℙ)
Definition: strong-continuity2
strong-continuity2(T;F) ==
  ∃M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (ℕ?)
   ∀f:ℕ ⟶ T. ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (ℕ?))) ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (ℕ?) supposing ↑isl(M n f)))
Lemma: strong-continuity2_wf
∀[T:Type]. ∀[F:(ℕ ⟶ T) ⟶ ℕ].  (strong-continuity2(T;F) ∈ ℙ)
Lemma: basic-implies-strong-continuity2
∀[T:Type]. ∀[F:(ℕ ⟶ T) ⟶ ℕ].  (basic-strong-continuity(T;F) 
⇒ strong-continuity2(T;F))
Lemma: basic-implies-strong-continuity2-ext
∀[T:Type]. ∀[F:(ℕ ⟶ T) ⟶ ℕ].  (basic-strong-continuity(T;F) 
⇒ strong-continuity2(T;F))
Definition: strong-continuity3
strong-continuity3(T;F) ==
  ∃M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (ℕ?)
   ∀f:ℕ ⟶ T. ∃n:ℕ. (((M n f) = (inl (F f)) ∈ (ℕ?)) ∧ (∀m:ℕ. ((↑isl(M m f)) 
⇒ (m = n ∈ ℕ))))
Lemma: strong-continuity3_wf
∀[T:Type]. ∀[F:(ℕ ⟶ T) ⟶ ℕ].  (strong-continuity3(T;F) ∈ ℙ)
Lemma: strong-continuity3_functionality_surject
∀[T,S:Type].
  ∀g:T ⟶ S. (Surj(T;S;g) 
⇒ (∀F:(ℕ ⟶ S) ⟶ ℕ. (strong-continuity3(T;λf.(F (g o f))) 
⇒ strong-continuity3(S;F))))
Lemma: strong-continuity3_functionality
∀[T,S:Type].  ∀e:T ~ S. ∀F:(ℕ ⟶ S) ⟶ ℕ.  (strong-continuity3(T;λf.(F ((fst(e)) o f))) 
⇒ strong-continuity3(S;F))
Lemma: strong-continuity2-implies-3
∀[T:Type]. ∀[F:(ℕ ⟶ T) ⟶ ℕ].  (strong-continuity2(T;F) 
⇒ strong-continuity3(T;F))
Lemma: strong-continuity2-iff-3
∀[T:Type]. ∀[F:(ℕ ⟶ T) ⟶ ℕ].  (strong-continuity2(T;F) 
⇐⇒ strong-continuity3(T;F))
Lemma: strong-continuity2_functionality_surject
∀[T,S:Type].
  ∀g:T ⟶ S. (Surj(T;S;g) 
⇒ (∀F:(ℕ ⟶ S) ⟶ ℕ. (strong-continuity2(T;λf.(F (g o f))) 
⇒ strong-continuity2(S;F))))
Lemma: strong-continuity2_biject_retract
∀[T,S,U:Type].
  ∀r:ℕ ⟶ U
    ((U ⊆r ℕ)
    
⇒ (∀x:U. ((r x) = x ∈ U))
    
⇒ (∀g:S ⟶ U
          (Bij(S;U;g)
          
⇒ (∀F:(ℕ ⟶ T) ⟶ S
                (strong-continuity2(T;g o F)
                
⇒ (∃M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (S?)
                     ∀f:ℕ ⟶ T
                       ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (S?)))
                       ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (S?) supposing ↑isl(M n f)))))))))
Lemma: strong-continuity2_biject_retract-ext
∀[T,S,U:Type].
  ∀r:ℕ ⟶ U
    ((U ⊆r ℕ)
    
⇒ (∀x:U. ((r x) = x ∈ U))
    
⇒ (∀g:S ⟶ U
          (Bij(S;U;g)
          
⇒ (∀F:(ℕ ⟶ T) ⟶ S
                (strong-continuity2(T;g o F)
                
⇒ (∃M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (S?)
                     ∀f:ℕ ⟶ T
                       ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (S?)))
                       ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (S?) supposing ↑isl(M n f)))))))))
Lemma: strong-continuity2_biject
∀[T,S:Type].
  ∀g:S ⟶ ℕ
    (Bij(S;ℕ;g)
    
⇒ (∀F:(ℕ ⟶ T) ⟶ S
          (strong-continuity2(T;g o F)
          
⇒ (∃M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (S?)
               ∀f:ℕ ⟶ T
                 ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (S?)))
                 ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (S?) supposing ↑isl(M n f)))))))
Definition: strong-continuity4
strong-continuity4(T;F) ==
  ∃M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (ℕn?)
   ∀f:ℕ ⟶ T. ∃n:ℕ. (((M n f) = (inl (F f)) ∈ (ℕ?)) ∧ (∀m:ℕ. ((↑isl(M m f)) 
⇒ ((M m f) = (inl (F f)) ∈ (ℕ?)))))
Lemma: strong-continuity4_wf
∀[T:Type]. ∀[F:(ℕ ⟶ T) ⟶ ℕ].  (strong-continuity4(T;F) ∈ ℙ)
Lemma: strong-continuity3-implies-4
∀[T:Type]. ∀F:(ℕ ⟶ T) ⟶ ℕ. (strong-continuity3(T;F) 
⇒ strong-continuity4(T;F))
Definition: weak-continuity-skolem
weak-continuity-skolem(T;F) ==  ∃M:(ℕ ⟶ T) ⟶ ℕ. ∀f,g:ℕ ⟶ T.  ((f = g ∈ (ℕM f ⟶ T)) 
⇒ ((F f) = (F g) ∈ ℕ))
Lemma: weak-continuity-skolem_wf
∀[T:Type]. ∀[F:(ℕ ⟶ T) ⟶ ℕ].  (weak-continuity-skolem(T;F) ∈ ℙ)
Lemma: weak-continuity-skolem_functionality
∀[T,S:Type].
  ∀e:T ~ S. ∀F:(ℕ ⟶ S) ⟶ ℕ.  (weak-continuity-skolem(T;λf.(F ((fst(e)) o f))) 
⇒ weak-continuity-skolem(S;F))
Lemma: strong-continuity2-weak-skolem
∀[T:Type]. ∀[F:(ℕ ⟶ T) ⟶ ℕ].  (strong-continuity2(T;F) 
⇒ weak-continuity-skolem(T;F))
Definition: Kleene-M
Kleene-M(F) ==  λn,f. ν(e.F bound-domain(f;n;e)?e:x.<x, x>)
Lemma: Kleene-M_wf
∀[T:{T:Type| (T ⊆r ℕ) ∧ (↓T)} ]. ∀[F:(ℕ ⟶ T) ⟶ ℕ].  (Kleene-M(F) ∈ ⇃(basic-strong-continuity(T;F)))
Definition: KleeneSearch
KleeneSearch(M;f;n) ==  eval x = M n f in if x is an integer then n else KleeneSearch(M;f;imax(fst(x);n + 1))
Lemma: KleeneSearch_wf
∀[T:{T:Type| (T ⊆r ℕ) ∧ (↓T)} ]. ∀[F:(ℕ ⟶ T) ⟶ ℕ]. ∀[M:⇃(basic-strong-continuity(T;F))]. ∀[f:ℕ ⟶ T]. ∀[start:ℕ].
  (KleeneSearch(M;f;start) ∈ ⇃({m:ℕ| (start ≤ m) ∧ (∀g:ℕ ⟶ T. ((g = f ∈ (ℕm ⟶ T)) 
⇒ ((F g) = (F f) ∈ ℤ)))} ))
Definition: KleeneM
KleeneM(F;f) ==  KleeneSearch(Kleene-M(F);f;1)
Lemma: KleeneM_wf
∀[T:{T:Type| (T ⊆r ℕ) ∧ (↓T)} ]. ∀[F:(ℕ ⟶ T) ⟶ ℕ]. ∀[f:ℕ ⟶ T].
  (KleeneM(F;f) ∈ ⇃({m:ℕ+| ∀g:ℕ ⟶ T. ((g = f ∈ (ℕm ⟶ T)) 
⇒ ((F g) = (F f) ∈ ℤ))} ))
Lemma: weak-continuity-skolem-truncated
∀[T:{T:Type| (T ⊆r ℕ) ∧ (↓T)} ]. ∀F:(ℕ ⟶ T) ⟶ ℕ. ⇃(weak-continuity-skolem(T;F))
Lemma: weak-continuity-truncated
∀[T:{T:Type| (T ⊆r ℕ) ∧ (↓T)} ]
  ∀F:(ℕ ⟶ T) ⟶ ℕ. ⇃(∀f:ℕ ⟶ T. ∃n:ℕ. ∀g:ℕ ⟶ T. ((f = g ∈ (ℕn ⟶ T)) 
⇒ ((F f) = (F g) ∈ ℕ)))
Lemma: strong-continuity2-half-squash
∀[T:Type]. ∀F:(ℕ ⟶ T) ⟶ ℕ. ⇃(strong-continuity2(T;F)) supposing (T ⊆r ℕ) ∧ (↓T)
Lemma: strong-continuity2-half-squash-ext
∀[T:Type]. ∀F:(ℕ ⟶ T) ⟶ ℕ. ⇃(strong-continuity2(T;F)) supposing (T ⊆r ℕ) ∧ (↓T)
Lemma: strong-continuity3-half-squash
∀[T:Type]. ∀F:(ℕ ⟶ T) ⟶ ℕ. ⇃(strong-continuity3(T;F)) supposing (T ⊆r ℕ) ∧ (↓T)
Lemma: strong-continuity3-half-squash-surject
∀[B:Type]. ((∃g:ℕ ⟶ B. Surj(ℕ;B;g)) 
⇒ (∀F:(ℕ ⟶ B) ⟶ ℕ. ⇃(strong-continuity3(B;F))))
Lemma: strong-continuity2-half-squash-surject-biject
∀[T,S,U:Type].
  ((U ⊆r ℕ)
  
⇒ (∃r:ℕ ⟶ U. ∀x:U. ((r x) = x ∈ U))
  
⇒ (∃g:ℕ ⟶ T. Surj(ℕ;T;g))
  
⇒ (∃h:S ⟶ U. Bij(S;U;h))
  
⇒ (∀F:(ℕ ⟶ T) ⟶ S
        ⇃(∃M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (S?)
           ∀f:ℕ ⟶ T
             ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (S?))) ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (S?) supposing ↑isl(M n f))))))
Lemma: strong-continuity2-half-squash-surject-biject-ext
∀[T,S,U:Type].
  ((U ⊆r ℕ)
  
⇒ (∃r:ℕ ⟶ U. ∀x:U. ((r x) = x ∈ U))
  
⇒ (∃g:ℕ ⟶ T. Surj(ℕ;T;g))
  
⇒ (∃h:S ⟶ U. Bij(S;U;h))
  
⇒ (∀F:(ℕ ⟶ T) ⟶ S
        ⇃(∃M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (S?)
           ∀f:ℕ ⟶ T
             ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (S?))) ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (S?) supposing ↑isl(M n f))))))
Lemma: strong-continuity3-half-squash-equipollent
∀[T:Type]. ∀[B:Type]. (T ~ B 
⇒ (∀F:(ℕ ⟶ B) ⟶ ℕ. ⇃(strong-continuity3(B;F)))) supposing (T ⊆r ℕ) ∧ (↓T)
Lemma: strong-continuity2-no-inner-squash
∀F:(ℕ ⟶ ℕ) ⟶ ℕ
  ⇃(∃M:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ (ℕ?)
     ∀f:ℕ ⟶ ℕ. ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (ℕ?))) ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (ℕ?) supposing ↑isl(M n f))))
Lemma: strong-continuity2-no-inner-squash-unique
∀F:(ℕ ⟶ ℕ) ⟶ ℕ
  ⇃(∃M:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ (ℕ?)
     ∀f:ℕ ⟶ ℕ. ∃n:ℕ. (((M n f) = (inl (F f)) ∈ (ℕ?)) ∧ (∀m:ℕ. ((↑isl(M m f)) 
⇒ (m = n ∈ ℕ)))))
Lemma: strong-continuity2-no-inner-squash-unique-bool
∀F:(ℕ ⟶ 𝔹) ⟶ ℕ
  ⇃(∃M:n:ℕ ⟶ (ℕn ⟶ 𝔹) ⟶ (ℕ?)
     ∀f:ℕ ⟶ 𝔹. ∃n:ℕ. (((M n f) = (inl (F f)) ∈ (ℕ?)) ∧ (∀m:ℕ. ((↑isl(M m f)) 
⇒ (m = n ∈ ℕ)))))
Lemma: strong-continuity-implies1
∀[F:(ℕ ⟶ ℕ) ⟶ ℕ]
  (↓∃M:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ (ℕ?)
     ∀f:ℕ ⟶ ℕ. ((↓∃n:ℕ. ((M n f) = (inl (F f)) ∈ (ℕ?))) ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (ℕ?) supposing ↑isl(M n f))))
Lemma: strong-continuity-implies2
∀[F:(ℕ ⟶ ℕ) ⟶ ℕ]
  (↓∃M:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ (ℕ?)
     ∀f:ℕ ⟶ ℕ. (↓∃n:ℕ. (((M n f) = (inl (F f)) ∈ (ℕ?)) ∧ (∀m:ℕ. ((↑isl(M m f)) 
⇒ (m = n ∈ ℕ))))))
Lemma: strong-continuity-implies3
∀[F:(ℕ ⟶ ℕ) ⟶ ℕ]
  (↓∃M:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ (ℕn?)
     ∀f:ℕ ⟶ ℕ. (↓∃n:ℕ. (((M n f) = (inl (F f)) ∈ (ℕ?)) ∧ (∀m:ℕ. ((↑isl(M m f)) 
⇒ ((M m f) = (inl (F f)) ∈ (ℕ?)))))))
Lemma: strong-continuity-implies4
∀[F:(ℕ ⟶ ℕ) ⟶ ℕ]
  (↓∃M:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ (ℕn?)
     ∀f:ℕ ⟶ ℕ. ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (ℕ?))) ∧ (∀m:ℕ. ((↑isl(M m f)) 
⇒ ((M m f) = (inl (F f)) ∈ (ℕ?))))))
Definition: seq-cont
seq-cont(T;F) ==
  ∀f:ℕ ⟶ T. ∀g:ℕ ⟶ ℕ ⟶ T.
    ((∀k:ℕ. ∃n:ℕ. ∀m:{n...}. ((g m) = f ∈ (ℕk ⟶ T))) 
⇒ ⇃(∃n:ℕ. ∀m:{n...}. ((F (g m)) = (F f) ∈ ℕ)))
Lemma: seq-cont_wf
∀[T:Type]. ∀[F:(ℕ ⟶ T) ⟶ ℕ].  (seq-cont(T;F) ∈ ℙ)
Lemma: seq-cont-nat
∀F:(ℕ ⟶ ℕ) ⟶ ℕ. seq-cont(ℕ;F)
Definition: unsquashed-seq-cont
unsquashed-seq-cont(T;F) ==
  ∀f:ℕ ⟶ T. ∀g:ℕ ⟶ ℕ ⟶ T.
    ((∀k:ℕ. ∃n:ℕ. ∀m:{n...}. ((g m) = f ∈ (ℕk ⟶ T))) 
⇒ (∃n:ℕ. ∀m:{n...}. ((F (g m)) = (F f) ∈ ℕ)))
Lemma: unsquashed-seq-cont_wf
∀[T:Type]. ∀[F:(ℕ ⟶ T) ⟶ ℕ].  (unsquashed-seq-cont(T;F) ∈ ℙ)
Lemma: strong-continuity2-implies-weak-skolem
∀F:(ℕ ⟶ ℕ) ⟶ ℕ. ⇃(∃M:(ℕ ⟶ ℕ) ⟶ ℕ. ∀f,g:ℕ ⟶ ℕ.  ((f = g ∈ (ℕM f ⟶ ℕ)) 
⇒ ((F f) = (F g) ∈ ℕ)))
Lemma: strong-continuity2-implies-weak-skolem2
∀F:(ℕ ⟶ 𝔹) ⟶ ℕ. ⇃(∃M:(ℕ ⟶ 𝔹) ⟶ ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕM f ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ ℕ)))
Lemma: strong-continuity2-implies-weak
∀F:(ℕ ⟶ ℕ) ⟶ ℕ. ∀f:ℕ ⟶ ℕ.  ⇃(∃n:ℕ. ∀g:ℕ ⟶ ℕ. ((f = g ∈ (ℕn ⟶ ℕ)) 
⇒ ((F f) = (F g) ∈ ℕ)))
Lemma: weak-continuity-equipollent
∀T:Type. (T ~ ℕ 
⇒ (∀F:(ℕ ⟶ T) ⟶ ℕ. ∀f:ℕ ⟶ T.  ⇃(∃n:ℕ. ∀g:ℕ ⟶ T. ((f = g ∈ (ℕn ⟶ T)) 
⇒ ((F f) = (F g) ∈ ℕ)))))
Lemma: weak-continuity-nat-int
∀F:(ℕ ⟶ ℤ) ⟶ ℕ. ∀f:ℕ ⟶ ℤ.  ⇃(∃n:ℕ. ∀g:ℕ ⟶ ℤ. ((f = g ∈ (ℕn ⟶ ℤ)) 
⇒ ((F f) = (F g) ∈ ℕ)))
Lemma: weak-continuity-nat-nat
∀F:(ℕ ⟶ ℕ) ⟶ ℕ. ∀f:ℕ ⟶ ℕ.  ⇃(∃n:ℕ. ∀g:ℕ ⟶ ℕ. ((f = g ∈ (ℕn ⟶ ℕ)) 
⇒ ((F f) = (F g) ∈ ℕ)))
Lemma: not-LPO
¬(∀f:ℕ ⟶ ℕ. ((∀n:ℕ. ((f n) = 0 ∈ ℤ)) ∨ (¬(∀n:ℕ. ((f n) = 0 ∈ ℤ)))))
Lemma: weak-continuity-principle-nat-int
∀F:(ℕ ⟶ ℤ) ⟶ ℕ. ∀f:ℕ ⟶ ℤ. ∀G:n:ℕ ⟶ {g:ℕ ⟶ ℤ| f = g ∈ (ℕn ⟶ ℤ)} .  ∃n:ℕ. ((F f) = (F (G n)) ∈ ℕ)
Lemma: weak-continuity-principle-nat-nat
∀F:(ℕ ⟶ ℕ) ⟶ ℕ. ∀f:ℕ ⟶ ℕ. ∀G:n:ℕ ⟶ {g:ℕ ⟶ ℕ| f = g ∈ (ℕn ⟶ ℕ)} .  ∃n:ℕ. ((F f) = (F (G n)) ∈ ℕ)
Lemma: weak-continuity-principle-nat+-int-bool
∀F:(ℕ+ ⟶ ℤ) ⟶ 𝔹. ∀f:ℕ+ ⟶ ℤ. ∀G:n:ℕ+ ⟶ {g:ℕ+ ⟶ ℤ| f = g ∈ (ℕ+n ⟶ ℤ)} .  ∃n:ℕ+. F f = F (G n)
Lemma: weak-continuity-principle-nat+-int-bool-ext
∀F:(ℕ+ ⟶ ℤ) ⟶ 𝔹. ∀f:ℕ+ ⟶ ℤ. ∀G:n:ℕ+ ⟶ {g:ℕ+ ⟶ ℤ| f = g ∈ (ℕ+n ⟶ ℤ)} .  ∃n:ℕ+. F f = F (G n)
Lemma: weak-continuity-principle-nat+-int-bool-double
∀F,H:(ℕ+ ⟶ ℤ) ⟶ 𝔹. ∀f:ℕ+ ⟶ ℤ. ∀G:n:ℕ+ ⟶ {g:ℕ+ ⟶ ℤ| f = g ∈ (ℕ+n ⟶ ℤ)} .  ∃n:ℕ+. (F f = F (G n) ∧ H f = H (G n))
Lemma: weak-continuity-principle-nat+-int-bool-double-ext
∀F,H:(ℕ+ ⟶ ℤ) ⟶ 𝔹. ∀f:ℕ+ ⟶ ℤ. ∀G:n:ℕ+ ⟶ {g:ℕ+ ⟶ ℤ| f = g ∈ (ℕ+n ⟶ ℤ)} .  ∃n:ℕ+. (F f = F (G n) ∧ H f = H (G n))
Lemma: weak-continuity-principle-nat+-int-nat
∀F:(ℕ+ ⟶ ℤ) ⟶ ℕ. ∀f:ℕ+ ⟶ ℤ. ∀G:n:ℕ+ ⟶ {g:ℕ+ ⟶ ℤ| f = g ∈ (ℕ+n ⟶ ℤ)} .  ∃n:ℕ+. ((F f) = (F (G n)) ∈ ℕ)
Definition: WCP
WCP(F;f;G) ==  mu(λn.F f =b F (G (n + 1))) + 1
Lemma: WCP_wf
∀F:(ℕ+ ⟶ ℤ) ⟶ 𝔹. ∀f:ℕ+ ⟶ ℤ. ∀G:n:ℕ+ ⟶ {g:ℕ+ ⟶ ℤ| f = g ∈ (ℕ+n ⟶ ℤ)} .  (WCP(F;f;G) ∈ {n:ℕ+| F f = F (G n)} )
Definition: WCPD
WCPD(F;H;f;G) ==  mu(λn.(F f =b F (G (n + 1)) ∧b H f =b H (G (n + 1)))) + 1
Lemma: WCPD_wf
∀F,H:(ℕ+ ⟶ ℤ) ⟶ 𝔹. ∀f:ℕ+ ⟶ ℤ. ∀G:n:ℕ+ ⟶ {g:ℕ+ ⟶ ℤ| f = g ∈ (ℕ+n ⟶ ℤ)} .
  (WCPD(F;H;f;G) ∈ {n:ℕ+| F f = F (G n) ∧ H f = H (G n)} )
Lemma: weak-continuity-nat-int-bool
∀F:(ℕ ⟶ ℤ) ⟶ 𝔹. ∀f:ℕ ⟶ ℤ.  ⇃(∃n:ℕ. ∀g:ℕ ⟶ ℤ. ((f = g ∈ (ℕn ⟶ ℤ)) 
⇒ F f = F g))
Definition: pseudo-bounded
pseudo-bounded(S) ==  ∀f:ℕ ⟶ S. ∃k:ℕ. ∀n:{k...}. f n < n
Lemma: pseudo-bounded_wf
∀[S:Type]. pseudo-bounded(S) ∈ ℙ supposing S ⊆r ℕ
Lemma: pseudo-bounded-not-unbounded
∀[S:{S:Type| S ⊆r ℕ} ]. (pseudo-bounded(S) 
⇒ (¬(∀B:ℕ. ∃n:{B...}. (n ∈ S))))
Lemma: pseudo-bounded-is-bounded
∀[S:{S:Type| S ⊆r ℕ} ]. ∀m:S. (pseudo-bounded(S) 
⇒ ⇃(∃B:ℕ. ∀n:S. (n ≤ B)))
Lemma: weak-Markov-principle-alt
∀a,b:ℕ ⟶ ℕ.  ((∀c:ℕ ⟶ ℕ. ((¬(a = c ∈ (ℕ ⟶ ℕ))) ∨ (¬(b = c ∈ (ℕ ⟶ ℕ))))) 
⇒ (∃n:ℕ. (¬((a n) = (b n) ∈ ℤ))))
Lemma: weak-Markov-principle
∀a,b:ℕ ⟶ ℕ.
  ((∀c:ℕ ⟶ ℕ. ((¬¬(∃n:ℕ. (¬((a n) = (c n) ∈ ℤ)))) ∨ (¬¬(∃n:ℕ. (¬((b n) = (c n) ∈ ℤ))))))
  
⇒ (∃n:ℕ. (¬((a n) = (b n) ∈ ℤ))))
Definition: nat-star
ℕ* ==  {s:ℕ ⟶ ℕ| ∀i,j:ℕ.  (0 < s i 
⇒ 0 < s j 
⇒ (i = j ∈ ℤ))} 
Lemma: nat-star_wf
ℕ* ∈ Type
Definition: nat-star-retract
nat-star-retract(s) ==  λn.if (∃i∈upto(n).0 <z s i)_b then 0 else s n fi 
Lemma: nat-star-retract_wf
∀[s:ℕ ⟶ ℕ]. (nat-star-retract(s) ∈ ℕ*)
Lemma: nat-star-retract-id
∀[s:ℕ*]. (nat-star-retract(s) = s ∈ ℕ*)
Lemma: nat-star-retract-property
∀s:ℕ ⟶ ℕ. (∃n:ℕ. 0 < s n 
⇐⇒ ∃n:ℕ. 0 < nat-star-retract(s) n)
Definition: nat-star-0
0 ==  λn.0
Lemma: nat-star-0_wf
0 ∈ ℕ*
Lemma: weak-Markov-principle2
∀a:ℕ*. ((∀c:ℕ*. ((¬¬(∃n:ℕ. (¬((a n) = (c n) ∈ ℤ)))) ∨ (¬¬(∃n:ℕ. (¬(0 = (c n) ∈ ℤ)))))) 
⇒ (∃n:ℕ. 0 < a n))
Lemma: weak-Markov-principle2-alt
∀a:ℕ*. ((∀c:ℕ*. ((¬(a = c ∈ ℕ*)) ∨ (¬(0 = c ∈ ℕ*)))) 
⇒ (∃n:ℕ. 0 < a n))
Lemma: strong-continuity2-no-inner-squash-cantor
∀F:(ℕ ⟶ ℕ2) ⟶ ℕ
  ⇃(∃M:n:ℕ ⟶ (ℕn ⟶ ℕ2) ⟶ (ℕ?)
     ∀f:ℕ ⟶ ℕ2. ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (ℕ?))) ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (ℕ?) supposing ↑isl(M n f))))
Lemma: strong-continuity2-no-inner-squash-cantor2
∀F:(ℕ ⟶ 𝔹) ⟶ ℕ
  ⇃(∃M:n:ℕ ⟶ (ℕn ⟶ 𝔹) ⟶ (ℕ?)
     ∀f:ℕ ⟶ 𝔹. ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (ℕ?))) ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (ℕ?) supposing ↑isl(M n f))))
Lemma: strong-continuity2-no-inner-squash-cantor3
∀F:(ℕ ⟶ 𝔹) ⟶ ℕ2
  ⇃(∃M:n:ℕ ⟶ (ℕn ⟶ 𝔹) ⟶ (ℕ2?)
     ∀f:ℕ ⟶ 𝔹. ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (ℕ2?))) ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (ℕ2?) supposing ↑isl(M n f))))
Lemma: strong-continuity2-no-inner-squash-cantor4
∀F:(ℕ ⟶ 𝔹) ⟶ 𝔹
  ⇃(∃M:n:ℕ ⟶ (ℕn ⟶ 𝔹) ⟶ (𝔹?)
     ∀f:ℕ ⟶ 𝔹. ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (𝔹?))) ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (𝔹?) supposing ↑isl(M n f))))
Lemma: strong-continuity2-no-inner-squash-cantor5
∀F:(ℕ ⟶ 𝔹) ⟶ ℤ
  ⇃(∃M:n:ℕ ⟶ (ℕn ⟶ 𝔹) ⟶ (ℤ?)
     ∀f:ℕ ⟶ 𝔹. ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (ℤ?))) ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (ℤ?) supposing ↑isl(M n f))))
Definition: int2nat
int2nat(i) ==  eval j = i in if (j) < (0)  then (2 * ((-j) - 1)) + 1  else (2 * j)
Lemma: int2nat_wf
∀[i:ℤ]. (int2nat(i) ∈ ℕ)
Definition: nat2int
nat2int(m) ==  if m rem 2=0 then m ÷ 2 else (-((m ÷ 2) + 1))
Lemma: nat2int_wf
∀[n:ℕ]. (nat2int(n) ∈ ℤ)
Lemma: int2nat2int
∀[i:ℤ]. (nat2int(int2nat(i)) = i ∈ ℤ)
Lemma: strong-continuity2-implies-weak-skolem-cantor
∀F:(ℕ ⟶ 𝔹) ⟶ 𝔹. ⇃(∃M:(ℕ ⟶ 𝔹) ⟶ ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕM f ⟶ 𝔹)) 
⇒ F f = F g))
Lemma: strong-continuity2-implies-weak-skolem-cantor-nat
∀F:(ℕ ⟶ 𝔹) ⟶ ℕ. ⇃(∃M:(ℕ ⟶ 𝔹) ⟶ ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕM f ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ ℕ)))
Lemma: general-uniform-continuity-from-fan
∀[B:ℕ ⟶ Type]
  ⇃(∀i:ℕ. ∀K:B[i] ⟶ ℕ.  (∃Bnd:ℕ [(∀t:B[i]. ((K t) ≤ Bnd))]))
  
⇒ (∀[T:Type]
        ∀F:(i:ℕ ⟶ B[i]) ⟶ T
          (⇃(∃M:n:ℕ ⟶ (i:ℕn ⟶ B[i]) ⟶ (T?) [(∀f:i:ℕ ⟶ B[i]
                                                  ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (T?)))
                                                  ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (T?) supposing ↑isl(M n f))))])
          
⇒ ⇃(∃n:ℕ. ∀f,g:i:ℕ ⟶ B[i].  ((f = g ∈ (i:ℕn ⟶ B[i])) 
⇒ ((F f) = (F g) ∈ T))))) 
  supposing ∀i:ℕ. B[i]
Lemma: general-uniform-continuity-from-fan-ext
∀[B:ℕ ⟶ Type]
  ⇃(∀i:ℕ. ∀K:B[i] ⟶ ℕ.  (∃Bnd:ℕ [(∀t:B[i]. ((K t) ≤ Bnd))]))
  
⇒ (∀[T:Type]
        ∀F:(i:ℕ ⟶ B[i]) ⟶ T
          (⇃(∃M:n:ℕ ⟶ (i:ℕn ⟶ B[i]) ⟶ (T?) [(∀f:i:ℕ ⟶ B[i]
                                                  ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (T?)))
                                                  ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (T?) supposing ↑isl(M n f))))])
          
⇒ ⇃(∃n:ℕ. ∀f,g:i:ℕ ⟶ B[i].  ((f = g ∈ (i:ℕn ⟶ B[i])) 
⇒ ((F f) = (F g) ∈ T))))) 
  supposing ∀i:ℕ. B[i]
Lemma: uniform-continuity-from-fan
∀[T:Type]
  ∀F:(ℕ ⟶ 𝔹) ⟶ T
    (⇃(∃M:n:ℕ ⟶ (ℕn ⟶ 𝔹) ⟶ (T?) [(∀f:ℕ ⟶ 𝔹
                                       ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (T?)))
                                       ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (T?) supposing ↑isl(M n f))))])
    
⇒ ⇃(∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ T))))
Lemma: uniform-continuity-from-fan2
∀[T:Type]
  ((∃U:Type. ((U ⊆r ℕ) ∧ (∃r:ℕ ⟶ U. ∀x:U. ((r x) = x ∈ U)) ∧ (∃h:T ⟶ U. Bij(T;U;h))))
  
⇒ (∀F:(ℕ ⟶ 𝔹) ⟶ T. ⇃(∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ T)))))
Lemma: uniform-continuity-from-fan3
∀[T:Type]
  ((∃P:ℕ ⟶ ℙ. ∃a:ℕ. (P[a] ∧ (∀n:ℕ. Dec(P[n])) ∧ (∃h:T ⟶ {n:ℕ| P[n]} . Bij(T;{n:ℕ| P[n]} h))))
  
⇒ (∀F:(ℕ ⟶ 𝔹) ⟶ T. ⇃(∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ T)))))
Definition: ucont
ucont(F;M) ==  eval K = FAN(λn,s. if M n s then tt else inr (λx.Ax)  fi ) in <K - 1, λ_,_,_. Ax>
Lemma: uniform-continuity-from-fan-ext
∀[T:Type]
  ∀F:(ℕ ⟶ 𝔹) ⟶ T
    (⇃(∃M:n:ℕ ⟶ (ℕn ⟶ 𝔹) ⟶ (T?) [(∀f:ℕ ⟶ 𝔹
                                       ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (T?)))
                                       ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (T?) supposing ↑isl(M n f))))])
    
⇒ ⇃(∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ T))))
Lemma: ucont_wf
∀[T:Type]. ∀[F:(ℕ ⟶ 𝔹) ⟶ T]. ∀[M:⇃(∃M:n:ℕ ⟶ (ℕn ⟶ 𝔹) ⟶ (T?) [(∀f:ℕ ⟶ 𝔹
                                                                     ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (T?)))
                                                                     ∧ (∀n:ℕ
                                                                          (M n f) = (inl (F f)) ∈ (T?) 
                                                                          supposing ↑isl(M n f))))])].
  (ucont(F;M) ∈ ⇃(∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ T))))
Lemma: strong-continuity2-implies-uniform-continuity
∀F:(ℕ ⟶ 𝔹) ⟶ 𝔹. ⇃(∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ F f = F g))
Lemma: strong-continuity2-implies-uniform-continuity-ext
∀F:(ℕ ⟶ 𝔹) ⟶ 𝔹. ⇃(∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ F f = F g))
Lemma: strong-continuity2-implies-uniform-continuity-nat
∀F:(ℕ ⟶ 𝔹) ⟶ ℕ. ⇃(∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ ℕ)))
Lemma: strong-continuity2-implies-uniform-continuity-nat-ext
∀F:(ℕ ⟶ 𝔹) ⟶ ℕ. ⇃(∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ ℕ)))
Lemma: general-cantor-to-int-uniform-continuity-half-squashed
∀B:ℕ ⟶ ℕ+. ∀F:(i:ℕ ⟶ ℕB[i]) ⟶ ℤ.  ⇃(∃n:ℕ. ∀f,g:i:ℕ ⟶ ℕB[i].  ((f = g ∈ (i:ℕn ⟶ ℕB[i])) 
⇒ ((F f) = (F g) ∈ ℤ)))
Lemma: strong-continuity2-implies-uniform-continuity-int
∀F:(ℕ ⟶ 𝔹) ⟶ ℤ. ⇃(∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ ℤ)))
Lemma: strong-continuity2-implies-uniform-continuity-int-ext
∀F:(ℕ ⟶ 𝔹) ⟶ ℤ. ⇃(∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ ℤ)))
Lemma: prop-truncation-implies
∀T:Type. ((∀a,b:T.  (a = b ∈ T)) 
⇒ ⇃(T) 
⇒ T)
Lemma: prop-truncation-quot
∀T:Type. (⇃(⇃(T)) 
⇒ ⇃(T))
Lemma: implies-prop-truncation
∀T:Type. (T 
⇒ ⇃(T))
Definition: ext2Cantor
ext2Cantor(n;f;d) ==  λx.if x <z n then f x else d fi 
Lemma: ext2Cantor_wf
∀[n:ℕ]. ∀[f:ℕn ⟶ 𝔹]. ∀[d:𝔹].  (ext2Cantor(n;f;d) ∈ ℕ ⟶ 𝔹)
Lemma: eq_ext2Cantor
∀n:ℕ. ∀s:ℕn ⟶ 𝔹. ∀d1,d2:𝔹.  (ext2Cantor(n;s;d1) = ext2Cantor(n;s;d2) ∈ (ℕn ⟶ 𝔹))
Lemma: fan+weak-continuity-implies-uniform-continuity
∀F:(ℕ ⟶ 𝔹) ⟶ ℕ. ⇃(∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ ℕ)))
Definition: uniform-continuity-pi
ucA(T;F;n) ==  ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ T))
Lemma: uniform-continuity-pi_wf
∀[T:Type]. ∀[F:(ℕ ⟶ 𝔹) ⟶ T]. ∀[n:ℕ].  (ucA(T;F;n) ∈ Type)
Definition: extl2Cantor
extl2Cantor(s;b) ==  λx.if x <z ||s|| then s[x] else b fi 
Lemma: extl2Cantor_wf
∀[s:𝔹 List]. ∀[b:𝔹].  (extl2Cantor(s;b) ∈ ℕ ⟶ 𝔹)
Lemma: ext2Cantor_eq
∀[s:𝔹 List]. ∀[d:𝔹].  (ext2Cantor(||s||;λx.s[x];d) = extl2Cantor(s;d) ∈ (ℕ ⟶ 𝔹))
Lemma: fun2listCantor
∀n:ℕ. ∀f:ℕn ⟶ 𝔹.  ∃l:𝔹 List. ((||l|| = n ∈ ℤ) ∧ (f = (λx.l[x]) ∈ (ℕn ⟶ 𝔹)))
Definition: uniform-continuity-pi2
ucB(T;F;n) ==  ∀s:ℕn ⟶ 𝔹. ((F ext2Cantor(n;s;tt)) = (F ext2Cantor(n;s;ff)) ∈ T)
Lemma: uniform-continuity-pi2_wf
∀[T:Type]. ∀[F:(ℕ ⟶ 𝔹) ⟶ T]. ∀[n:ℕ].  (ucB(T;F;n) ∈ Type)
Lemma: decidable__bool
Dec(𝔹)
Lemma: uniform-continuity-pi2-dec
∀T:Type. ∀F:(ℕ ⟶ 𝔹) ⟶ T. ∀n:ℕ.  ((∀x,y:T.  Dec(x = y ∈ T)) 
⇒ Dec(ucB(T;F;n)))
Lemma: uniform-continuity-pi2-dec-ext
∀T:Type. ∀F:(ℕ ⟶ 𝔹) ⟶ T. ∀n:ℕ.  ((∀x,y:T.  Dec(x = y ∈ T)) 
⇒ Dec(ucB(T;F;n)))
Lemma: uniform-continuity-pi-dec
∀T:Type. ∀F:(ℕ ⟶ 𝔹) ⟶ T. ∀n:ℕ.  ((∀x,y:T.  Dec(x = y ∈ T)) 
⇒ ucA(T;F;n) 
⇒ (∀m:ℕ. (m < n 
⇒ Dec(ucA(T;F;m)))))
Definition: uniform-continuity-pi-pi
ucpB(T;F;n) ==  ucA(T;F;n) × (∀i:ℕ. (ucA(T;F;i) 
⇒ (n ≤ i)))
Lemma: uniform-continuity-pi-pi_wf
∀[T:Type]. ∀[F:(ℕ ⟶ 𝔹) ⟶ T]. ∀[n:ℕ].  (ucpB(T;F;n) ∈ Type)
Lemma: uniform-continuity-pi-pi-prop
∀[T:Type]. ∀[F:(ℕ ⟶ 𝔹) ⟶ T]. ∀[n,m:ℕ].  (n = m ∈ ℕ) supposing (ucpB(T;F;m) and ucpB(T;F;n))
Definition: uniform-continuity-pi-search
uniform-continuity-pi-search(
G;
n;x)
==r if n ≤z x then n
    if isl(G x) then x
    else uniform-continuity-pi-search(
         G;
         n;x + 1)
    fi 
Lemma: uniform-continuity-pi-search_wf
∀[n:ℕ]. ∀[G:∀m:ℕn. (Top + Top)]. ∀[x:ℕ].  (uniform-continuity-pi-search(G;n;x) ∈ ℕ)
Lemma: uniform-continuity-pi-search-prop1
∀[n:ℕ]. ∀[P:ℕ ⟶ ℙ]. ∀[G:∀m:ℕn. Dec(P[m])]. ∀[x:ℕ].
  (uniform-continuity-pi-search(G;n;x) ∈ {k:{x..n + 1-}| P[k] ∧ (∀m:{x..k-}. (¬P[m]))} ) supposing ((x ≤ n) and (∃n:{x..\000Cn + 1-}. P[n]))
Lemma: uniform-continuity-pi-search-prop2
∀[n:ℕ]. ∀[P:ℕ ⟶ ℙ]. ∀[G:∀m:ℕn. Dec(P[m])]. ∀[x:ℕ].
  (uniform-continuity-pi-search(
   G;
   n;x) ∈ {k:{x..n + 1-}| P[k] ∧ (∀m:{x..k-}. (¬P[m])) ∧ (∀m:{x..n + 1-}. (P[m] 
⇒ (k ≤ m)))} ) supposing 
     ((x ≤ n) and 
     (∃n:{x..n + 1-}. P[n]))
Lemma: uniform-continuity-pi-pi-prop2
∀T:Type. ∀F:(ℕ ⟶ 𝔹) ⟶ T.  ((∀x,y:T.  Dec(x = y ∈ T)) 
⇒ (∃n:ℕ. ucpB(T;F;n) 
⇐⇒ ∃n:ℕ. ucA(T;F;n)))
Lemma: strong-continuity2-implies-uniform-continuity2
∀F:(ℕ ⟶ 𝔹) ⟶ 𝔹. ∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ F f = F g)
Lemma: strong-continuity2-implies-uniform-continuity2-int
∀F:(ℕ ⟶ 𝔹) ⟶ ℤ. ∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ ℤ))
Lemma: strong-continuity2-implies-uniform-continuity2-nat
∀F:(ℕ ⟶ 𝔹) ⟶ ℕ. ∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ ℕ))
Lemma: general-cantor-to-int-uniform-continuity
∀B:ℕ ⟶ ℕ+. ∀F:(k:ℕ ⟶ ℕB[k]) ⟶ ℤ.  ∃n:ℕ. ∀f,g:k:ℕ ⟶ ℕB[k].  ((f = g ∈ (k:ℕn ⟶ ℕB[k])) 
⇒ ((F f) = (F g) ∈ ℤ))
Lemma: cantor-to-int-uniform-continuity
∀F:(ℕ ⟶ 𝔹) ⟶ ℤ. ∃n:ℕ. ∀f,g:ℕ ⟶ 𝔹.  ((f = g ∈ (ℕn ⟶ 𝔹)) 
⇒ ((F f) = (F g) ∈ ℤ))
Lemma: cantor-to-int-bounded
∀F:(ℕ ⟶ 𝔹) ⟶ ℤ. ∃B:ℕ. ∀f:ℕ ⟶ 𝔹. (|F f| ≤ B)
Lemma: bounded-type-cantor
Bounded(ℕ ⟶ 𝔹)
Lemma: cantor-to-general-cantor
∀B:ℕ ⟶ ℕ+
  ∃f:(ℕ ⟶ 𝔹) ⟶ n:ℕ ⟶ ℕB[n]
   (Surj(ℕ ⟶ 𝔹;n:ℕ ⟶ ℕB[n];f)
   ∧ (∀k:ℕ. ∃j:ℕ. ∀p,q:ℕ ⟶ 𝔹.  ((p = q ∈ (ℕj ⟶ 𝔹)) 
⇒ ((f p) = (f q) ∈ (n:ℕk ⟶ ℕB[n])))))
Lemma: general-cantor-to-int-bounded
∀B:ℕ ⟶ ℕ+. ∀F:(n:ℕ ⟶ ℕB[n]) ⟶ ℤ.  ∃bnd:ℕ. ∀f:n:ℕ ⟶ ℕB[n]. (|F f| ≤ bnd)
Lemma: decidable-cantor-to-int
∀[R:ℤ ⟶ ℤ ⟶ ℙ]. ((∀x,y:ℤ.  Dec(R[x;y])) 
⇒ (∀F:(ℕ ⟶ 𝔹) ⟶ ℤ. Dec(∃f,g:ℕ ⟶ 𝔹. R[F f;F g])))
Lemma: decidable-cantor-to-int-ext
∀[R:ℤ ⟶ ℤ ⟶ ℙ]. ((∀x,y:ℤ.  Dec(R[x;y])) 
⇒ (∀F:(ℕ ⟶ 𝔹) ⟶ ℤ. Dec(∃f,g:ℕ ⟶ 𝔹. R[F f;F g])))
Definition: ext2Baire
ext2Baire(n;f;d) ==  λx.if x <z n then f x else d fi 
Lemma: ext2Baire_wf
∀[n:ℕ]. ∀[f:ℕn ⟶ ℕ]. ∀[d:ℕ].  (ext2Baire(n;f;d) ∈ ℕ ⟶ ℕ)
Lemma: weak-continuity-implies-strong1
(∀F:(ℕ ⟶ ℕ) ⟶ ℕ. ⇃(∃M:(ℕ ⟶ ℕ) ⟶ ℕ. ∀f,g:ℕ ⟶ ℕ.  ((f = g ∈ (ℕM f ⟶ ℕ)) 
⇒ ((F f) = (F g) ∈ ℕ))))
⇒ (∀F:(ℕ ⟶ ℕ) ⟶ ℕ
      ⇃(∃M:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ (ℕ?)
         ∀f:ℕ ⟶ ℕ
           ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (ℕ?))) ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (ℕ?) supposing ↑isl(M n f)))))
Lemma: weak-continuity-implies-strong-cantor
∀F:(ℕ ⟶ 𝔹) ⟶ ℕ
  ∃M:n:ℕ ⟶ (ℕn ⟶ 𝔹) ⟶ (ℕ?)
   ∀f:ℕ ⟶ 𝔹. ((∃n:ℕ. ((M n f) = (inl (F f)) ∈ (ℕ?))) ∧ (∀n:ℕ. (M n f) = (inl (F f)) ∈ (ℕ?) supposing ↑isl(M n f)))
Lemma: weak-continuity-implies-strong-cantor-unique
∀F:(ℕ ⟶ 𝔹) ⟶ ℕ
  ∃M:n:ℕ ⟶ (ℕn ⟶ 𝔹) ⟶ (ℕ?)
   ∀f:ℕ ⟶ 𝔹. ∃n:ℕ. (((M n f) = (inl (F f)) ∈ (ℕ?)) ∧ (∀m:ℕ. ((↑isl(M m f)) 
⇒ (m = n ∈ ℕ))))
Lemma: strong-continuity2-no-inner-squash-bound
∀F:(ℕ ⟶ ℕ) ⟶ ℕ
  ⇃(∃M:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ (ℕn?)
     ∀f:ℕ ⟶ ℕ
       ∃n:ℕ. (F f < n ∧ ((M n f) = (inl (F f)) ∈ (ℕ?)) ∧ (∀m:ℕ. ((↑isl(M m f)) 
⇒ ((M m f) = (inl (F f)) ∈ (ℕ?))))))
Definition: strong-continuity-test-bound
strong-continuity-test-bound(M;n;f;b) ==
  primrec(n;inr Ax λi,r. if i <z b then inr Ax  if (i =z b) then inl b if isl(M i f) then inr Ax  else r fi )
Lemma: strong-continuity-test-bound_wf
∀[T:Type]. ∀[M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (ℕn?)]. ∀[n:ℕ]. ∀[f:ℕn ⟶ T]. ∀[b:ℕn].  (strong-continuity-test-bound(M;n;f;b) ∈ ℕn?)
Lemma: strong-continuity-test-bound-unroll
∀[T:Type]. ∀[M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (ℕ?)]. ∀[n:ℕ]. ∀[f,b:Top].
  (strong-continuity-test-bound(M;n;f;b) ~ if (n =z 0) then inr Ax 
  if n - 1 <z b then inr Ax 
  if (n - 1 =z b) then inl b
  if isl(M (n - 1) f) then inr Ax 
  else strong-continuity-test-bound(M;n - 1;f;b)
  fi )
Lemma: strong-continuity-test-bound-prop1
∀[T:Type]. ∀[M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (ℕn?)]. ∀[n:ℕ]. ∀[f:ℕn ⟶ T]. ∀[b:ℕn].
  ((↑isl(strong-continuity-test-bound(M;n;f;b))) 
⇒ (strong-continuity-test-bound(M;n;f;b) = (inl b) ∈ (ℕn?)))
Lemma: strong-continuity-test-bound-prop2
∀[T:Type]. ∀[M:n:ℕ ⟶ (ℕn ⟶ T) ⟶ (ℕn?)]. ∀[n:ℕ]. ∀[f:ℕn ⟶ T]. ∀[b:ℕn].
  ((↑isl(strong-continuity-test-bound(M;n;f;b))) 
⇒ (∀i:ℕ. (b < i 
⇒ i < n 
⇒ (↑isr(M i f)))))
Lemma: strong-continuity-test-bound-prop3
∀[M:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ (ℕn?)]. ∀[n,m:ℕ]. ∀[f:ℕ ⟶ ℕ]. ∀[b:ℕn].
  (b < m
  
⇒ (↑isl(M n f))
  
⇒ (↑isl(M m f))
  
⇒ (↑isl(strong-continuity-test-bound(M;n;f;b)))
  
⇒ (↑isl(strong-continuity-test-bound(M;m;f;b)))
  
⇒ (m = n ∈ ℕ))
Lemma: strong-continuity-test-bound-prop4
∀M:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ (ℕn?). ∀n:ℕ. ∀f:ℕn ⟶ ℕ. ∀b:ℕn.
  ((↑isr(strong-continuity-test-bound(M;n;f;b)))
  
⇒ (∃m:ℕ. (b < m ∧ m < n ∧ (↑isl(M m f)) ∧ (↑isl(strong-continuity-test-bound(M;m;f;b))))))
Lemma: strong-continuity2-no-inner-squash-unique-bound
∀F:(ℕ ⟶ ℕ) ⟶ ℕ
  ⇃(∃M:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ (ℕn?)
     ∀f:ℕ ⟶ ℕ. ∃n:ℕ. (F f < n ∧ ((M n f) = (inl (F f)) ∈ (ℕ?)) ∧ (∀m:ℕ. ((↑isl(M m f)) 
⇒ (m = n ∈ ℕ)))))
Lemma: monotone-bar-induction1
∀[B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ].
  ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ (∀m:ℕ. B[n + 1;s.m@n])))
  
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ (↓Q[n;s])))
  
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. (↓Q[n + 1;s.m@n])) 
⇒ (↓Q[n;s])))
  
⇒ (∀alpha:ℕ ⟶ ℕ. ∃m:ℕ. B[m;alpha])
  
⇒ (↓Q[0;λx.⊥]))
Lemma: monotone-bar-induction2
∀B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ.
  ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ (∀m:ℕ. B[n + 1;s.m@n])))
  
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ ⇃(Q[n;s])))
  
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. ⇃(Q[n + 1;s.m@n])) 
⇒ ⇃(Q[n;s])))
  
⇒ (∀alpha:ℕ ⟶ ℕ. ∃m:ℕ. B[m;alpha])
  
⇒ ⇃(Q[0;λx.⊥]))
Lemma: strong-continuity-implies1-sp
∀[F:(ℕ ⟶ ℕ) ⟶ ℕ]. (↓∃M:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ (ℕ?). ∀f:ℕ ⟶ ℕ. (↓∃n:ℕ. ((M n f) = (inl (F f)) ∈ (ℕ?))))
Definition: strong-continuity-test-sp
strong-continuity-test-sp(M;n;f;k) ==
  primrec(n;inl k;λi,r. case M i f of inl(m) => if (m =z k) then inr Ax  else r fi  | inr(x) => r)
Lemma: strong-continuity-test-sp_wf
∀[M:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ (ℕ?)]. ∀[n:ℕ]. ∀[f:ℕn ⟶ ℕ]. ∀[k:ℕ].  (strong-continuity-test-sp(M;n;f;k) ∈ ℕ?)
Lemma: quot-implies-squash
∀P:ℙ. (⇃(P) 
⇒ (↓P))
Lemma: all-quotient-dependent
∀T:Type
  (canonicalizable(T)
  
⇒ (∀S:T ⟶ ℙ. ∀E:t:T ⟶ S[t] ⟶ S[t] ⟶ ℙ.
        ((∀t:T. EquivRel(S t;a,b.E[t;a;b]))
        
⇒ (∀t:T. (x,y:S[t]//E[t;x;y]) 
⇐⇒ f,g:∀t:T. S[t]//dep-fun-equiv(T;t,x,y.↓E[t;x;y];f;g)))))
Lemma: all-quotient
∀T:Type
  (canonicalizable(T)
  
⇒ (∀S:Type. ∀E:S ⟶ S ⟶ ℙ.
        (EquivRel(S;a,b.E[a;b]) 
⇒ (∀t:T. (x,y:S//E[x;y]) 
⇐⇒ f,g:∀t:T. S//fun-equiv(T;a,b.↓E[a;b];f;g)))))
Lemma: all-quotient-true
∀T:Type. (⇃(canonicalizable(T)) 
⇒ (∀P:T ⟶ ℙ. (∀t:T. ⇃(P[t]) 
⇐⇒ ⇃(∀t:T. P[t]))))
Lemma: all-quotient-true2
∀T:Type. ((T ⊆r Base) 
⇒ (∀P:T ⟶ ℙ. (∀t:T. ⇃(P[t]) 
⇐⇒ ⇃(∀t:T. P[t]))))
Lemma: all-quotient-true3
∀T:Type. (canonicalizable(T) 
⇒ (∀P:T ⟶ ℙ. (∀t:T. ⇃(P[t]) 
⇐⇒ ⇃(∀t:T. P[t]))))
Definition: choice-principle
If P is a family of propositions (i.e. types) indexed by type T,
then for each t:T, P[t] is a type.
The type ∀t:T. P[t] is by definition the dependent function type
   t:T ⟶ P[t]
One way to say that a type A is inhabited is the "truncation" 
or "half squash" ⇃(A) which is the quotient A//True.
The choice principle for T says that every P[t] is inhabited
if and only if the function type t:T ⟶ P[t] is inhabited.
We prove that ChoicePrinciple(T) 
⇐⇒ ⇃(canonicalizable(T))
(see choice-iff-canonicalizable).
Therefore we can prove ChoicePrinciple(ℕ) and ChoicePrinciple(ℕ ⟶ ℕ)
but we can also prove ¬ChoicePrinciple((ℕ ⟶ ℕ) ⟶ ℕ)
(see not-choice-baire-to-nat).
So the choice principle is true for type 0 and type 1 but false for type 2.⋅
ChoicePrinciple(T) ==  ∀P:T ⟶ ℙ. (∀t:T. ⇃(P[t]) 
⇐⇒ ⇃(∀t:T. P[t]))
Lemma: choice-principle_wf
∀[T:Type]. (ChoicePrinciple(T) ∈ 𝕌')
Lemma: choice-iff-canonicalizable
∀T:Type. (ChoicePrinciple(T) 
⇐⇒ ⇃(canonicalizable(T)))
Definition: truth
Truth ==  P,Q:ℙ//(P 
⇐⇒ Q)
Lemma: truth_wf
Truth ∈ 𝕌'
Lemma: axiom-choice-quot
∀T:Type
  (⇃(canonicalizable(T)) 
⇒ (∀X:Type. ∀P:T ⟶ X ⟶ ℙ.  ((∀f:T. ⇃(∃m:X. (P f m))) 
⇒ ⇃(∃F:T ⟶ X. ∀f:T. (P f (F f))))))
Lemma: axiom-choice-quot-alt-proof
∀T:Type
  (⇃(canonicalizable(T)) 
⇒ (∀X:Type. ∀P:T ⟶ X ⟶ ℙ.  ((∀f:T. ⇃(∃m:X. (P f m))) 
⇒ ⇃(∃F:T ⟶ X. ∀f:T. (P f (F f))))))
Lemma: axiom-choice-C0
∀P:n:ℕ ⟶ (ℕn ⟶ 𝔹) ⟶ ℙ. ((∀f:ℕ ⟶ 𝔹. ⇃(∃m:ℕ. (P m f))) 
⇒ ⇃(∃F:(ℕ ⟶ 𝔹) ⟶ ℕ. ∀f:ℕ ⟶ 𝔹. (P (F f) f)))
Lemma: axiom-choice-0X-quot
∀B:{B:Type| B ⊆r Base} . ∀X:Type. ∀P:B ⟶ X ⟶ ℙ.  ((∀n:B. ⇃(∃m:X. (P n m))) 
⇒ ⇃(∃f:B ⟶ X. ∀n:B. (P n (f n))))
Lemma: axiom-choice-1X-quot
∀X:Type. ∀P:(ℕ ⟶ ℕ) ⟶ X ⟶ ℙ.  ((∀f:ℕ ⟶ ℕ. ⇃(∃m:X. (P f m))) 
⇒ ⇃(∃F:(ℕ ⟶ ℕ) ⟶ X. ∀f:ℕ ⟶ ℕ. (P f (F f))))
Lemma: axiom-choice-00-quot
∀P:ℕ ⟶ ℕ ⟶ ℙ. ((∀n:ℕ. ⇃(∃m:ℕ. (P n m))) 
⇒ ⇃(∃f:ℕ ⟶ ℕ. ∀n:ℕ. (P n (f n))))
Lemma: choice-nat
ChoicePrinciple(ℕ)
Lemma: choice-baire
ChoicePrinciple(ℕ ⟶ ℕ)
Lemma: not-choice-baire-to-nat
¬ChoicePrinciple((ℕ ⟶ ℕ) ⟶ ℕ)
Lemma: not-choice-baire-to-nat-ssq
¬(∀P:((ℕ ⟶ ℕ) ⟶ ℕ) ⟶ ℙ. (∀t:(ℕ ⟶ ℕ) ⟶ ℕ. (↓P[t]) 
⇐⇒ ↓∀t:(ℕ ⟶ ℕ) ⟶ ℕ. P[t]))
Lemma: not-canonicalizable-baire-to-nat
¬⇃(canonicalizable((ℕ ⟶ ℕ) ⟶ ℕ))
Lemma: not-canonicalizable-implies-subtype-base
¬(∀[T:Type]. (canonicalizable(T) 
⇒ (T ⊆r Base)))
Lemma: notAC20
∀T:Type
  (⇃T
  
⇒ (¬(∀P:((ℕ ⟶ ℕ) ⟶ ℕ) ⟶ T ⟶ ℙ
          ((∀n:(ℕ ⟶ ℕ) ⟶ ℕ. ⇃∃m:T. (P n m)) 
⇒ ⇃∃f:((ℕ ⟶ ℕ) ⟶ ℕ) ⟶ T. ∀n:(ℕ ⟶ ℕ) ⟶ ℕ. (P n (f n))))))
Lemma: notAC20-ssq
∀T:Type
  ((↓T)
  
⇒ (¬(∀P:((ℕ ⟶ ℕ) ⟶ ℕ) ⟶ T ⟶ ℙ
          ((∀n:(ℕ ⟶ ℕ) ⟶ ℕ. (↓∃m:T. (P n m))) 
⇒ (↓∃f:((ℕ ⟶ ℕ) ⟶ ℕ) ⟶ T. ∀n:(ℕ ⟶ ℕ) ⟶ ℕ. (P n (f n)))))))
Lemma: strong-continuity-rel
∀P:(ℕ ⟶ ℕ) ⟶ ℕ ⟶ ℙ. ∀F:∀f:ℕ ⟶ ℕ. ⇃(∃n:ℕ. (P f n)).
  ⇃(∃M:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ (ℕn?)
     ∀f:ℕ ⟶ ℕ
       ∃n:ℕ. ∃k:ℕn. ((P f k) ∧ ((M n f) = (inl k) ∈ (ℕ?)) ∧ (∀m:ℕ. ((↑isl(M m f)) 
⇒ ((M m f) = (inl k) ∈ (ℕ?))))))
Lemma: weak-continuity-rel
∀P:(ℕ ⟶ ℕ) ⟶ ℕ ⟶ ℙ
  ((∀f:ℕ ⟶ ℕ. ⇃(∃n:ℕ. (P f n))) 
⇒ (∀f:ℕ ⟶ ℕ. ⇃(∃n,k:ℕ. ∀g:ℕ ⟶ ℕ. ((f = g ∈ (ℕk ⟶ ℕ)) 
⇒ (P g n)))))
Lemma: weak-continuity-rel-fun
∀P:(ℕ ⟶ ℕ) ⟶ ℙ. ((∀f:ℕ ⟶ ℕ. ⇃(P f)) 
⇒ (∀f:ℕ ⟶ ℕ. ⇃(∃k:ℕ. ∀g:ℕ ⟶ ℕ. ((f = g ∈ (ℕk ⟶ ℕ)) 
⇒ (P g)))))
Lemma: strong-continuity-rel-unique
∀P:(ℕ ⟶ ℕ) ⟶ ℕ ⟶ ℙ. ∀F:∀f:ℕ ⟶ ℕ. ⇃(∃n:ℕ. (P f n)).
  ⇃(∃M:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ (ℕn?)
     ∀f:ℕ ⟶ ℕ. ∃n:ℕ. ∃k:ℕn. ((P f k) ∧ ((M n f) = (inl k) ∈ (ℕ?)) ∧ (∀m:ℕ. ((↑isl(M m f)) 
⇒ (m = n ∈ ℕ)))))
Lemma: strong-continuity-rel-unique-pair
∀P:(ℕ ⟶ ℕ) ⟶ ℕ ⟶ ℙ. ∀F:∀f:ℕ ⟶ ℕ. ⇃(∃n:ℕ. (P f n)).
  ⇃(∃M:n:ℕ ⟶ s:(ℕn ⟶ ℕ) ⟶ (k:ℕn × (P ext2Baire(n;s;0) k)?)
     ∀f:ℕ ⟶ ℕ
       ∃n:ℕ
        ∃k:ℕn
         ∃p:P ext2Baire(n;f;0) k
          (((M n f) = (inl <k, p>) ∈ (k:ℕn × (P ext2Baire(n;f;0) k)?)) ∧ (∀m:ℕ. ((↑isl(M m f)) 
⇒ (m = n ∈ ℕ)))))
Lemma: seq-adjoin-is-seq-add
∀[n:ℕ]. ∀[s:ℕn ⟶ ℕ]. ∀[m:ℕ].  (s.m@n = s++m ∈ (ℕn + 1 ⟶ ℕ))
Lemma: seq-append0-left
∀[t:Top]. ∀[m:ℕ]. ∀[f:ℕm ⟶ ℕ].  (seq-append(0;m;t;f) = f ∈ (ℕm ⟶ ℕ))
Lemma: seq-append-bar
∀k:ℕ. ∀s:ℕk ⟶ ℕ. ∀x:ℕ. ∀Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ.
  ((∀f:ℕ ⟶ ℕ. ∃n:ℕ. ∀m:{n...}. Q[m + k;seq-append(k;m;s;f)])
  
⇒ (∀f:ℕ ⟶ ℕ. ∃n:ℕ. ∀m:{n...}. Q[m + k;seq-append(k + 1;m;s.x@k;f)]))
Lemma: monotone-bar-induction3
∀B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ.
  ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ (∀m:ℕ. B[n + 1;s.m@n])))
  
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ ⇃(Q[n;s])))
  
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. ⇃(Q[n + 1;s.m@n])) 
⇒ ⇃(Q[n;s])))
  
⇒ (∀alpha:ℕ ⟶ ℕ. ⇃(∃m:ℕ. B[m;alpha]))
  
⇒ ⇃(Q[0;λx.⊥]))
Lemma: monotone-bar-induction3-2
∀B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ.
  ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ (∀m:ℕ. B[n + 1;s.m@n])))
  
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ Q[n;s]))
  
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. Q[n + 1;s.m@n]) 
⇒ Q[n;s]))
  
⇒ (∀alpha:ℕ ⟶ ℕ. ⇃(∃m:ℕ. B[m;alpha]))
  
⇒ ⇃(Q[0;λx.⊥]))
Lemma: monotone-bar-induction4
∀B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ.
  ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ ⇃(Q[n;s])))
  
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. ⇃(Q[n + 1;s.m@n])) 
⇒ ⇃(Q[n;s])))
  
⇒ (∀alpha:ℕ ⟶ ℕ
        ⇃(∃n:ℕ. (B[n;alpha] ∧ (∀m:{n...}. ∀s:ℕm ⟶ ℕ.  ((alpha = s ∈ (ℕm ⟶ ℕ)) 
⇒ B[m;s] 
⇒ (∀k:ℕ. B[m + 1;s.k@m]))))))
  
⇒ ⇃(Q[0;λx.⊥]))
Lemma: monotone-bar-induction5
∀B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ.
  ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ ⇃(Q[n;s])))
  
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. ⇃(Q[n + 1;s.m@n])) 
⇒ ⇃(Q[n;s])))
  
⇒ (∀alpha:ℕ ⟶ ℕ. ⇃(∃n:ℕ. (B[n;alpha] ∧ (∀m:{n...}. (B[m;alpha] 
⇒ B[m + 1;alpha])))))
  
⇒ ⇃(Q[0;λx.⊥]))
Lemma: monotone-bar-induction6
∀B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ.
  ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ ⇃(Q[n;s])))
  
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. ⇃(Q[n + 1;s.m@n])) 
⇒ ⇃(Q[n;s])))
  
⇒ (∀alpha:ℕ ⟶ ℕ. ⇃(∃n:ℕ. (B[n;alpha] ∧ (∀m:{n...}. B[m;alpha]))))
  
⇒ ⇃(Q[0;λx.⊥]))
Lemma: monotone-bar-induction7
∀B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ.
  ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. ⇃(Q[n + 1;s.m@n])) 
⇒ ⇃(Q[n;s])))
  
⇒ (∀alpha:ℕ ⟶ ℕ. ⇃(∃n:ℕ. (B[n;alpha] ∧ (∀m:{n...}. (B[m;alpha] ∧ ⇃(Q[m;alpha]))))))
  
⇒ ⇃(Q[0;λx.⊥]))
Lemma: monotone-bar-induction8
∀Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ
  ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. ⇃(Q[n + 1;s.m@n])) 
⇒ ⇃(Q[n;s])))
  
⇒ (∀f:ℕ ⟶ ℕ. ⇃(∃n:ℕ. ∀m:{n...}. ⇃(Q[m;f])))
  
⇒ ⇃(Q[0;λx.⊥]))
Lemma: monotone-bar-induction8-2
∀Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ
  ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. Q[n + 1;s.m@n]) 
⇒ Q[n;s])) 
⇒ (∀f:ℕ ⟶ ℕ. ⇃(∃n:ℕ. ∀m:{n...}. Q[m;f])) 
⇒ ⇃(Q[0;λx.⊥]))
Definition: rep-seq-from
rep-seq-from(s;n;f) ==  λx.if (x) < (n)  then s x  else (f x)
Lemma: rep-seq-from_wf
∀[T:Type]. ∀[n:ℕ]. ∀[s:ℕn ⟶ T]. ∀[f:ℕ ⟶ T].  (rep-seq-from(s;n;f) ∈ ℕ ⟶ T)
Lemma: rep-seq-from-0
∀[T:Type]. ∀[s:ℕ0 ⟶ T]. ∀[f:ℕ ⟶ T].  (rep-seq-from(s;0;f) = f ∈ (ℕ ⟶ T))
Lemma: rep-seq-from-prop1
∀[T:Type]. ∀[n:ℕ]. ∀[s:ℕn ⟶ T]. ∀[f:ℕ ⟶ T]. ∀[m:{n...}].  (rep-seq-from(s;m;f) = s ∈ (ℕn ⟶ T))
Lemma: rep-seq-from-prop2
∀[T:Type]. ∀[n:ℕ]. ∀[s:ℕn ⟶ T]. ∀[f:ℕ ⟶ T]. ∀[m:ℕ].  (rep-seq-from(s.f m@m;m + 1;f) = rep-seq-from(s;m;f) ∈ (ℕn ⟶ T))
Lemma: rep-seq-from-prop3
∀[T:Type]. ∀[n:ℕ]. ∀[s:ℕn ⟶ T]. ∀[f:ℕ ⟶ T].  (rep-seq-from(s.f n@n;n + 1;f) = rep-seq-from(s;n;f) ∈ (ℕ ⟶ T))
Lemma: unsquashed-monotone-bar-induction8-false
¬(∀Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ
    ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. Q[n + 1;s.m@n]) 
⇒ Q[n;s])) 
⇒ (∀f:ℕ ⟶ ℕ. ⇃(∃n:ℕ. ∀m:{n...}. Q[m;f])) 
⇒ Q[0;λx.⊥]))
Lemma: unsquashed-monotone-bar-induction8-false3
¬(∀B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ.
    ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. Q[n + 1;s.m@n]) 
⇒ Q[n;s]))
    
⇒ (∀f:ℕ ⟶ ℕ. ⇃(∃n:ℕ. ∀m:{n...}. B[m;f]))
    
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ Q[n;s]))
    
⇒ Q[0;λx.⊥]))
Lemma: unsquashed-BIM-implies-unsquashed-weak-continuity-old
(∀B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ.
   ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. Q[n + 1;s.m@n]) 
⇒ Q[n;s]))
   
⇒ (∀f:ℕ ⟶ ℕ. ⇃(∃n:ℕ. Q[n;f]))
   
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ. ∀m:ℕ.  (B[n;s] 
⇒ B[n + 1;s.m@n]))
   
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ Q[n;s]))
   
⇒ Q[0;λx.⊥]))
⇒ (∀F:(ℕ ⟶ ℕ) ⟶ ℕ. ∀a:ℕ ⟶ ℕ.  ∃n:ℕ. ∀b:ℕ ⟶ ℕ. ((∀i:ℕn. ((a i) = (b i) ∈ ℕ)) 
⇒ ((F a) = (F b) ∈ ℕ)))
Lemma: unsquashed-BIM-implies-unsquashed-weak-continuity
(∀B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ.
   ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. Q[n + 1;s.m@n]) 
⇒ Q[n;s]))
   
⇒ (∀f:ℕ ⟶ ℕ. ⇃(∃n:ℕ. B[n;f]))
   
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ. ∀m:ℕ.  (B[n;s] 
⇒ B[n + 1;s.m@n]))
   
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ Q[n;s]))
   
⇒ Q[0;λx.⊥]))
⇒ (∀F:(ℕ ⟶ ℕ) ⟶ ℕ. ∀a:ℕ ⟶ ℕ.  ∃n:ℕ. ∀b:ℕ ⟶ ℕ. ((∀i:ℕn. ((a i) = (b i) ∈ ℕ)) 
⇒ ((F a) = (F b) ∈ ℕ)))
Lemma: unsquashed-monotone-bar-induction3-false
¬(∀B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ.
    ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. Q[n + 1;s.m@n]) 
⇒ Q[n;s]))
    
⇒ (∀f:ℕ ⟶ ℕ. ⇃(∃n:ℕ. B[n;f]))
    
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ. ∀m:ℕ.  (B[n;s] 
⇒ B[n + 1;s.m@n]))
    
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ Q[n;s]))
    
⇒ Q[0;λx.⊥]))
Lemma: unsquashed-BIM-false
¬(∀B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ.
    ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. Q[n + 1;s.m@n]) 
⇒ Q[n;s]))
    
⇒ (∀f:ℕ ⟶ ℕ. ⇃(∃n:ℕ. B[n;f]))
    
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ. ∀m:ℕ.  (B[n;s] 
⇒ B[n + 1;s.m@n]))
    
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ Q[n;s]))
    
⇒ Q[0;λx.⊥]))
Lemma: seq-add-same
∀[f:ℕ ⟶ ℕ]. ∀[n:ℕ].  (f.f n@n = f ∈ (ℕ ⟶ ℕ))
Lemma: monotone-bar-induction8-implies-3
(∀Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ
   ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. ⇃(Q[n + 1;s.m@n])) 
⇒ ⇃(Q[n;s])))
   
⇒ (∀f:ℕ ⟶ ℕ. ⇃(∃n:ℕ. ∀m:{n...}. ⇃(Q[m;f])))
   
⇒ ⇃(Q[0;λx.⊥])))
⇒ (∀B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ.
      ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ (∀m:ℕ. B[n + 1;s.m@n])))
      
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ ⇃(Q[n;s])))
      
⇒ (∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. ⇃(Q[n + 1;s.m@n])) 
⇒ ⇃(Q[n;s])))
      
⇒ (∀alpha:ℕ ⟶ ℕ. ⇃(∃m:ℕ. B[m;alpha]))
      
⇒ ⇃(Q[0;λx.⊥])))
Lemma: not-decidable-zero-sequence
¬(∀s:ℕ ⟶ ℕ. ((s = (λx.0) ∈ (ℕ ⟶ ℕ)) ∨ (¬(s = (λx.0) ∈ (ℕ ⟶ ℕ)))))
Lemma: not-excluded-middle-thru-continuity
¬(∀P:ℙ. (P ∨ (¬P)))
Lemma: extended-fan-theorem
∀C:ℕ ⟶ (ℕ ⟶ 𝔹) ⟶ ℙ
  ((∀a:ℕ ⟶ 𝔹. ∃n:ℕ. (C n a)) 
⇒ ⇃(∃m:ℕ. ∀a:ℕ ⟶ 𝔹. ∃n:ℕ. ∀b:ℕ ⟶ 𝔹. ((a = b ∈ (ℕm ⟶ 𝔹)) 
⇒ (C n b))))
Lemma: extended-fan-theorem2
∀C:ℕ ⟶ (ℕ ⟶ 𝔹) ⟶ ℙ. ∀F:∀a:ℕ ⟶ 𝔹. ∃n:ℕ. (C n a).  ⇃(∃m:ℕ. ∀a,b:ℕ ⟶ 𝔹.  ((a = b ∈ (ℕm ⟶ 𝔹)) 
⇒ (C (fst((F a))) b)))
Definition: enum-fin-seq
enum-fin-seq(m) ==  primrec(m;[λx.tt];λi,r. (map(λs,x. if x=i then tt else (s x);r) @ map(λs,x. if x=i then ff else (s x\000C);r)))
Lemma: enum-fin-seq_wf
∀[m:ℕ]. (enum-fin-seq(m) ∈ ℕ ⟶ 𝔹 List(2^m))
Lemma: enum-fin-seq-true
∀m:ℕ. ((λx.tt) = enum-fin-seq(m)[0] ∈ (ℕ ⟶ 𝔹))
Definition: enum-fin-seq-max
enum-fin-seq-max(M;m) ==  imax-list(map(λs.(M s);enum-fin-seq(m)))
Lemma: enum-fin-seq-max_wf
∀[M:(ℕ ⟶ 𝔹) ⟶ ℕ]. ∀[m:ℕ].  (enum-fin-seq-max(M;m) ∈ ℕ)
Definition: enum-fin-seq-max2
enum-fin-seq-max2(M;m) ==  imax-list(map(λs.case M m s of inl(k) => k + 1 | inr(x) => 0;enum-fin-seq(m)))
Lemma: enum-fin-seq-max2_wf
∀[M:n:ℕ ⟶ (ℕn ⟶ 𝔹) ⟶ (ℕ?)]. ∀[m:ℕ].  (enum-fin-seq-max2(M;m) ∈ ℕ)
Definition: replace-seq-from
replace-seq-from(s;n;k) ==  λx.if (x) < (n)  then s x  else k
Lemma: replace-seq-from_wf
∀[T:Type]. ∀[s:ℕ ⟶ T]. ∀[n:ℕ]. ∀[k:T].  (replace-seq-from(s;n;k) ∈ ℕ ⟶ T)
Lemma: replace-seq-from-succ
∀T:Type. ∀f:ℕ ⟶ T. ∀m:ℕ. ∀k:T.
  (0 < m 
⇒ (replace-seq-from(f;m;k) = (λx.if x=m - 1 then f x else (replace-seq-from(f;m - 1;k) x)) ∈ (ℕ ⟶ T)))
Lemma: implies_l_member_append
∀T:Type. ∀l1,l2:T List. ∀v:T.  (((v ∈ l1) ∨ (v ∈ l2)) 
⇒ (v ∈ l1 @ l2))
Lemma: replace-seq-from-member-enum
∀f:ℕ ⟶ 𝔹. ∀m:ℕ.  (replace-seq-from(f;m;tt) ∈ enum-fin-seq(m))
Lemma: imax-list-strict-ub
∀L:ℤ List. ∀a:ℤ.  a < imax-list(L) 
⇐⇒ (∃b∈L. a < b) supposing 0 < ||L||
Comment: Veldman-Bezem-Ramsey doc
The paper 
"Ramsey's Theorem and the Pigeonhole Principle in Intuitionistic Mathematics"
by Veldman & Bezem   uses bar induction on monotone bars to prove
a version of Ramsey's theorem.
We give a formalization of those results in Nuprl.⋅
Definition: strict-inc
StrictInc ==  {s:ℕ ⟶ ℕ| ∀j:ℕ. ∀i:ℕj.  s i < s j} 
Lemma: strict-inc_wf
StrictInc ∈ Type
Lemma: strict-inc-subtype
∀m:ℕ. (StrictInc ⊆r {s:ℕm ⟶ ℕ| strictly-increasing-seq(m;s)} )
Lemma: implies-strict-inc
∀[f:ℕ ⟶ ℕ]. f ∈ StrictInc supposing ∀i:ℕ. f i < f (i + 1)
Lemma: strict-inc-lower-bound
∀[f:StrictInc]. ∀[i:ℕ].  (i ≤ (f i))
Lemma: compose-strict-inc
∀s,f:StrictInc.  (s o f ∈ StrictInc)
Definition: make-strict
make-strict(alpha) ==  λi.primrec(i;alpha 0;λi',v. if v <z alpha (i' + 1) then alpha (i' + 1) else v + 1 fi )
Lemma: make-strict_wf
∀[alpha:ℕ ⟶ ℕ]. (make-strict(alpha) ∈ StrictInc)
Lemma: make-strict-agrees
∀[alpha:ℕ ⟶ ℕ]. ∀[n:ℕ].  ∀[i:ℕn]. ((make-strict(alpha) i) = (alpha i) ∈ ℤ) supposing strictly-increasing-seq(n;alpha)
Lemma: monotone-bar-induction-strict
∀[B,Q:n:ℕ ⟶ {s:ℕn ⟶ ℕ| strictly-increasing-seq(n;s)}  ⟶ ℙ].
  ((∀n:ℕ. ∀s:{s:ℕn ⟶ ℕ| strictly-increasing-seq(n;s)} .
      (B[n;s] 
⇒ (∀m:ℕ. (strictly-increasing-seq(n + 1;s.m@n) 
⇒ B[n + 1;s.m@n]))))
  
⇒ (∀n:ℕ. ∀s:{s:ℕn ⟶ ℕ| strictly-increasing-seq(n;s)} .  (B[n;s] 
⇒ (↓Q[n;s])))
  
⇒ (∀n:ℕ. ∀s:{s:ℕn ⟶ ℕ| strictly-increasing-seq(n;s)} .
        ((∀m:ℕ. (strictly-increasing-seq(n + 1;s.m@n) 
⇒ (↓Q[n + 1;s.m@n]))) 
⇒ (↓Q[n;s])))
  
⇒ (∀alpha:StrictInc. ∃m:ℕ. B[m;alpha])
  
⇒ (↓Q[0;λx.⊥]))
Lemma: monotone-bar-induction-strict2
∀B,Q:n:ℕ ⟶ {s:ℕn ⟶ ℕ| strictly-increasing-seq(n;s)}  ⟶ ℙ.
  ((∀n:ℕ. ∀s:{s:ℕn ⟶ ℕ| strictly-increasing-seq(n;s)} .
      (B[n;s] 
⇒ (∀m:ℕ. (strictly-increasing-seq(n + 1;s.m@n) 
⇒ B[n + 1;s.m@n]))))
  
⇒ (∀n:ℕ. ∀s:{s:ℕn ⟶ ℕ| strictly-increasing-seq(n;s)} .  (B[n;s] 
⇒ ⇃(Q[n;s])))
  
⇒ (∀n:ℕ. ∀s:{s:ℕn ⟶ ℕ| strictly-increasing-seq(n;s)} .
        ((∀m:ℕ. (strictly-increasing-seq(n + 1;s.m@n) 
⇒ ⇃(Q[n + 1;s.m@n]))) 
⇒ ⇃(Q[n;s])))
  
⇒ (∀alpha:StrictInc. ∃m:ℕ. B[m;alpha])
  
⇒ ⇃(Q[0;λx.⊥]))
Lemma: monotone-bar-induction-strict3
∀B,Q:n:ℕ ⟶ {s:ℕn ⟶ ℕ| strictly-increasing-seq(n;s)}  ⟶ ℙ.
  ((∀n:ℕ. ∀s:{s:ℕn ⟶ ℕ| strictly-increasing-seq(n;s)} .
      (B[n;s] 
⇒ (∀m:ℕ. (strictly-increasing-seq(n + 1;s.m@n) 
⇒ B[n + 1;s.m@n]))))
  
⇒ (∀n:ℕ. ∀s:{s:ℕn ⟶ ℕ| strictly-increasing-seq(n;s)} .  (B[n;s] 
⇒ ⇃(Q[n;s])))
  
⇒ (∀n:ℕ. ∀s:{s:ℕn ⟶ ℕ| strictly-increasing-seq(n;s)} .
        ((∀m:ℕ. (strictly-increasing-seq(n + 1;s.m@n) 
⇒ ⇃(Q[n + 1;s.m@n]))) 
⇒ ⇃(Q[n;s])))
  
⇒ (∀alpha:StrictInc. ⇃(∃m:ℕ. B[m;alpha]))
  
⇒ ⇃(Q[0;λx.⊥]))
Lemma: not-not-Ramsey
∀[R:ℕ ⟶ ℕ ⟶ ℙ]. (¬(∀s:StrictInc. ∃n:ℕ. (¬homogeneous(R;n;s))))
Lemma: unary-strong-almost-full-has-strict-inc
∀[A:ℕ ⟶ ℙ]. ((∀s:StrictInc. ∃n:ℕ. A[s n]) 
⇒ (∃s:StrictInc. ∀n:ℕ. A[s n]))
Lemma: unary-almost-full-has-strict-inc
∀A:ℕ ⟶ ℙ. ((∀s:StrictInc. ⇃(∃n:ℕ. A[s n])) 
⇒ ⇃(∃s:StrictInc. ∀n:ℕ. A[s n]))
Lemma: intuitionistic-pigeonhole1
∀[A,B:ℕ ⟶ ℙ].
  ((∀s:StrictInc. ∃n:ℕ. A[s n]) 
⇒ (∀s:StrictInc. ∃n:ℕ. B[s n]) 
⇒ (∀s:StrictInc. ∃n:ℕ. (A[s n] ∧ B[s n])))
Lemma: intuitionistic-pigeonhole
∀A,B:ℕ ⟶ ℙ.
  ((∀s:StrictInc. ⇃(∃n:ℕ. A[s n])) 
⇒ (∀s:StrictInc. ⇃(∃n:ℕ. B[s n])) 
⇒ (∀s:StrictInc. ⇃(∃n:ℕ. (A[s n] ∧ B[s n]))))
Definition: u-almost-full
u-almost-full(n.A[n]) ==  ∀s:StrictInc. ⇃(∃n:ℕ. A[s n])
Lemma: u-almost-full_wf
∀[A:ℕ ⟶ ℙ]. (u-almost-full(n.A[n]) ∈ ℙ)
Lemma: u-almost-full-filter
∀A,B:ℕ ⟶ ℙ.
  ((u-almost-full(n.A[n]) 
⇒ u-almost-full(n.B[n]) 
⇒ u-almost-full(n.A[n] ∧ B[n]))
  ∧ ((∀n:ℕ. (A[n] 
⇒ B[n])) 
⇒ u-almost-full(n.A[n]) 
⇒ u-almost-full(n.B[n]))
  ∧ u-almost-full(n.True))
Lemma: u-almost-full-finite-intersection
∀k:ℕ. ∀A:ℕk ⟶ ℕ ⟶ ℙ.  ((∀i:ℕk. u-almost-full(n.A[i;n])) 
⇒ u-almost-full(n.∀i:ℕk. A[i;n]))
Lemma: finite-Ramsey1
∀c:ℕ. ∀s:ℕc ⟶ ℕ.
  ∃N:ℕ+
   ∀g:ℕN ⟶ ℕN ⟶ ℕc. ∃i:ℕc. ∃f:ℕs i ⟶ ℕN. (Inj(ℕs i;ℕN;f) ∧ (∀a,b:ℕs i.  (f a < f b 
⇒ ((g (f a) (f b)) = i ∈ ℤ))))
Lemma: finite-Ramsey
∀k,n:ℕ.
  ∃N:ℕ+
   ∀g:ℕN ⟶ ℕN ⟶ ℕk
     ∃f:ℕn ⟶ ℕN. (Inj(ℕn;ℕN;f) ∧ (∀a,b,c,d:ℕn.  (f a < f b 
⇒ f c < f d 
⇒ ((g (f a) (f b)) = (g (f c) (f d)) ∈ ℤ))))
Lemma: Ramsey-n-3
∀n:ℕ. ∃N:ℕ+. ∀g:ℕN ⟶ ℕN ⟶ ℕn. ∃i,j,k:ℕN. (i < j ∧ j < k ∧ ((g i j) = (g i k) ∈ ℤ) ∧ ((g i k) = (g j k) ∈ ℤ))
Definition: b-almost-full
A binary relation R on ℕ is almost full if every strictly increasing sequence s
must have a pair s(n), s(m) (with n < m) related by R.
But the n and m need not be an extensional property of s because we have
"squashed" the proposition ⌜∃n:ℕ. ∃m:{n + 1...}. R[s n; s m]⌝ 
 using the quotient by //True.
This allows us to prove that relations are almost full using
bar induction on monotone bars, which relies on continuity -- which is
not extensional.
The key lemma used to prove the Intuitionistic Ramsey Theorem (Veldman & Bezem)
(See intuitionistic-Ramsey) is b-almost-full-intersection, which
uses monotone-bar-induction-strict3 
That is a variant of bar induction on monotone bars, which follows from
 bar induction on decidable bars and the strong continuity principle 
-- two Brouwerian principles that we have proved to be true in Nuprl
using our Nuprl-in-Coq meta-theory.
⋅
b-almost-full(n,m.R[n; m]) ==  ∀s:StrictInc. ⇃(∃n:ℕ. ∃m:{n + 1...}. R[s n; s m])
Lemma: b-almost-full_wf
∀[R:ℕ ⟶ ℕ ⟶ ℙ]. (b-almost-full(n,m.R[n;m]) ∈ ℙ)
Lemma: b-almost-full-intersection-lemma
∀R,T:ℕ ⟶ ℕ ⟶ ℙ.
  (b-almost-full(n,m.R[n;m])
  
⇒ b-almost-full(n,m.T[n;m])
  
⇒ (∀s:StrictInc. ⇃(∃m:ℕ. ∃n,p:{m + 1...}. (R[s m;s n] ∧ T[s m;s p]))))
Lemma: better-not-not-Ramsey
∀[R:ℕ ⟶ ℕ ⟶ ℙ]. (¬(∀[s:StrictInc]. ⇃(∃n,m,p,q:ℕ. ((n < m ∧ R[s n;s m]) ∧ p < q ∧ (¬R[s p;s q])))))
Definition: baf-bar
baf-bar(n,m.R[n; m];n,m.T[n; m];l;a) ==
  strictly-increasing-seq(l;a) ∧ (∃i:ℕl. ∃j,k:{i + 1..l-}. (R[a i; a j] ∧ T[a i; a k]))
Lemma: baf-bar_wf
∀[R,T:ℕ ⟶ ℕ ⟶ ℙ]. ∀[l:ℕ]. ∀[a:x:ℕl ⟶ ℕ].  (baf-bar(n,m.R[n;m];n,m.T[n;m];l;a) ∈ ℙ)
Lemma: baf-bar-monotone
∀R,T:ℕ ⟶ ℕ ⟶ ℙ. ∀n:ℕ. ∀s:{s:ℕn ⟶ ℕ| strictly-increasing-seq(n;s)} .
  (baf-bar(n,m.R[n;m];n,m.T[n;m];n;s)
  
⇒ (∀m:ℕ. (strictly-increasing-seq(n + 1;s.m@n) 
⇒ baf-bar(n,m.R[n;m];n,m.T[n;m];n + 1;s.m@n))))
Lemma: b-almost-full-intersection
This is the main technical lemma from Veldman & Bezem's proof
of the Intuitionistic Ramsey theorem.
We were able to closely follow their proof except that 
before carrying out some of the reasoning steps we have to
"unsquash" some of the hypotheses. 
The needed "unsquashing" is usually done using lemmas
implies-quotient-true or all-quotient-true
(making use of the fact that we can prove canonicalizable(StrictInc)).⋅
∀R,T:ℕ ⟶ ℕ ⟶ ℙ.  (b-almost-full(n,m.R[n;m]) 
⇒ b-almost-full(n,m.T[n;m]) 
⇒ ⇃(∃n:ℕ. ∃m:{n + 1...}. (R[n;m] ∧ T[n;m])))
Lemma: intuitionistic-Ramsey
∀R,T:ℕ ⟶ ℕ ⟶ ℙ.  (b-almost-full(n,m.R[n;m]) 
⇒ b-almost-full(n,m.T[n;m]) 
⇒ b-almost-full(n,m.R[n;m] ∧ T[n;m]))
Lemma: b-almost-full-filter
∀A,B:ℕ ⟶ ℕ ⟶ ℙ.
  ((b-almost-full(n,m.A[n;m]) 
⇒ b-almost-full(n,m.B[n;m]) 
⇒ b-almost-full(n,m.A[n;m] ∧ B[n;m]))
  ∧ ((∀n,m:ℕ.  (A[n;m] 
⇒ B[n;m])) 
⇒ b-almost-full(n,m.A[n;m]) 
⇒ b-almost-full(n,m.B[n;m]))
  ∧ b-almost-full(n,m.True))
Lemma: general-fan-theorem-troelstra
∀X:n:ℕ ⟶ (ℕn ⟶ 𝔹) ⟶ ℙ. ((∀f:ℕ ⟶ 𝔹. ∃n:ℕ. X[n;f]) 
⇒ ⇃(∃k:ℕ. ∀f:ℕ ⟶ 𝔹. ∃n:ℕk. X[n;f]))
Lemma: general-fan-theorem-troelstra-sq
∀X:n:ℕ ⟶ (ℕn ⟶ 𝔹) ⟶ ℙ. ((∀f:ℕ ⟶ 𝔹. ⇃(∃n:ℕ. X[n;f])) 
⇒ ⇃(∃k:ℕ. ∀f:ℕ ⟶ 𝔹. ∃n:ℕk. X[n;f]))
Lemma: general-fan-theorem-troelstra2
∀X:n:ℕ ⟶ (ℕn ⟶ 𝔹) ⟶ ℙ. ((∀f:ℕ ⟶ 𝔹. ∃n:ℕ. X[n;f]) 
⇒ (∃k:ℕ. ∀f:ℕ ⟶ 𝔹. ∃n:ℕk. X[n;f]))
Comment: Veldman's reverse AC doc
The "axiom of choice" ⌜(∀n:ℕ. ∃m:T. (A n m)) 
⇒ (∃g:ℕ ⟶ T. ∀n:ℕ. (A n (g n)))⌝
follows from the definition of the quantifiers in type theory.
In "On the Constructive Contrapositions of Two Axioms of Countable Choice",
Veldman (1982) considered the contrapositive of the above:
⌜(∀g:ℕ ⟶ T. ∃n:ℕ. (R n (g n))) 
⇒ (∃n:ℕ. ∀m:T. (R n m))⌝ (where R is ¬A).
In "The Contrapositive of Countable Choice for Inhabited Sets of Naturals",
Petrakis uses  CCC(T) for ⌜∀R:ℕ ⟶ T ⟶ ℙ. ((∀g:ℕ ⟶ T. ∃n:ℕ. (R n (g n))) 
⇒ (∃n:ℕ. ∀m:T. (R n m)))⌝
and dCCC(T) for ∀R:ℕ ⟶ T ⟶ 𝔹. ((∀g:ℕ ⟶ T. ∃n:ℕ. (↑(R n (g n)))) 
⇒ (∃n:ℕ. ∀m:T. (↑(R n m))))
(i.e. where R is decidable).
Veldman proved (using the general Fan theorem) that CCC(T) is true for
finite types T and that CCC(ℕ) is false (even dCCC(ℕ) is false).
We prove those results here CCC-finite, not-d-CCC-nat.
Petrakis gives a simpler proof of dCCC(T) for finite T that does not use
any form of the fan theorem. We give an even simpler proof of that
here d-CCC-finite.
Petrakis studies the inhabited subtypes K ⊆r ℕ for which CCC(K),
so we define CCCNSet(K) ==  (K ⊆r ℕ) ∧ K ∧ CCC(K).
Petrakis's main result is that ⌜CCCNSet(K) 
⇒ finite(K)⌝.
Combined with Veldman's result that ⌜finite(T) 
⇒ CCC(T)⌝ we get
CCC(K) 
⇐⇒ finite(K) for inhabited subtypes of ℕ
   ccc-nset-iff-finite
⋅
Definition: contra-cc
CCC(T) ==  ∀R:ℕ ⟶ T ⟶ ℙ. ((∀g:ℕ ⟶ T. ∃n:ℕ. (R n (g n))) 
⇒ (∃n:ℕ. ∀m:T. (R n m)))
Definition: contra-dcc
dCCC(T) ==  ∀R:ℕ ⟶ T ⟶ 𝔹. ((∀g:ℕ ⟶ T. ∃n:ℕ. (↑(R n (g n)))) 
⇒ (∃n:ℕ. ∀m:T. (↑(R n m))))
Lemma: contra-dcc_wf
∀[T:Type]. (dCCC(T) ∈ ℙ)
Lemma: contra-cc_wf
∀[T:Type]. (CCC(T) ∈ ℙ')
Lemma: d-CCC-finite
∀[T:Type]. (finite(T) 
⇒ dCCC(T))
Lemma: not-d-CCC-nat
¬dCCC(ℕ)
Lemma: CCC-bool
CCC(𝔹)
Lemma: d-CCC-surjection
∀[A,B:Type].  ((∃f:A ⟶ B. Surj(A;B;f)) 
⇒ dCCC(A) 
⇒ dCCC(B))
Lemma: not-d-CCC-infinite
∀[A:Type]. ((∃f:A ⟶ ℕ. Surj(A;ℕ;f)) 
⇒ (¬dCCC(A)))
Lemma: not-CCC-infinite
∀[A:Type]. ((∃f:A ⟶ ℕ. Surj(A;ℕ;f)) 
⇒ (¬CCC(A)))
Lemma: CCC-surjection
∀[A,B:Type].  ((∃f:A ⟶ B. Surj(A;B;f)) 
⇒ CCC(A) 
⇒ CCC(B))
Lemma: CCC-product
∀A,B:Type.  (CCC(A) 
⇒ CCC(B) 
⇒ CCC(A × B))
Lemma: CCC-finite
∀[T:Type]. (finite(T) 
⇒ CCC(T))
Lemma: CCC-nat2K-implies-CCC-K
∀[K:Type]. (CCC(ℕ ⟶ K) 
⇒ CCC(K))
Definition: dccc-nset
dccc-nset(K) ==  (K ⊆r ℕ) ∧ K ∧ dCCC(K)
Lemma: dccc-nset_wf
∀[K:Type]. (dccc-nset(K) ∈ ℙ)
Definition: ccc-nset
CCCNSet(K) ==  (K ⊆r ℕ) ∧ K ∧ CCC(K)
Lemma: ccc-nset_wf
∀[K:Type]. (CCCNSet(K) ∈ ℙ')
Lemma: ccc-nset-minimum
∀K:Type. (CCCNSet(K) 
⇒ (∃n:K. ∀m:K. (n ≤ m)))
Lemma: ccc-nset-remove1
∀K:Type. (CCCNSet(K) 
⇒ (∀k0,k1:K.  ((¬(k0 = k1 ∈ ℤ)) 
⇒ CCCNSet({k:K| ¬(k = k0 ∈ ℤ)} ))))
Definition: weakly-decidable-nset
WD(K) ==  (K ⊆r ℕ) ∧ (∀m,k:K. ∀l:{m..k-}.  ((l ∈ K) ∨ (¬(l ∈ K))))
Lemma: weakly-decidable-nset_wf
∀[K:Type]. (WD(K) ∈ ℙ)
Lemma: ccc-nset-weakly-decidable
∀K:Type. (CCCNSet(K) 
⇒ WD(K))
Definition: transparent-nset
Transparent(K) ==  (K ⊆r ℕ) ∧ (∀B:ℕ. ((∀k:K. (k ≤ B)) ∨ (∃k:K. B < k)))
Lemma: transparent-nset_wf
∀[K:Type]. (Transparent(K) ∈ ℙ)
Lemma: ccc-nset-transparent
∀K:Type. (CCCNSet(K) 
⇒ Transparent(K))
Lemma: bounded-decidable-nset-finite
∀K:Type. ((K ⊆r ℕ) 
⇒ (∀l:ℕ. ((l ∈ K) ∨ (¬(l ∈ K)))) 
⇒ (∀B:ℕ. ((∀k:K. (k ≤ B)) 
⇒ finite(K))))
Lemma: unbounded-decidable-nset-infinite
∀K:Type. ((K ⊆r ℕ) 
⇒ (∀l:ℕ. ((l ∈ K) ∨ (¬(l ∈ K)))) 
⇒ (∀B:ℕ. ∃k:K. B < k) 
⇒ (∃f:K ⟶ ℕ. Surj(K;ℕ;f)))
Lemma: bounded-ccc-nset-decidable
∀K:Type. (CCCNSet(K) 
⇒ (∀B:ℕ. ((∀k:K. (k ≤ B)) 
⇒ (∀l:ℕ. ((l ∈ K) ∨ (¬(l ∈ K)))))))
Lemma: unbounded-ccc-nset-decidable
∀K:Type. (CCCNSet(K) 
⇒ (∀B:ℕ. ∃k:K. B < k) 
⇒ (∀l:ℕ. ((l ∈ K) ∨ (¬(l ∈ K)))))
Lemma: bounded-ccc-nset-finite
∀K:Type. (CCCNSet(K) 
⇒ (∀B:ℕ. ((∀k:K. (k ≤ B)) 
⇒ finite(K))))
Lemma: ccc-nset-not-not-finite
∀K:Type. (CCCNSet(K) 
⇒ (¬¬finite(K)))
Lemma: CCC-omni
∀K:Type. (CCCNSet(K) 
⇒ (∀P:K ⟶ ℙ. ((∀k:K. Dec(P[k])) 
⇒ ((∃k:K. P[k]) ∨ (∀k:K. (¬P[k]))))))
Lemma: CCC-omni-2
∀K:Type
  (CCCNSet(K) 
⇒ (∀P:K ⟶ K ⟶ ℙ. ((∀k,m:K.  Dec(P[k;m])) 
⇒ ((∃k:K. ∀m:K. P[k;m]) ∨ (∀k:K. (¬(∀m:K. P[k;m])))))))
Lemma: CCC-Sigma02-dns
∀K:Type. (CCCNSet(K) 
⇒ (∀P:K ⟶ K ⟶ ℙ. ((∀k,m:K.  Dec(P[k;m])) 
⇒ (¬¬(∃k:K. ∀m:K. P[k;m])) 
⇒ (∃k:K. ∀m:K. P[k;m]))))
Lemma: ccc-nset-iff-finite
∀K:Type. ((K ⊆r ℕ) 
⇒ K 
⇒ (CCC(K) 
⇐⇒ finite(K)))
Definition: zero-seq
0s ==  λx.0
Lemma: zero-seq_wf
0s ∈ ℕ ⟶ ℕ
Definition: finite-nat-seq
finite-nat-seq() ==  n:ℕ × (ℕn ⟶ ℕ)
Lemma: finite-nat-seq_wf
finite-nat-seq() ∈ Type
Definition: mk-finite-nat-seq
f^(n) ==  <n, f>
Lemma: mk-finite-nat-seq_wf
∀[n:ℕ]. ∀[f:ℕn ⟶ ℕ].  (f^(n) ∈ finite-nat-seq())
Definition: append-finite-nat-seq
f**g ==  let n,s = f in let m,r = g in λx.if (x) < (n)  then s x  else (r (x - n))^(n + m)
Lemma: append-finite-nat-seq_wf
∀[f,g:finite-nat-seq()].  (f**g ∈ finite-nat-seq())
Definition: neighbourhood-function-nat
K0(G) ==  (∀f:ℕ ⟶ ℕ. ∃n:ℕ. (↑isl(G f^(n)))) ∧ (∀f,g:finite-nat-seq().  ((↑isl(G f)) 
⇒ ((G f) = (G f**g) ∈ (ℕ?))))
Lemma: neighbourhood-function-nat_wf
∀[G:finite-nat-seq() ⟶ (ℕ?)]. (K0(G) ∈ Type)
Definition: finite-nat-seq-to-list
finite-nat-seq-to-list(f) ==  let n,s = f in primrec(n;[];λi,r. (r @ [s i]))
Lemma: finite-nat-seq-to-list_wf
∀[f:finite-nat-seq()]. (finite-nat-seq-to-list(f) ∈ ℕ List)
Lemma: finite-nat-seq-to-list-prop1
∀[f:finite-nat-seq()]
  ((||finite-nat-seq-to-list(f)|| = (fst(f)) ∈ ℕ) ∧ (∀i:ℕfst(f). (finite-nat-seq-to-list(f)[i] = ((snd(f)) i) ∈ ℕ)))
Definition: ble
ble(n;m) ==  if n=m then tt else if (n) < (m)  then tt  else ff
Lemma: ble_wf
∀[n,m:ℤ].  (ble(n;m) ∈ 𝔹)
Lemma: assert-ble
∀[n:ℤ]. ∀[m:ℕ].  (↑ble(n;m) 
⇐⇒ n ≤ m)
Definition: equal-upto-finite-nat-seq
equal-upto-finite-nat-seq(n;f;g) ==  primrec(n;tt;λi,b. (b ∧b (f i =z g i)))
Lemma: equal-upto-finite-nat-seq_wf
∀[n:ℕ]. ∀[f,g:ℕn ⟶ ℕ].  (equal-upto-finite-nat-seq(n;f;g) ∈ 𝔹)
Lemma: assert-equal-upto-finite-nat-seq
∀[n:ℕ]. ∀[f,g:ℕn ⟶ ℕ].  (↑equal-upto-finite-nat-seq(n;f;g) 
⇐⇒ f = g ∈ (ℕn ⟶ ℕ))
Definition: init-seg-nat-seq
init-seg-nat-seq(f;g) ==  let n,s = f in let m,r = g in if ble(n;m) then equal-upto-finite-nat-seq(n;s;r) else ff fi 
Lemma: init-seg-nat-seq_wf
∀[f,g:finite-nat-seq()].  (init-seg-nat-seq(f;g) ∈ 𝔹)
Lemma: append-empty-nat-seq
∀[f:finite-nat-seq()]. ∀[g:Top].  (f**g^(0) = f ∈ finite-nat-seq())
Lemma: assert-init-seg-nat-seq
∀f,g:finite-nat-seq().  (↑init-seg-nat-seq(f;g) 
⇐⇒ ∃h:finite-nat-seq(). (g = f**h ∈ finite-nat-seq()))
Lemma: assert-init-seg-nat-seq2
∀f,g:finite-nat-seq().  (↑init-seg-nat-seq(f;g) 
⇐⇒ ((fst(f)) ≤ (fst(g))) ∧ ((snd(f)) = (snd(g)) ∈ (ℕfst(f) ⟶ ℕ)))
Definition: phi-star
Phi* ==  λF.0s^(Phi F)
Lemma: phi-star_wf
∀[Phi:((ℕ ⟶ ℕ) ⟶ ℕ) ⟶ ℕ]. (Phi* ∈ ((ℕ ⟶ ℕ) ⟶ ℕ) ⟶ finite-nat-seq())
Lemma: append-finite-nat-seq-assoc
∀[f,g,h:finite-nat-seq()].  (f**g**h = f**g**h ∈ finite-nat-seq())
Lemma: extend-seq1-all-dec
∀n,n0:finite-nat-seq(). ∀beta:ℕ ⟶ ℕ.
  Dec(∃x:ℕ. ((↑init-seg-nat-seq(n0**λi.x^(1);n)) ∧ (¬((beta x) = 0 ∈ ℤ)) ∧ (∀y:ℕx. ((beta y) = 0 ∈ ℤ))))
Lemma: init-seg-nat-seq-append-implies-left
∀a,b,s:finite-nat-seq().  ((↑init-seg-nat-seq(a**b;s)) 
⇒ (↑init-seg-nat-seq(a;s)))
Lemma: init-seg-nat-seq-append-implies-right
∀a,b,s:finite-nat-seq().  ((↑init-seg-nat-seq(s;a)) 
⇒ (↑init-seg-nat-seq(s;a**b)))
Lemma: append-finite-nat-seq-1
∀n,a,b:finite-nat-seq(). ∀x:ℕ.
  ((↑init-seg-nat-seq(n**λi.x^(1);a**b)) 
⇒ ((↑init-seg-nat-seq(a;n)) ∨ (↑init-seg-nat-seq(n**λi.x^(1);a))))
Lemma: dec-exists-int-seg
∀a,b:ℤ.  ∀[F:{a..b-} ⟶ ℙ]. ((∀k:{a..b-}. Dec(F[k])) 
⇒ Dec(∃k:{a..b-}. F[k]))
Definition: gamma-neighbourhood
gamma-neighbourhood(beta;n0) ==
  λn.if init-seg-nat-seq(n;n0) then inr ⋅ 
     if TERMOF{extend-seq1-all-dec:o, 1:l} n n0 beta then inl 1
     else inl 0
     fi 
Lemma: gamma-neighbourhood_wf
∀[beta:ℕ ⟶ ℕ]. ∀[n0:finite-nat-seq()].  (gamma-neighbourhood(beta;n0) ∈ finite-nat-seq() ⟶ (ℕ?))
Lemma: gamma-neighbourhood-prop1
∀beta:ℕ ⟶ ℕ. ∀n0:finite-nat-seq().
  ((∀a:ℕ ⟶ ℕ. ∃x:ℕ. (↑isl(gamma-neighbourhood(beta;n0) a^(x))))
  ∧ (∀a,b:finite-nat-seq().
       ((↑isl(gamma-neighbourhood(beta;n0) a))
       
⇒ ((gamma-neighbourhood(beta;n0) a) = (gamma-neighbourhood(beta;n0) a**b) ∈ (ℕ?)))))
Lemma: gamma-neighbourhood-prop2
∀beta:ℕ ⟶ ℕ. ∀n0:finite-nat-seq(). ∀x:ℕ.
  ((¬((beta x) = 0 ∈ ℤ))
  
⇒ (∃x1:ℕx + 1
       ((¬((beta x1) = 0 ∈ ℤ))
       ∧ (∀y:ℕx1. ((beta y) = 0 ∈ ℤ))
       ∧ ((gamma-neighbourhood(beta;n0) n0**λx.x1^(1)) = (inl 1) ∈ (ℕ?))
       ∧ ((gamma-neighbourhood(beta;n0) n0**λx.(x1 + 1)^(1)) = (inl 0) ∈ (ℕ?)))))
Lemma: gamma-neighbourhood-prop3
∀beta:ℕ ⟶ ℕ. ∀n,m:ℕ.
  (((beta 0) = 0 ∈ ℤ)
  
⇒ (↑isl(gamma-neighbourhood(beta;0s^(n)) 0s^(m)))
  
⇒ (n < m ∧ ((gamma-neighbourhood(beta;0s^(n)) 0s^(m)) = (inl 0) ∈ (ℕ?))))
Definition: eq-seg-nat-seq
eq-seg-nat-seq(n;m) ==  init-seg-nat-seq(n;m) ∧b init-seg-nat-seq(m;n)
Lemma: eq-seg-nat-seq_wf
∀[n,m:finite-nat-seq()].  (eq-seg-nat-seq(n;m) ∈ 𝔹)
Lemma: assert-eq-seg-nat-seq
∀[n,m:finite-nat-seq()].  (↑eq-seg-nat-seq(n;m) 
⇐⇒ n = m ∈ finite-nat-seq())
Definition: ext-finite-nat-seq
ext-finite-nat-seq(f;x) ==  let n,s = f in λk.if (k) < (n)  then s k  else x
Lemma: ext-finite-nat-seq_wf
∀[f:finite-nat-seq()]. ∀[x:ℕ].  (ext-finite-nat-seq(f;x) ∈ ℕ ⟶ ℕ)
Lemma: gamma-neighbourhood-prop4
∀beta:ℕ ⟶ ℕ. ∀n0:finite-nat-seq(). ∀x,n:ℕ.
  ((¬((beta x) = 0 ∈ ℤ))
  
⇒ (∀y:ℕx. ((beta y) = 0 ∈ ℤ))
  
⇒ (↑isl(gamma-neighbourhood(beta;n0) ext-finite-nat-seq(n0**λk.x^(1);0)^(n)))
  
⇒ ((gamma-neighbourhood(beta;n0) ext-finite-nat-seq(n0**λk.x^(1);0)^(n)) = (inl 1) ∈ (ℕ?)))
Lemma: gamma-neighbourhood-prop5
∀beta:ℕ ⟶ ℕ. ∀n,m:ℕ.
  ((¬((beta 0) = 0 ∈ ℤ))
  
⇒ (↑isl(gamma-neighbourhood(beta;0s^(n)) 0s^(m)))
  
⇒ (n < m ∧ ((gamma-neighbourhood(beta;0s^(n)) 0s^(m)) = (inl 1) ∈ (ℕ?))))
Lemma: gamma-neighbourhood-prop6
∀beta:ℕ ⟶ ℕ. ∀n0:finite-nat-seq(). ∀x,n:ℕ.
  ((¬((beta x) = 0 ∈ ℤ))
  
⇒ (↑isl(gamma-neighbourhood(beta;n0) ext-finite-nat-seq(n0**λk.(x + 1)^(1);0)^(n)))
  
⇒ ((gamma-neighbourhood(beta;n0) ext-finite-nat-seq(n0**λk.(x + 1)^(1);0)^(n)) = (inl 0) ∈ (ℕ?)))
Lemma: unsquashed-continuity-false-troelstra
¬(∀F:(ℕ ⟶ ℕ) ⟶ ℕ. ∀a:ℕ ⟶ ℕ.  ∃n:ℕ. ∀b:ℕ ⟶ ℕ. ((a = b ∈ (ℕn ⟶ ℕ)) 
⇒ ((F a) = (F b) ∈ ℕ)))
Definition: spector-bar-rec
spector-bar-rec(Y;G;H;n;s)==r if Y n s ≤z n then G n s else H n s (λt.spector-bar-rec(Y;G;H;n + 1;s.t@n)) fi 
Definition: decidable-bar-rec
decidable-bar-rec(dec;base;ind;n;s)
==r case dec n s of inl(r) => base n s r | inr(x) => ind n s (λt.decidable-bar-rec(dec;base;ind;n + 1;s.t@n))
Lemma: decidable-bar-rec_wf
∀[B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ]. ∀[bar:∀s:ℕ ⟶ ℕ. (↓∃n:ℕ. B[n;s])]. ∀[dec:∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] ∨ (¬B[n;s]))].
∀[base:∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ Q[n;s])]. ∀[ind:∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. Q[n + 1;s.m@n]) 
⇒ Q[n;s])].
  (decidable-bar-rec(dec;base;ind;0;seq-normalize(0;⊥)) ∈ Q[0;seq-normalize(0;⊥)])
Lemma: decidable-bar-rec_wf2
∀[B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ]. ∀[bar:∀s:ℕ ⟶ ℕ. (↓∃n:ℕ. B[n;s])]. ∀[dec:∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] ∨ (¬B[n;s]))].
∀[base:∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ Q[n;s])]. ∀[ind:∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. Q[n + 1;s.m@n]) 
⇒ Q[n;s])]. ∀[n:ℕ].
∀[s:ℕn ⟶ ℕ].
  (decidable-bar-rec(dec;base;ind;0;seq-normalize(0;⊥)) ∈ Q[0;seq-normalize(0;⊥)])
Lemma: decidable-bar-rec-equal-spector
∀[dec,base,ind:Top]. ∀[n:ℕ]. ∀[s:Top].
  (decidable-bar-rec(dec;base;ind;n;s) ~ spector-bar-rec(λn,s. if dec n s then 0 else n + 1 fi λn,s. case dec n s
                                                                                                  of inl(r) =>
                                                                                                  base n s r
                                                                                                  | inr(x) =>
                                                                                                  ⊥;ind;n;s))
Definition: howard-bar-rec
howard-bar-rec(M;mon;base;ind;n;s)
==r case M n s
     of inl(x) =>
     let k,p = x 
     in base n s (mon n k s p)
     | inr(x) =>
     ind n s (λt.howard-bar-rec(M;mon;base;ind;n + 1;s.t@n))
Lemma: howard-bar-rec_wf
∀B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ. ∀bar:∀s:ℕ ⟶ ℕ. ⇃(∃n:ℕ. B[n;s]). ∀mon:∀n:ℕ. ∀m:ℕn. ∀s:ℕn ⟶ ℕ.  (B[m;s] 
⇒ B[n;s]).
∀base:∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ Q[n;s]). ∀ind:∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. Q[n + 1;s.m@n]) 
⇒ Q[n;s]).
  ⇃(Q[0;seq-normalize(0;⊥)])
Lemma: howard-bar-rec-equal-spector
∀[M,mon,base,ind:Top]. ∀[n:ℕ]. ∀[s:Top].
  (howard-bar-rec(M;mon;base;ind;n;s) ~ spector-bar-rec(λn,s. if M n s then 0 else n + 1 fi λn,s. case M n s
                                                                                               of inl(x) =>
                                                                                               let k,p = x 
                                                                                               in base n s (mon n k s p)
                                                                                               | inr(x) =>
                                                                                               ⊥;ind;n;s))
Lemma: howard-bar-rec-equal-decidable
∀[M,mon,base,ind:Top]. ∀[n:ℕ]. ∀[s:Top].
  (howard-bar-rec(M;mon;base;ind;n;s) ~ decidable-bar-rec(M;λn,s,r. let k,p = r in base n s (mon n k s p);ind;n;s))
Lemma: gen-bar-rec
∀P:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ
  ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. P[n + 1;s.m@n]) 
⇒ P[n;s])) 
⇒ (∀f:ℕ ⟶ ℕ. ⇃(∃n:ℕ. ∀m:{n...}. P[m;f])) 
⇒ ⇃(P[0;λx.⊥]))
Lemma: gen-bar-ind-implies-monotone
(∀P:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ
   ((∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. P[n + 1;s.m@n]) 
⇒ P[n;s])) 
⇒ (∀f:ℕ ⟶ ℕ. ⇃(∃n:ℕ. ∀m:{n...}. P[m;f])) 
⇒ ⇃(P[0;λx.⊥])))
⇒ (∀B,Q:n:ℕ ⟶ (ℕn ⟶ ℕ) ⟶ ℙ. ∀bar:∀s:ℕ ⟶ ℕ. ⇃(∃n:ℕ. B[n;s]). ∀mon:∀n:ℕ. ∀m:ℕn. ∀s:ℕn ⟶ ℕ.  (B[m;s] 
⇒ B[n;s]).
    ∀base:∀n:ℕ. ∀s:ℕn ⟶ ℕ.  (B[n;s] 
⇒ Q[n;s]). ∀ind:∀n:ℕ. ∀s:ℕn ⟶ ℕ.  ((∀m:ℕ. Q[n + 1;s.m@n]) 
⇒ Q[n;s]).
      ⇃(Q[0;seq-normalize(0;⊥)]))
Definition: cons-nat-seq
cons-nat-seq(n;a) ==  λk.if k=0 then n else (a (k - 1))
Lemma: cons-nat-seq_wf
∀[n:ℕ]. ∀[a:ℕ ⟶ ℕ].  (cons-nat-seq(n;a) ∈ ℕ ⟶ ℕ)
Definition: shift-seq
shift-seq(c;a) ==  λn.(c cons-nat-seq(n;a))
Lemma: shift-seq_wf
∀[c:(ℕ ⟶ ℕ) ⟶ ℕ]. ∀[a:ℕ ⟶ ℕ].  (shift-seq(c;a) ∈ ℕ ⟶ ℕ)
Definition: squashed-continuity1-rel
squashed-continuity1-rel(A) ==
  (∀a:ℕ ⟶ ℕ. ⇃(∃b:ℕ ⟶ ℕ. (A a b))) ⟶ ⇃(∃c:(ℕ ⟶ ℕ) ⟶ ℕ
                                           ((∀a:ℕ ⟶ ℕ
                                               ⇃(∃n:ℕ. ∀b:ℕ ⟶ ℕ. ((a = b ∈ (ℕn ⟶ ℕ)) 
⇒ ((c a) = (c b) ∈ ℕ))))
                                           ∧ (∀a:ℕ ⟶ ℕ. (A a shift-seq(c;a)))))
Lemma: squashed-continuity1-rel_wf
∀[A:(ℕ ⟶ ℕ) ⟶ (ℕ ⟶ ℕ) ⟶ ℙ]. (squashed-continuity1-rel(A) ∈ ℙ)
Lemma: kripke's-schema-contradicts-squashed-continuity1-rel
(∀A:ℙ. ⇃(∃a:ℕ ⟶ ℕ. (A 
⇐⇒ ∃n:ℕ. ((a n) = 1 ∈ ℤ)))) 
⇒ (¬(∀A:(ℕ ⟶ ℕ) ⟶ (ℕ ⟶ ℕ) ⟶ ℙ. squashed-continuity1-rel(A)))
Lemma: MP+KS-imply-LEM
(∀P:ℕ ⟶ ℙ. ((∀n:ℕ. Dec(P[n])) 
⇒ (¬(∀n:ℕ. (¬P[n]))) 
⇒ (∃n:ℕ. P[n])))
⇒ (∀A:ℙ. ∃a:ℕ ⟶ ℕ. (A 
⇐⇒ ∃n:ℕ. ((a n) = 1 ∈ ℤ)))
⇒ (∀P:ℙ. (P ∨ (¬P)))
Lemma: MP+truncated-KS-imply-truncated-LEM
(∀P:ℕ ⟶ ℙ. ((∀n:ℕ. Dec(P[n])) 
⇒ (¬(∀n:ℕ. (¬P[n]))) 
⇒ (∃n:ℕ. P[n])))
⇒ (∀A:ℙ. ⇃(∃a:ℕ ⟶ ℕ. (A 
⇐⇒ ∃n:ℕ. ((a n) = 1 ∈ ℤ))))
⇒ (∀P:ℙ. ⇃(P ∨ (¬P)))
Definition: increasing-sequence
increasing-sequence(a) ==  ∀n:ℕ. (((a (n + 1)) = (a n) ∈ ℕ) ∨ ((a (n + 1)) = ((a n) + 1) ∈ ℕ))
Lemma: increasing-sequence_wf
∀[a:ℕ ⟶ ℕ]. (increasing-sequence(a) ∈ ℙ)
Lemma: increasing-sequence-prop1
∀a:ℕ ⟶ ℕ. (increasing-sequence(a) 
⇒ (∀n,m:ℕ.  ((n ≤ m) 
⇒ ((a n) ≤ (a m)))))
Definition: min-increasing-sequence
min-increasing-sequence(a;n;k) ==
  primrec(n;inr ⋅ λi,r. case r of inl(x) => inl x | inr(x) => if k ≤z a i then inl i else inr ⋅  fi )
Lemma: min-increasing-sequence_wf
∀[a:ℕ ⟶ ℕ]. ∀[n,k:ℕ].  (min-increasing-sequence(a;n;k) ∈ ℕ?)
Lemma: min-increasing-sequence-prop1
∀b:ℕ ⟶ ℕ. ∀n,x,k:ℕ.  ((min-increasing-sequence(b;n;x) = (inl k) ∈ (ℕ?)) 
⇒ (x ≤ (b k)))
Lemma: min-increasing-sequence-prop2
∀b,a:ℕ ⟶ ℕ. ∀n,x,k:ℕ.
  ((b = a ∈ (ℕx ⟶ ℕ))
  
⇒ increasing-sequence(a)
  
⇒ (min-increasing-sequence(b;n;(a x) + 1) = (inl k) ∈ (ℕ?))
  
⇒ (x ≤ k))
Definition: min-inc-seq
min-inc-seq(a;n;k) ==  case min-increasing-sequence(a;n;k) of inl(x) => x | inr(x) => n
Lemma: min-inc-seq_wf
∀[a:ℕ ⟶ ℕ]. ∀[n,k:ℕ].  (min-inc-seq(a;n;k) ∈ ℕ)
Definition: eq-finite-seqs
eq-finite-seqs(a;b;x) ==  primrec(x;tt;λi,r. (r ∧b (a i =z b i)))
Lemma: eq-finite-seqs_wf
∀[a,b:ℕ ⟶ ℕ]. ∀[x:ℕ].  (eq-finite-seqs(a;b;x) ∈ 𝔹)
Lemma: eq-finite-seqs-implies-eq-upto
∀a,b:ℕ ⟶ ℕ. ∀x:ℕ.  ((↑eq-finite-seqs(a;b;x)) 
⇒ (a = b ∈ (ℕx ⟶ ℕ)))
Lemma: eq-finite-seqs-iff-eq-upto
∀a,b:ℕ ⟶ ℕ. ∀x:ℕ.  (↑eq-finite-seqs(a;b;x) 
⇐⇒ a = b ∈ (ℕx ⟶ ℕ))
Definition: kripke2b-seq
kripke2b-seq(a;x;F) ==  λb.if eq-finite-seqs(a;b;x) then min-inc-seq(b;fst((F b));(a x) + 1) else 0 fi 
Lemma: kripke2b-seq_wf
∀[a:ℕ ⟶ ℕ]. ∀[x:ℕ]. ∀[F:∀b:{b:ℕ ⟶ ℕ| a = b ∈ (ℕx ⟶ ℕ)} . ∃n:ℕ. ((b n) ≥ ((a x) + 1) )].
  (kripke2b-seq(a;x;F) ∈ (ℕ ⟶ ℕ) ⟶ ℕ)
Definition: nat-pred
n-1 ==  if n=0 then 0 else (n - 1)
Lemma: nat-pred_wf
∀[n:ℕ]. (n-1 ∈ ℕ)
Definition: baire2cantor
baire2cantor(a) ==  λn.if (a n =z a n-1) then ff else tt fi 
Lemma: baire2cantor_wf
∀[a:ℕ ⟶ ℕ]. (baire2cantor(a) ∈ ℕ ⟶ 𝔹)
Definition: cantor2baire-aux
cantor2baire-aux(a;n) ==  primrec(n;0;λm,r. if a (m + 1) then r + 1 else r fi )
Lemma: cantor2baire-aux_wf
∀[a:ℕ ⟶ 𝔹]. ∀[n:ℕ].  (cantor2baire-aux(a;n) ∈ ℕ)
Lemma: cantor2baire-aux+1
∀[a:ℕ ⟶ 𝔹]. ∀[n:ℕ].
  (cantor2baire-aux(a;n + 1) ~ if a (n + 1) then cantor2baire-aux(a;n) + 1 else cantor2baire-aux(a;n) fi )
Lemma: nat-pred-as-sub
∀n:ℕ. (0 < n 
⇒ (n-1 = (n - 1) ∈ ℕ))
Lemma: cantor2baire-aux-pos
∀[a:ℕ ⟶ 𝔹]. ∀[n:ℕ].
  cantor2baire-aux(a;n) ~ if a n then cantor2baire-aux(a;n-1) + 1 else cantor2baire-aux(a;n-1) fi  supposing 0 < n
Definition: cantor2baire
cantor2baire(a) ==  λn.cantor2baire-aux(a;n)
Lemma: cantor2baire_wf
∀[a:ℕ ⟶ 𝔹]. (cantor2baire(a) ∈ ℕ ⟶ ℕ)
Lemma: cantor2baire-is-increasing
∀a:ℕ ⟶ 𝔹. increasing-sequence(cantor2baire(a))
Definition: initF
initF(a) ==  a 0 = ff
Lemma: initF_wf
∀[a:ℕ ⟶ 𝔹]. (initF(a) ∈ ℙ)
Definition: init0
init0(a) ==  (a 0) = 0 ∈ ℕ
Lemma: init0_wf
∀[a:ℕ ⟶ ℕ]. (init0(a) ∈ ℙ)
Lemma: init0-cantor2baire
∀a:ℕ ⟶ 𝔹. init0(cantor2baire(a))
Lemma: cantor2baire2cantor
∀a:ℕ ⟶ 𝔹. (initF(a) 
⇒ (baire2cantor(cantor2baire(a)) = a ∈ (ℕ ⟶ 𝔹)))
Lemma: baire2cantor2baire
∀a:ℕ ⟶ ℕ. (init0(a) 
⇒ increasing-sequence(a) 
⇒ (cantor2baire(baire2cantor(a)) = a ∈ (ℕ ⟶ ℕ)))
Definition: kripke2b-baire-seq
kripke2b-baire-seq(a;x;F) ==
  λb.if eq-finite-seqs(a;cantor2baire(b);x)
     then min-inc-seq(cantor2baire(b);fst((F cantor2baire(b)));(a x) + 1)
     else 0
     fi 
Lemma: kripke2b-baire-seq_wf
∀[a:ℕ ⟶ ℕ]. ∀[x:ℕ]. ∀[F:∀b:{b:ℕ ⟶ ℕ| a = b ∈ (ℕx ⟶ ℕ)} . ∃n:ℕ. ((b n) ≥ ((a x) + 1) )].
  (kripke2b-baire-seq(a;x;F) ∈ (ℕ ⟶ 𝔹) ⟶ ℕ)
Lemma: init0-implies-eq-upto1-zero-seq
∀a:ℕ ⟶ ℕ. (init0(a) 
⇒ (a = 0s ∈ (ℕ1 ⟶ ℕ)))
Lemma: init0-zero-seq
init0(0s)
Lemma: increasing-zero-seq
increasing-sequence(0s)
Definition: change-from1
change-from1(a) ==  λn.if n=0 then ff else if a 1=a 0 then tt else ff
Lemma: change-from1_wf
∀[a:ℕ ⟶ ℕ]. (change-from1(a) ∈ ℕ ⟶ 𝔹)
Definition: baire-diff-from
baire-diff-from(a;k) ==  λn.if k ≤z n then if a k=a k-1 then (a k-1) + 1 else (a k-1) else a n fi 
Lemma: baire-diff-from_wf
∀[a:ℕ ⟶ ℕ]. ∀[k:ℕ].  (baire-diff-from(a;k) ∈ ℕ ⟶ ℕ)
Lemma: eq-upto-baire-diff-from
∀[a:ℕ ⟶ ℕ]. ∀[n:ℕ].  (a = baire-diff-from(a;n) ∈ (ℕn ⟶ ℕ))
Lemma: init0-baire-diff-from
∀a:ℕ ⟶ ℕ. ∀n:ℕ.  (0 < n 
⇒ init0(a) 
⇒ init0(baire-diff-from(a;n)))
Lemma: increasing-baire-diff-from
∀a:ℕ ⟶ ℕ. ∀n:ℕ.  (increasing-sequence(a) 
⇒ increasing-sequence(baire-diff-from(a;n)))
Lemma: implies-eq-upto-baire2cantor
∀a,b:ℕ ⟶ ℕ. ∀n:ℕ.  ((a = b ∈ (ℕn ⟶ ℕ)) 
⇒ (baire2cantor(a) = baire2cantor(b) ∈ (ℕn ⟶ 𝔹)))
Lemma: baire-diff-from-diff
∀a:ℕ ⟶ ℕ. ∀n:ℕ.  (¬((a n) = (baire-diff-from(a;n) n) ∈ ℕ))
Definition: baire_eq_from
baire_eq_from(a;k) ==  λn.if n <z k then a n else a k fi 
Lemma: baire_eq_from_wf
∀[a:ℕ ⟶ ℕ]. ∀[k:ℕ].  (baire_eq_from(a;k) ∈ ℕ ⟶ ℕ)
Lemma: increasing-baire-eq-from
∀a:ℕ ⟶ ℕ. ∀k:ℕ.  (increasing-sequence(a) 
⇒ increasing-sequence(baire_eq_from(a;k)))
Lemma: eq-upto-baire-eq-from
∀a:ℕ ⟶ ℕ. ∀p,n:ℕ.  ((p ≤ n) 
⇒ (a = baire_eq_from(a;n) ∈ (ℕp ⟶ ℕ)))
Lemma: init0-baire-eq-from
∀a:ℕ ⟶ ℕ. ∀n:ℕ.  (init0(a) 
⇒ init0(baire_eq_from(a;n)))
Definition: is-absolutely-free
is-absolutely-free{i:l}(f) ==  ∀P:(ℕ ⟶ ℕ) ⟶ ℙ. ((P f) 
⇒ ⇃(∃k:ℕ. ∀g:ℕ ⟶ ℕ. ((f = g ∈ (ℕk ⟶ ℕ)) 
⇒ (P g))))
Lemma: is-absolutely-free_wf
∀[a:ℕ ⟶ ℕ]. (is-absolutely-free{i:l}(a) ∈ ℙ')
Lemma: old-Kripke2a
(∀P:(ℕ ⟶ ℕ) ⟶ ℙ. ∀f:ℕ ⟶ ℕ.  ((P f) 
⇒ ⇃(∃k:ℕ. ∀g:ℕ ⟶ ℕ. ((f = g ∈ (ℕk ⟶ ℕ)) 
⇒ (P g)))))
⇒ (∀a:{a:ℕ ⟶ ℕ| increasing-sequence(a)} . ∀m:ℕ.  (¬¬(∃n:ℕ. ((a n) ≥ m ))))
Lemma: Kripke2a
∀a:ℕ ⟶ ℕ. (is-absolutely-free{i:l}(a) 
⇒ increasing-sequence(a) 
⇒ (∀m:ℕ. (¬¬(∃n:ℕ. ((a n) ≥ m )))))
Lemma: Kripke2b
∀a:ℕ ⟶ ℕ. (is-absolutely-free{i:l}(a) 
⇒ init0(a) 
⇒ increasing-sequence(a) 
⇒ (¬(∀m:ℕ. ∃n:ℕ. ((a n) ≥ m ))))
Lemma: gen-continuity-contradicts-kuroda
(∀P:(ℕ ⟶ ℕ) ⟶ ℙ. ∀f:ℕ ⟶ ℕ.  ((P f) 
⇒ ⇃(∃k:ℕ. ∀g:ℕ ⟶ ℕ. ((f = g ∈ (ℕk ⟶ ℕ)) 
⇒ (P g)))))
⇒ (¬(∀A:ℕ ⟶ ℙ. ((∀m:ℕ. (¬¬(A m))) 
⇒ (¬¬(∀m:ℕ. (A m))))))
Lemma: afcs-contradicts-kuroda
(↓∃a:ℕ ⟶ ℕ. (is-absolutely-free{i:l}(a) ∧ init0(a) ∧ increasing-sequence(a)))
⇒ (¬(∀A:ℕ ⟶ ℙ. ((∀m:ℕ. (¬¬(A m))) 
⇒ (¬¬(∀m:ℕ. (A m))))))
Lemma: gen-continuity-contradicts-markov
(∀P:(ℕ ⟶ ℕ) ⟶ ℙ. ∀f:ℕ ⟶ ℕ.  ((P f) 
⇒ ⇃(∃k:ℕ. ∀g:ℕ ⟶ ℕ. ((f = g ∈ (ℕk ⟶ ℕ)) 
⇒ (P g)))))
⇒ (¬(∀A:ℕ ⟶ ℙ. ((∀n:ℕ. ((A n) ∨ (¬(A n)))) 
⇒ (¬¬(∃n:ℕ. (A n))) 
⇒ (∃n:ℕ. (A n)))))
Lemma: gen-continuity-is-false
¬(∀P:(ℕ ⟶ ℕ) ⟶ ℙ. ∀f:ℕ ⟶ ℕ.  ((P f) 
⇒ ⇃(∃k:ℕ. ∀g:ℕ ⟶ ℕ. ((f = g ∈ (ℕk ⟶ ℕ)) 
⇒ (P g)))))
Lemma: afcs-contradicts-markov
(↓∃a:ℕ ⟶ ℕ. (is-absolutely-free{i:l}(a) ∧ init0(a) ∧ increasing-sequence(a)))
⇒ (¬(∀A:ℕ ⟶ ℙ. ((∀n:ℕ. ((A n) ∨ (¬(A n)))) 
⇒ (¬¬(∃n:ℕ. (A n))) 
⇒ (∃n:ℕ. (A n)))))
Definition: absolutelyfree
absolutelyfree{i:l}(T) ==
  ((T ⊆r (ℕ ⟶ ℕ)) ∧ (∀P:T ⟶ ℙ. ∀f:T.  ((P f) 
⇒ ⇃(∃k:ℕ. ∀g:T. ((f = g ∈ (ℕk ⟶ ℕ)) 
⇒ (P g))))))
  ∧ (∀S:Type
       ((S ⊆r (ℕ ⟶ ℕ)) 
⇒ (∀P:S ⟶ ℙ. ∀f:S.  ((P f) 
⇒ ⇃(∃k:ℕ. ∀g:S. ((f = g ∈ (ℕk ⟶ ℕ)) 
⇒ (P g))))) 
⇒ (S ⊆r T)))
Lemma: absolutelyfree_wf
∀[T:Type]. (absolutelyfree{i:l}(T) ∈ ℙ')
Lemma: absolutelyfree-subtype
∀[T:Type]. T ⊆r (ℕ ⟶ ℕ) supposing absolutelyfree{i:l}(T)
Lemma: absolutelyfree-unique
∀[T,S:Type].  (absolutelyfree{i:l}(T) 
⇒ absolutelyfree{i:l}(S) 
⇒ T ≡ S)
Definition: type2tree
type2tree(A;B;C) ==  W(C + A;d.case d of inl(n) => Void | inr(m) => B)
Lemma: type2tree_wf
∀[A,B,C:Type].  (type2tree(A;B;C) ∈ Type)
Definition: tree2fun
tree2fun(eq;w;g) ==
  let d,f = w 
  in case d of inl(n) => n | inr(m) => eval x = g m in tree2fun(eq;f x;λi.if eq i m then x else g i fi )
Lemma: tree2fun_wf
∀[A,B,C:Type]. ∀[eq:EqDecider(A)].  ∀[w:type2tree(A;B;C)]. ∀[g:A ⟶ B].  (tree2fun(eq;w;g) ∈ C) supposing value-type(B)
Definition: fun2tree
fun2tree(M;p)
==r let n,br = p 
    in case M n br
        of inl(x) =>
        Wsup(inl x;λi.i)
        | inr(_) =>
        Wsup(inr n λi.fun2tree(M;<n + 1, λx.if (x =z n) then i else br x fi >))
Home
Index