Step * 1 1 1 of Lemma rec-value-evalall


1. : ℤ
2. 0 < j
3. ∀x:Base
     ((λevalall,t. eval in
                   if is pair then let a,b 
                                       in eval a' evalall in
                                          eval b' evalall in
                                            <a', b'> otherwise if is inl then eval evalall outl(x) in
                                                                                inl y
                                                               else if is inr then eval evalall outr(x) in
                                                                                     inr 
                                                                    else x^j 
       ⊥ 
       x)↓
      (x ∈ rec-value()))
4. Base@i
5. (if is pair then let a,b 
                        in eval a' = λevalall,t. eval in
                                                 if is pair then let a,b 
                                                                     in eval a' evalall in
                                                                        eval b' evalall in
                                                                          <a', b'>
                                                 otherwise if is inl then eval evalall outl(x) in
                                                                            inl y
                                                           else if is inr then eval evalall outr(x) in
                                                                                 inr 
                                                                else x^j 
                                     ⊥ 
                                     in
                           eval b' = λevalall,t. eval in
                                                 if is pair then let a,b 
                                                                     in eval a' evalall in
                                                                        eval b' evalall in
                                                                          <a', b'>
                                                 otherwise if is inl then eval evalall outl(x) in
                                                                            inl y
                                                           else if is inr then eval evalall outr(x) in
                                                                                 inr 
                                                                else x^j 
                                     ⊥ 
                                     in
                             <a', b'>
    otherwise if is inl then eval = λevalall,t. eval in
                                                    if is pair then let a,b 
                                                                        in eval a' evalall in
                                                                           eval b' evalall in
                                                                             <a', b'>
                                                    otherwise if is inl then eval evalall outl(x) in
                                                                               inl y
                                                              else if is inr then eval evalall outr(x) in
                                                                                    inr 
                                                                   else x^j 
                                        ⊥ 
                                        outl(x) in
                               inl y
              else if is inr then eval = λevalall,t. eval in
                                                         if is pair then let a,b 
                                                                             in eval a' evalall in
                                                                                eval b' evalall in
                                                                                  <a', b'>
                                                         otherwise if is inl then eval evalall outl(x) in
                                                                                    inl y
                                                                   else if is inr then eval evalall outr(x) in
                                                                                         inr 
                                                                        else x^j 
                                             ⊥ 
                                             outr(x) in
                                    inr 
                   else x)↓
6. (x)↓
⊢ x ∈ rec-value()
BY
HasValueImplies2 [1] }

1
1. : ℤ
2. 0 < j
3. ∀x:Base
     ((λevalall,t. eval in
                   if is pair then let a,b 
                                       in eval a' evalall in
                                          eval b' evalall in
                                            <a', b'> otherwise if is inl then eval evalall outl(x) in
                                                                                inl y
                                                               else if is inr then eval evalall outr(x) in
                                                                                     inr 
                                                                    else x^j 
       ⊥ 
       x)↓
      (x ∈ rec-value()))
4. Base@i
5. (if is pair then let a,b 
                        in eval a' = λevalall,t. eval in
                                                 if is pair then let a,b 
                                                                     in eval a' evalall in
                                                                        eval b' evalall in
                                                                          <a', b'>
                                                 otherwise if is inl then eval evalall outl(x) in
                                                                            inl y
                                                           else if is inr then eval evalall outr(x) in
                                                                                 inr 
                                                                else x^j 
                                     ⊥ 
                                     in
                           eval b' = λevalall,t. eval in
                                                 if is pair then let a,b 
                                                                     in eval a' evalall in
                                                                        eval b' evalall in
                                                                          <a', b'>
                                                 otherwise if is inl then eval evalall outl(x) in
                                                                            inl y
                                                           else if is inr then eval evalall outr(x) in
                                                                                 inr 
                                                                else x^j 
                                     ⊥ 
                                     in
                             <a', b'>
    otherwise if is inl then eval = λevalall,t. eval in
                                                    if is pair then let a,b 
                                                                        in eval a' evalall in
                                                                           eval b' evalall in
                                                                             <a', b'>
                                                    otherwise if is inl then eval evalall outl(x) in
                                                                               inl y
                                                              else if is inr then eval evalall outr(x) in
                                                                                    inr 
                                                                   else x^j 
                                        ⊥ 
                                        outl(x) in
                               inl y
              else if is inr then eval = λevalall,t. eval in
                                                         if is pair then let a,b 
                                                                             in eval a' evalall in
                                                                                eval b' evalall in
                                                                                  <a', b'>
                                                         otherwise if is inl then eval evalall outl(x) in
                                                                                    inl y
                                                                   else if is inr then eval evalall outr(x) in
                                                                                         inr 
                                                                        else x^j 
                                             ⊥ 
                                             outr(x) in
                                    inr 
                   else x)↓
6. (x)↓
7. ~ <fst(x), snd(x)>
⊢ x ∈ rec-value()

2
1. : ℤ
2. 0 < j
3. ∀x:Base
     ((λevalall,t. eval in
                   if is pair then let a,b 
                                       in eval a' evalall in
                                          eval b' evalall in
                                            <a', b'> otherwise if is inl then eval evalall outl(x) in
                                                                                inl y
                                                               else if is inr then eval evalall outr(x) in
                                                                                     inr 
                                                                    else x^j 
       ⊥ 
       x)↓
      (x ∈ rec-value()))
4. Base@i
5. (if is pair then let a,b 
                        in eval a' = λevalall,t. eval in
                                                 if is pair then let a,b 
                                                                     in eval a' evalall in
                                                                        eval b' evalall in
                                                                          <a', b'>
                                                 otherwise if is inl then eval evalall outl(x) in
                                                                            inl y
                                                           else if is inr then eval evalall outr(x) in
                                                                                 inr 
                                                                else x^j 
                                     ⊥ 
                                     in
                           eval b' = λevalall,t. eval in
                                                 if is pair then let a,b 
                                                                     in eval a' evalall in
                                                                        eval b' evalall in
                                                                          <a', b'>
                                                 otherwise if is inl then eval evalall outl(x) in
                                                                            inl y
                                                           else if is inr then eval evalall outr(x) in
                                                                                 inr 
                                                                else x^j 
                                     ⊥ 
                                     in
                             <a', b'>
    otherwise if is inl then eval = λevalall,t. eval in
                                                    if is pair then let a,b 
                                                                        in eval a' evalall in
                                                                           eval b' evalall in
                                                                             <a', b'>
                                                    otherwise if is inl then eval evalall outl(x) in
                                                                               inl y
                                                              else if is inr then eval evalall outr(x) in
                                                                                    inr 
                                                                   else x^j 
                                        ⊥ 
                                        outl(x) in
                               inl y
              else if is inr then eval = λevalall,t. eval in
                                                         if is pair then let a,b 
                                                                             in eval a' evalall in
                                                                                eval b' evalall in
                                                                                  <a', b'>
                                                         otherwise if is inl then eval evalall outl(x) in
                                                                                    inl y
                                                                   else if is inr then eval evalall outr(x) in
                                                                                         inr 
                                                                        else x^j 
                                             ⊥ 
                                             outr(x) in
                                    inr 
                   else x)↓
6. (x)↓
7. ∀a,b:Base.  (if is pair then otherwise b)
⊢ x ∈ rec-value()


Latex:


Latex:

1.  j  :  \mBbbZ{}
2.  0  <  j
3.  \mforall{}x:Base
          ((\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
                                                                                                                                        eval  y  =  evalall  outr(x)  in
                                                                                                                                        inr  y 
                                                                                                                                        else  x\^{}j  -  1 
              \mbot{} 
              x)\mdownarrow{}
          {}\mRightarrow{}  (x  \mmember{}  rec-value()))
4.  x  :  Base@i
5.  (if  x  is  a  pair  then  let  a,b  =  x 
                                                in  eval  a'  =  \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
                                                                                                                      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{} 
                                                                          a  in
                                                      eval  b'  =  \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
                                                                                                                      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{} 
                                                                          b  in
                                                          <a',  b'>
        otherwise  if  x  is  inl  then  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
                                                                                                                                      eval  y  =  evalall  outr(x)  in
                                                                                                                                      inr  y 
                                                                                                                                      else  x\^{}j  -  1 
                                                                                \mbot{} 
                                                                                outl(x)  in
                                                              inl  y
                            else  if  x  is  inr  then  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
                                                                                                                                      eval  y  =  evalall  outl(x)  in
                                                                                                                                      inl  y
                                                                                                                                      else  if  x  is  inr
                                                                                                                                                eval  y  =  evalall  outr(x)  in
                                                                                                                                                inr  y 
                                                                                                                                                else  x\^{}j  -  1 
                                                                                          \mbot{} 
                                                                                          outr(x)  in
                                                                        inr  y 
                                      else  x)\mdownarrow{}
6.  (x)\mdownarrow{}
\mvdash{}  x  \mmember{}  rec-value()


By


Latex:
HasValueImplies2  5  [1]




Home Index