Nuprl Definition : full-evd-proof-step
full-evd-proof-step:
sequent;
fullevd ==
  let H,G = sequent 
  in let evd,eliminated,model = fullevd in 
     (if compute-in-context(eliminated;model;evd) is stopped at f,n then
     if eq_term(f; λx.x) then <hyp, []> else do-elimination-step(H; G; eliminated; model; evd; f; n) fi 
     otherwise evd.let incurrent = λe.<e, eliminated, model> in
                       if evd is a pair
                       then let left,right = evd 
                            in if mFOconnect?(G) ∧b mFOconnect-knd(G) =a "and"
                               then <andI, [incurrent left; incurrent right]>
                               else (if compute-in-context(eliminated;model;left) is stopped at f,n then
                                    do-elimination-step(H; G; eliminated; model; evd; f; n)
                                    otherwise w.<existsI with w, [incurrent right]>)
                               fi  otherwise if evd is lambda then if mFOconnect?(G) ∧b mFOconnect-knd(G) =a "imp"
                                             then eval k = ||H|| in
                                                  <impI, [incurrent (evd stop(k))]>
                                             else eval m = new-mFO-var(H) in
                                                  <allI with new-mFO-var(H), [incurrent (evd m)]>
                                             fi  otherwise if evd is inl then <orI left, [incurrent outl(evd)]>
                                                           else if evd is inr then <orI right, [incurrent outr(evd)]>
                                                                else "can't happen if evd is correct")
Definitions occuring in Statement : 
do-elimination-step: do-elimination-step(H; G; eliminated; model; evd; f; n)
, 
compute-in-context: compute-in-context(constants;functions;t)
, 
new-mFO-var: new-mFO-var(H)
, 
mRulehyp: hyp
, 
mRuleorI: mRuleorI(left)
, 
mRuleexistsI: existsI with var
, 
mRuleallI: allI with var
, 
mRuleimpI: impI
, 
mRuleandI: andI
, 
mFOconnect-knd: mFOconnect-knd(v)
, 
mFOconnect?: mFOconnect?(v)
, 
length: ||as||
, 
cons: [a / b]
, 
nil: []
, 
band: p ∧b q
, 
callbyvalue: callbyvalue, 
outr: outr(x)
, 
outl: outl(x)
, 
ifthenelse: if b then t else f fi 
, 
eq_atom: x =a y
, 
bfalse: ff
, 
btrue: tt
, 
let: let, 
spreadn: spread3, 
ispair: if z is a pair then a otherwise b
, 
islambda: if z is lambda then a otherwise b
, 
isinr: isinr def, 
isinl: isinl def, 
apply: f a
, 
lambda: λx.A[x]
, 
spread: spread def, 
pair: <a, b>
, 
token: "$token"
FDL editor aliases : 
full-evd-proof-step
full-evd-proof-step:
sequent;
fullevd  ==
    let  H,G  =  sequent 
    in  let  evd,eliminated,model  =  fullevd  in 
          (if  compute-in-context(eliminated;model;evd)  is  stopped  at  f,n  then
          if  eq\_term(f;  \mlambda{}x.x)
          then  <hyp,  []>
          else  do-elimination-step(H;  G;  eliminated;  model;  evd;  f;  n)
          fi 
          otherwise  evd.let  incurrent  =  \mlambda{}e.<e,  eliminated,  model>  in
                                              if  evd  is  a  pair
                                              then  let  left,right  =  evd 
                                                        in  if  mFOconnect?(G)  \mwedge{}\msubb{}  mFOconnect-knd(G)  =a  "and"
                                                              then  <andI,  [incurrent  left;  incurrent  right]>
                                                              else  (if  compute-in-context(...;model;left)  is  stopped  at  f,n  then
                                                                        do-elimination-step(H;  G;  eliminated;  model;  evd;  f;  n)
                                                                        otherwise  w.<existsI  with  w,  [incurrent  right]>)
                                                              fi 
                                              otherwise  if  evd  is  lambda  then  if  mFOconnect?(G)
                                                                                                                    \mwedge{}\msubb{}  mFOconnect-knd(G)  =a  "imp"
                                                                  then  eval  k  =  ||H||  in
                                                                            <impI,  [incurrent  (evd  stop(k))]>
                                                                  else  eval  m  =  new-mFO-var(H)  in
                                                                            <allI  with  new-mFO-var(H),  [incurrent  (evd  m)]>
                                                                  fi    otherwise  if  evd  is  inl  then  <orI  left,  [incurrent  outl(evd)]>
                                                                                              else  if  evd  is  inr  then  <orI  right
                                                                                                                                              ,  [incurrent  outr(evd)]
                                                                                                                                              >
                                                                                                        else  "can't  happen  if  evd  is  correct")
Date html generated:
2015_07_17-AM-07_57_25
Last ObjectModification:
2012_12_06-PM-09_00_33
Home
Index