Step
*
2
of Lemma
howard-bar-rec-equal-spector
1. n : ℕ
2. s : Base
3. ind : Base
4. base : Base
5. mon : Base
6. M : Base
⊢ 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) ≤ howard-bar-rec(M;mon;base;ind;n;s)
BY
{ (RepUR ``howard-bar-rec spector-bar-rec ifthenelse le_int bnot lt_int`` 0
   THEN ProveSqFixpointsLe
   THEN AssumeHasValue) }
1
1. j : ℤ
2. 0 < j
3. ∀n:ℕ. ∀s,ind,base,mon,M:Base.
     (λspector-bar-rec,n,s. case case if (n) < (case M n s of inl() => 0 | inr() => n + 1)  then tt  else ff
                                  of inl() =>
                                  ff
                                  | inr() =>
                                  tt
                            of inl() =>
                            case M n s of inl(x) => let k,p = x in base n s (mon n k s p) | inr(x) => ⊥
                            | inr() =>
                            ind n s (λt.(spector-bar-rec (n + 1) s.t@n))^j - 1 
      ⊥ 
      n 
      s ≤ fix((λhoward-bar-rec,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 (λt.(howard-bar-rec (n + 1) s.t@n)))) 
          n 
          s)
4. n : ℕ
5. s : Base
6. ind : Base
7. base : Base
8. mon : Base
9. M : Base
10. (case case if (n) < (case M n s of inl() => 0 | inr() => n + 1)  then tt  else ff of inl() => ff | inr() => tt
 of inl() =>
 case M n s of inl(x) => let k,p = x in base n s (mon n k s p) | inr(x) => ⊥
 | inr() =>
 ind n s 
 (λt.(λspector-bar-rec,n,s. case case if (n) < (case M n s of inl() => 0 | inr() => n + 1)  then tt  else ff
                                  of inl() =>
                                  ff
                                  | inr() =>
                                  tt
                            of inl() =>
                            case M n s of inl(x) => let k,p = x in base n s (mon n k s p) | inr(x) => ⊥
                            | inr() =>
                            ind n s (λt.(spector-bar-rec (n + 1) s.t@n))^j - 1 
      ⊥ 
      (n + 1) 
      s.t@n)))↓
⊢ case case if (n) < (case M n s of inl() => 0 | inr() => n + 1)  then tt  else ff of inl() => ff | inr() => tt
   of inl() =>
   case M n s of inl(x) => let k,p = x in base n s (mon n k s p) | inr(x) => ⊥
   | inr() =>
   ind n s 
   (λt.(λspector-bar-rec,n,s. case case if (n) < (case M n s of inl() => 0 | inr() => n + 1)  then tt  else ff
                                    of inl() =>
                                    ff
                                    | inr() =>
                                    tt
                              of inl() =>
                              case M n s of inl(x) => let k,p = x in base n s (mon n k s p) | inr(x) => ⊥
                              | inr() =>
                              ind n s (λt.(spector-bar-rec (n + 1) s.t@n))^j - 1 
        ⊥ 
        (n + 1) 
        s.t@n)) ≤ 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.(fix((λhoward-bar-rec,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 (λt.(howard-bar-rec (n + 1) s.t@n)))) 
        (n + 1) 
        s.t@n))
2
1. j : ℤ
2. 0 < j
3. ∀n:ℕ. ∀s,ind,base,mon,M:Base.
     (λspector-bar-rec,n,s. case case if (n) < (case M n s of inl() => 0 | inr() => n + 1)  then tt  else ff
                                  of inl() =>
                                  ff
                                  | inr() =>
                                  tt
                            of inl() =>
                            case M n s of inl(x) => let k,p = x in base n s (mon n k s p) | inr(x) => ⊥
                            | inr() =>
                            ind n s (λt.(spector-bar-rec (n + 1) s.t@n))^j - 1 
      ⊥ 
      n 
      s ≤ fix((λhoward-bar-rec,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 (λt.(howard-bar-rec (n + 1) s.t@n)))) 
          n 
          s)
4. n : ℕ
5. s : Base
6. ind : Base
7. base : Base
8. mon : Base
9. M : Base
10. is-exception(case case if (n) < (case M n s of inl() => 0 | inr() => n + 1)  then tt  else ff
                       of inl() =>
                       ff
                       | inr() =>
                       tt
 of inl() =>
 case M n s of inl(x) => let k,p = x in base n s (mon n k s p) | inr(x) => ⊥
 | inr() =>
 ind n s 
 (λt.(λspector-bar-rec,n,s. case case if (n) < (case M n s of inl() => 0 | inr() => n + 1)  then tt  else ff
                                  of inl() =>
                                  ff
                                  | inr() =>
                                  tt
                            of inl() =>
                            case M n s of inl(x) => let k,p = x in base n s (mon n k s p) | inr(x) => ⊥
                            | inr() =>
                            ind n s (λt.(spector-bar-rec (n + 1) s.t@n))^j - 1 
      ⊥ 
      (n + 1) 
      s.t@n)))
⊢ case case if (n) < (case M n s of inl() => 0 | inr() => n + 1)  then tt  else ff of inl() => ff | inr() => tt
   of inl() =>
   case M n s of inl(x) => let k,p = x in base n s (mon n k s p) | inr(x) => ⊥
   | inr() =>
   ind n s 
   (λt.(λspector-bar-rec,n,s. case case if (n) < (case M n s of inl() => 0 | inr() => n + 1)  then tt  else ff
                                    of inl() =>
                                    ff
                                    | inr() =>
                                    tt
                              of inl() =>
                              case M n s of inl(x) => let k,p = x in base n s (mon n k s p) | inr(x) => ⊥
                              | inr() =>
                              ind n s (λt.(spector-bar-rec (n + 1) s.t@n))^j - 1 
        ⊥ 
        (n + 1) 
        s.t@n)) ≤ 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.(fix((λhoward-bar-rec,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 (λt.(howard-bar-rec (n + 1) s.t@n)))) 
        (n + 1) 
        s.t@n))
Latex:
Latex:
1.  n  :  \mBbbN{}
2.  s  :  Base
3.  ind  :  Base
4.  base  :  Base
5.  mon  :  Base
6.  M  :  Base
\mvdash{}  spector-bar-rec(\mlambda{}n,s.  if  M  n  s  then  0  else  n  +  1  fi  ;\mlambda{}n,s.  case  M  n  s
                                                                                                                  of  inl(x)  =>
                                                                                                                  let  k,p  =  x 
                                                                                                                  in  base  n  s  (mon  n  k  s  p)
                                                                                                                  |  inr(x)  =>
                                                                                                                  \mbot{};ind;n;s)  \mleq{}  howard-bar-rec(M;mon;base;ind;\000Cn;s)
By
Latex:
(RepUR  ``howard-bar-rec  spector-bar-rec  ifthenelse  le\_int  bnot  lt\_int``  0
  THEN  ProveSqFixpointsLe
  THEN  AssumeHasValue)
Home
Index