Nuprl Definition : modelEval

modelEval(exname;M;n)
==r let consts,funs 
    in case apply-alist(IntDeq;funs;n)
        of inl(lst) =>
        λi.if is an integer then case apply-alist(IntDeq;lst;i)
            of inl(j) =>
            modelEval(exname;M;j)
            inr(x) =>
            exception(<exname, n, i>)
           else exception(<exname, n, i>)
        inr(x) =>
        case apply-alist(IntDeq;consts;n)
         of inl(x) =>
         let lbl,i,j in 
         if lbl =a "function" then λx.exception(<exname, n, x>)
         if lbl =a "pair" then <modelEval(exname;M;i), modelEval(exname;M;j)>
         if lbl =a "dpair" then <i, modelEval(exname;M;j)>
         if lbl =a "inl" then inl modelEval(exname;M;i)
         if lbl =a "inr" then inr modelEval(exname;M;i) 
         if lbl =a "const" then λx.modelEval(exname;M;i)
         else exception(<exname, n>)
         fi 
         inr(x) =>
         exception(<exname, n>)

modelEval(exname;M;n) ==
  fix((λmodelEval,n. let consts,funs 
                     in case apply-alist(IntDeq;funs;n)
                         of inl(lst) =>
                         λi.if is an integer then case apply-alist(IntDeq;lst;i)
                             of inl(j) =>
                             modelEval j
                             inr(x) =>
                             exception(exname; <n, i>)
                            else exception(exname; <n, i>)
                         inr(x) =>
                         case apply-alist(IntDeq;consts;n)
                          of inl(x) =>
                          let lbl,i,j in 
                          if lbl =a "function" then λx.(exception(exname; <n, x>))
                          if lbl =a "pair" then <modelEval i, modelEval j>
                          if lbl =a "dpair" then <i, modelEval j>
                          if lbl =a "inl" then inl (modelEval i)
                          if lbl =a "inr" then inr (modelEval i) 
                          if lbl =a "const" then λx.(modelEval i)
                          else exception(exname; n)
                          fi 
                          inr(x) =>
                          exception(exname; n))) 
  n



Definitions occuring in Statement :  apply-alist: apply-alist(eq;L;x) int-deq: IntDeq ifthenelse: if then else fi  eq_atom: =a y spreadn: spread3 isint: isint def apply: a fix: fix(F) lambda: λx.A[x] spread: spread def pair: <a, b> decide: case of inl(x) => s[x] inr(y) => t[y] inr: inr  inl: inl x token: "$token"
FDL editor aliases :  modelEval
Latex:

modelEval(exname;M;n)
==r  let  consts,funs  =  M 
        in  case  apply-alist(IntDeq;funs;n)
                of  inl(lst)  =>
                \mlambda{}i.if  i  is  an  integer  then  case  apply-alist(IntDeq;lst;i)
                        of  inl(j)  =>
                        modelEval(exname;M;j)
                        |  inr(x)  =>
                        exception(<exname,  n,  i>)
                      else  exception(<exname,  n,  i>)
                |  inr(x)  =>
                case  apply-alist(IntDeq;consts;n)
                  of  inl(x)  =>
                  let  lbl,i,j  =  x  in 
                  if  lbl  =a  "function"  then  \mlambda{}x.exception(<exname,  n,  x>)
                  if  lbl  =a  "pair"  then  <modelEval(exname;M;i),  modelEval(exname;M;j)>
                  if  lbl  =a  "dpair"  then  <i,  modelEval(exname;M;j)>
                  if  lbl  =a  "inl"  then  inl  modelEval(exname;M;i)
                  if  lbl  =a  "inr"  then  inr  modelEval(exname;M;i) 
                  if  lbl  =a  "const"  then  \mlambda{}x.modelEval(exname;M;i)
                  else  exception(<exname,  n>)
                  fi 
                  |  inr(x)  =>
                  exception(<exname,  n>)

modelEval(exname;M;n)  ==
    fix((\mlambda{}modelEval,n.  let  consts,funs  =  M 
                                          in  case  apply-alist(IntDeq;funs;n)
                                                  of  inl(lst)  =>
                                                  \mlambda{}i.if  i  is  an  integer  then  case  apply-alist(IntDeq;lst;i)
                                                          of  inl(j)  =>
                                                          modelEval  j
                                                          |  inr(x)  =>
                                                          exception(exname;  <n,  i>)
                                                        else  exception(exname;  <n,  i>)
                                                  |  inr(x)  =>
                                                  case  apply-alist(IntDeq;consts;n)
                                                    of  inl(x)  =>
                                                    let  lbl,i,j  =  x  in 
                                                    if  lbl  =a  "function"  then  \mlambda{}x.(exception(exname;  <n,  x>))
                                                    if  lbl  =a  "pair"  then  <modelEval  i,  modelEval  j>
                                                    if  lbl  =a  "dpair"  then  <i,  modelEval  j>
                                                    if  lbl  =a  "inl"  then  inl  (modelEval  i)
                                                    if  lbl  =a  "inr"  then  inr  (modelEval  i) 
                                                    if  lbl  =a  "const"  then  \mlambda{}x.(modelEval  i)
                                                    else  exception(exname;  n)
                                                    fi 
                                                    |  inr(x)  =>
                                                    exception(exname;  n))) 
    n



Date html generated: 2015_07_17-AM-07_57_35
Last ObjectModification: 2015_03_25-AM-10_13_10

Home Index