Step * 1 of Lemma l-last-cons


1. Top
2. Top
⊢ eval in
  if is pair then let h,t 
                      in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then otherwise ⊥ 
if if is pair then ff otherwise if Ax then tt otherwise ⊥
then u
else eval in
     if is pair then let h,t 
                         in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then ⊥ otherwise ⊥
fi 
BY
(SqEqualTopToBase THEN SqequalSqle THEN AssumeHasValue THEN (HasValueD (-1) ORELSE ExceptionCases (-1))) }

1
1. Base
2. Base
3. (if is pair then let h,t 
                        in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then otherwise ⊥)↓
4. (v)↓
⊢ if is pair then let h,t 
                      in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then otherwise ⊥ 
  ≤ if if is pair then ff otherwise if Ax then tt otherwise ⊥
  then u
  else if is pair then let h,t 
                           in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then ⊥ otherwise ⊥
  fi 

2
1. Base
2. Base
3. is-exception(eval in
                if is pair then let h,t 
                                    in rec-case(t) of [] => λx.x h::t => r.λx.(r h) h
                otherwise if Ax then otherwise ⊥)
4. (v)↓
⊢ eval in
  if is pair then let h,t 
                      in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then otherwise ⊥ 
  ≤ if if is pair then ff otherwise if Ax then tt otherwise ⊥
  then u
  else eval in
       if is pair then let h,t 
                           in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then ⊥ otherwise ⊥
  fi 

3
1. Base
2. Base
3. is-exception(eval in
                if is pair then let h,t 
                                    in rec-case(t) of [] => λx.x h::t => r.λx.(r h) h
                otherwise if Ax then otherwise ⊥)
4. is-exception(v)
⊢ eval in
  if is pair then let h,t 
                      in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then otherwise ⊥ 
  ≤ if if is pair then ff otherwise if Ax then tt otherwise ⊥
  then u
  else eval in
       if is pair then let h,t 
                           in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then ⊥ otherwise ⊥
  fi 

4
1. Base
2. Base
3. (if if is pair then ff otherwise if Ax then tt otherwise ⊥
then u
else eval in
     if is pair then let h,t 
                         in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then ⊥ otherwise ⊥
fi )↓
4. if is pair then ff otherwise if Ax then tt otherwise ⊥ ∈ Top Top
⊢ if if is pair then ff otherwise if Ax then tt otherwise ⊥
  then u
  else eval in
       if is pair then let h,t 
                           in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then ⊥ otherwise ⊥
  fi  ≤ eval in
        if is pair then let h,t 
                            in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then otherwise ⊥

5
1. Base
2. Base
3. is-exception(case if is pair then ff otherwise if Ax then tt otherwise ⊥
 of inl() =>
 u
 inr() =>
 eval in
 if is pair then let h,t 
                     in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then ⊥ otherwise ⊥)
4. if is pair then ff otherwise if Ax then tt otherwise ⊥ ∈ Top Top
⊢ if if is pair then ff otherwise if Ax then tt otherwise ⊥
  then u
  else eval in
       if is pair then let h,t 
                           in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then ⊥ otherwise ⊥
  fi  ≤ eval in
        if is pair then let h,t 
                            in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then otherwise ⊥

6
1. Base
2. Base
3. is-exception(case if is pair then ff otherwise if Ax then tt otherwise ⊥
 of inl() =>
 u
 inr() =>
 eval in
 if is pair then let h,t 
                     in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then ⊥ otherwise ⊥)
4. is-exception(if is pair then ff otherwise if Ax then tt otherwise ⊥)
⊢ if if is pair then ff otherwise if Ax then tt otherwise ⊥
  then u
  else eval in
       if is pair then let h,t 
                           in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then ⊥ otherwise ⊥
  fi  ≤ eval in
        if is pair then let h,t 
                            in rec-case(t) of [] => λx.x h::t => r.λx.(r h) otherwise if Ax then otherwise ⊥


Latex:


Latex:

1.  u  :  Top
2.  v  :  Top
\mvdash{}  eval  v  =  v  in
    if  v  is  a  pair  then  let  h,t  =  v 
                                            in  rec-case(t)  of  []  =>  \mlambda{}x.x  |  h::t  =>  r.\mlambda{}x.(r  h)  h  otherwise  if  v  =  Ax  then  u
                                                                                                                                                                        otherwise  \mbot{} 
\msim{}  if  if  v  is  a  pair  then  ff  otherwise  if  v  =  Ax  then  tt  otherwise  \mbot{}
then  u
else  eval  v  =  v  in
          if  v  is  a  pair  then  let  h,t  =  v 
                                                  in  rec-case(t)  of  []  =>  \mlambda{}x.x  |  h::t  =>  r.\mlambda{}x.(r  h)  h
          otherwise  if  v  =  Ax  then  \mbot{}  otherwise  \mbot{}
fi 


By


Latex:
(SqEqualTopToBase
  THEN  SqequalSqle
  THEN  AssumeHasValue
  THEN  (HasValueD  (-1)  ORELSE  ExceptionCases  (-1)))




Home Index