Nuprl Definition : do-elimination-step
do-elimination-step(H; G; eliminated; model; evd; f; n) ==
  let incurrent = λe.<e, eliminated, model> in
      let m,a = elimination-step(H;eliminated;model;f;n) 
      in let eliminate = λt.<evd, [<m, t> / eliminated], model> in
             eval k = ||H|| in
             eval hnum = k - m + 1 in
             eval hyp = H[hnum] in
               mFOL_ind(hyp;
                        mFOatomic(P,vars)⇒ "stopped on a atomic hyp??";
                        mFOconnect(knd,A,B)⇒ _,__.if knd =a "imp"
                                                     then <impE on hnum, [incurrent a; eliminate (λx.stop(k))]>
                        if knd =a "and" then <andE on hnum, [eliminate <stop(k + 1), stop(k)>]>
                        if knd =a "or" then <orE on hnum, [eliminate (inl stop(k)); eliminate (inr stop(k) )]>
                        else "funny connective??"
                        fi
                        mFOquant(isall,v,body)⇒ _.if isall
                        then eval model' = update-alist(IntDeq;model;m;[<a, stop(k)>];table.[<a, stop(k)> / table]) in
                             <allE on hnum with a, [<evd, eliminated, model'>]>
                        else eval j = new-mFO-var([G / H]) in
                             <existsE on hnum with j, [eliminate <j, stop(k)>]>
                        fi ) 
Definitions occuring in Statement : 
elimination-step: elimination-step(H;eliminated;model;f;n), 
new-mFO-var: new-mFO-var(H), 
mRuleexistsE: existsE on hypnum with var, 
mRuleallE: allE on hypnum with var, 
mRuleimpE: impE on hypnum, 
mRuleorE: orE on hypnum, 
mRuleandE: andE on hypnum, 
mFOL_ind: mFOL_ind, 
update-alist: update-alist(eq;L;x;z;v.f[v]), 
int-deq: IntDeq, 
select: L[n], 
length: ||as||, 
cons: [a / b], 
nil: [], 
callbyvalue: callbyvalue, 
ifthenelse: if b then t else f fi , 
eq_atom: x =a y, 
let: let, 
apply: f a, 
lambda: λx.A[x], 
spread: spread def, 
pair: <a, b>, 
inr: inr x , 
inl: inl x, 
subtract: n - m, 
add: n + m, 
natural_number: $n, 
token: "$token"
do-elimination-step(H;  G;  eliminated;  model;  evd;  f;  n)  ==
    let  incurrent  =  \mlambda{}e.<e,  eliminated,  model>  in
            let  m,a  =  elimination-step(H;eliminated;model;f;n) 
            in  let  eliminate  =  \mlambda{}t.<evd,  [<m,  t>  /  eliminated],  model>  in
                          eval  k  =  ||H||  in
                          eval  hnum  =  k  -  m  +  1  in
                          eval  hyp  =  H[hnum]  in
                              mFOL\_ind(hyp;
                                                mFOatomic(P,vars){}\mRightarrow{}  "stopped  on  a  atomic  hyp??";
                                                mFOconnect(knd,A,B){}\mRightarrow{}  $_{}$,\_$_{}$.i\000Cf  knd  =a  "imp"
                                                                                                      then  <impE  on  hnum
                                                                                                                ,  [incurrent  a;  eliminate  (\mlambda{}x.stop(k))]
                                                                                                                >
                                                if  knd  =a  "and"  then  <andE  on  hnum,  [eliminate  <stop(k  +  1),  stop(k)>]>
                                                if  knd  =a  "or"
                                                    then  <orE  on  hnum,  [eliminate  (inl  stop(k));  eliminate  (inr  stop(k)  )]>
                                                else  "funny  connective??"
                                                fi  ;
                                                mFOquant(isall,v,body){}\mRightarrow{}  $_{}$.if  isall
                                                then  eval  model'  =  update-alist(IntDeq;model;m;[<a,  stop(k)>];table.[<a,  sto\000Cp(k)>  /  table])  in
                                                          <allE  on  hnum  with  a,  [<evd,  eliminated,  model'>]>
                                                else  eval  j  =  new-mFO-var([G  /  H])  in
                                                          <existsE  on  hnum  with  j,  [eliminate  <j,  stop(k)>]>
                                                fi  ) 
Date html generated:
2015_07_17-AM-07_57_24
Last ObjectModification:
2012_12_06-PM-08_59_58
Home
Index