Step
*
2
2
of Lemma
evalall-append-nil
1. j : ℤ
2. 0 < j
3. ∀l:Base
     ((fix((λevalall,t. eval x = t in
                        if x is a pair then let a,b = x 
                                            in eval a' = evalall a in
                                               eval b' = evalall b in
                                                 <a', b'> otherwise if x is inl then eval y = evalall outl(x) in
                                                                                     inl y
                                                                    else if x is inr then eval y = evalall outr(x) in
                                                                                          inr y 
                                                                         else x)) 
       (l @ []))↓
     
⇒ (λevalall,t. eval x = t in
                     if x is a pair then let a,b = x 
                                         in eval a' = evalall a in
                                            eval b' = evalall b in
                                              <a', b'> otherwise if x is inl then eval y = evalall outl(x) in
                                                                                  inl y
                                                                 else if x is inr then eval y = evalall outr(x) in
                                                                                       inr y 
                                                                      else x^j - 1 
         ⊥ 
         (l @ []))↓
     
⇒ (l ≤ fix((λevalall,t. eval x = t in
                              if x is a pair then let a,b = x 
                                                  in eval a' = evalall a in
                                                     eval b' = evalall b in
                                                       <a', b'> otherwise if x is inl then eval y = evalall outl(x) in
                                                                                           inl y
                                                                          else if x is inr
                                                                               eval y = evalall outr(x) in
                                                                               inr y 
                                                                               else x)) 
             (l @ [])))
4. l : Base@i
5. (fix((λevalall,t. eval x = t in
                     if x is a pair then let a,b = x 
                                         in eval a' = evalall a in
                                            eval b' = evalall b in
                                              <a', b'> otherwise if x is inl then eval y = evalall outl(x) in
                                                                                  inl y
                                                                 else if x is inr then eval y = evalall outr(x) in
                                                                                       inr y 
                                                                      else x)) 
    (inl outl(l @ [])))↓@i
6. (eval y = λevalall,t. eval x = t in
                         if x is a pair then let a,b = x 
                                             in eval a' = evalall a in
                                                eval b' = evalall b in
                                                  <a', b'> otherwise if x is inl then eval y = evalall outl(x) in
                                                                                      inl y
                                                                     else if x is inr then eval y = evalall outr(x) in
                                                                                           inr y 
                                                                          else x^j - 1 
             ⊥ 
             outl(l @ []) in
    inl y)↓@i
7. 0 ≤ 0
8. ∀a,b:Top.  (b ~ b)
9. l @ [] ~ inl outl(l @ [])
⊢ l ≤ eval y = fix((λevalall,t. eval x = t in
                                if x is a pair then let a,b = x 
                                                    in eval a' = evalall a in
                                                       eval b' = evalall b in
                                                         <a', b'> otherwise if x is inl then eval y = evalall outl(x) in
                                                                                             inl y
                                                                            else if x is inr then eval y = evalall 
                                                                                                           outr(x) in
                                                                                                  inr y 
                                                                                 else x)) 
               outl(l @ []) in
      inl y
BY
{ ((InstLemma `ispair-or-isaxiom-append-nil` [⌜l⌝]⋅ THENA (Auto THEN HypSubst (-1) 0 THEN Auto))
   THEN HypSubst (-2) (-1)
   THEN Reduce (-1)
   THEN D (-1)
   THEN Auto)⋅ }
Latex:
Latex:
1.  j  :  \mBbbZ{}
2.  0  <  j
3.  \mforall{}l:Base
          ((fix((\mlambda{}evalall,t.  eval  x  =  t  in
                                                if  x  is  a  pair  then  let  a,b  =  x 
                                                                                        in  eval  a'  =  evalall  a  in
                                                                                              eval  b'  =  evalall  b  in
                                                                                                  <a',  b'>
                                                otherwise  if  x  is  inl  then  eval  y  =  evalall  outl(x)  in
                                                                                                      inl  y
                                                                    else  if  x  is  inr  then  eval  y  =  evalall  outr(x)  in
                                                                                                                inr  y 
                                                                              else  x)) 
              (l  @  []))\mdownarrow{}
          {}\mRightarrow{}  (\mlambda{}evalall,t.  eval  x  =  t  in
                                          if  x  is  a  pair  then  let  a,b  =  x 
                                                                                  in  eval  a'  =  evalall  a  in
                                                                                        eval  b'  =  evalall  b  in
                                                                                            <a',  b'>
                                          otherwise  if  x  is  inl  then  eval  y  =  evalall  outl(x)  in
                                                                                                inl  y
                                                              else  if  x  is  inr  then  eval  y  =  evalall  outr(x)  in
                                                                                                          inr  y 
                                                                        else  x\^{}j  -  1 
                  \mbot{} 
                  (l  @  []))\mdownarrow{}
          {}\mRightarrow{}  (l  \mleq{}  fix((\mlambda{}evalall,t.  eval  x  =  t  in
                                                            if  x  is  a  pair  then  let  a,b  =  x 
                                                                                                    in  eval  a'  =  evalall  a  in
                                                                                                          eval  b'  =  evalall  b  in
                                                                                                              <a',  b'>
                                                            otherwise  if  x  is  inl  then  eval  y  =  evalall  outl(x)  in
                                                                                                                  inl  y
                                                                                else  if  x  is  inr  then  eval  y  =  evalall  outr(x)  in
                                                                                                                            inr  y 
                                                                                          else  x)) 
                          (l  @  [])))
4.  l  :  Base@i
5.  (fix((\mlambda{}evalall,t.  eval  x  =  t  in
                                          if  x  is  a  pair  then  let  a,b  =  x 
                                                                                  in  eval  a'  =  evalall  a  in
                                                                                        eval  b'  =  evalall  b  in
                                                                                            <a',  b'>
                                          otherwise  if  x  is  inl  then  eval  y  =  evalall  outl(x)  in
                                                                                                inl  y
                                                              else  if  x  is  inr  then  eval  y  =  evalall  outr(x)  in
                                                                                                          inr  y 
                                                                        else  x)) 
        (inl  outl(l  @  [])))\mdownarrow{}@i
6.  (eval  y  =  \mlambda{}evalall,t.  eval  x  =  t  in
                                                  if  x  is  a  pair  then  let  a,b  =  x 
                                                                                          in  eval  a'  =  evalall  a  in
                                                                                                eval  b'  =  evalall  b  in
                                                                                                    <a',  b'>
                                                  otherwise  if  x  is  inl  then  eval  y  =  evalall  outl(x)  in
                                                                                                        inl  y
                                                                      else  if  x  is  inr  then  eval  y  =  evalall  outr(x)  in
                                                                                                                  inr  y 
                                                                                else  x\^{}j  -  1 
                          \mbot{} 
                          outl(l  @  [])  in
        inl  y)\mdownarrow{}@i
7.  0  \mleq{}  0
8.  \mforall{}a,b:Top.    (b  \msim{}  b)
9.  l  @  []  \msim{}  inl  outl(l  @  [])
\mvdash{}  l  \mleq{}  eval  y  =  fix((\mlambda{}evalall,t.  eval  x  =  t  in
                                                                if  x  is  a  pair  then  let  a,b  =  x 
                                                                                                        in  eval  a'  =  evalall  a  in
                                                                                                              eval  b'  =  evalall  b  in
                                                                                                                  <a',  b'>
                                                                otherwise  if  x  is  inl  then  eval  y  =  evalall  outl(x)  in
                                                                                                                      inl  y
                                                                                    else  if  x  is  inr  then  eval  y  =  evalall  outr(x)  in
                                                                                                                                inr  y 
                                                                                              else  x)) 
                              outl(l  @  [])  in
            inl  y
By
Latex:
((InstLemma  `ispair-or-isaxiom-append-nil`  [\mkleeneopen{}l\mkleeneclose{}]\mcdot{}  THENA  (Auto  THEN  HypSubst  (-1)  0  THEN  Auto))
  THEN  HypSubst  (-2)  (-1)
  THEN  Reduce  (-1)
  THEN  D  (-1)
  THEN  Auto)\mcdot{}
Home
Index