Nuprl Definition : add-ipoly-prepend

add-ipoly-prepend(p;q;l)
==r eval pp in
    eval qq in
      if pp Ax then rev(l) qq
      otherwise if qq Ax then rev(l) pp otherwise let p1,ps pp 
                                                      in let q1,qs qq 
                                                         in if imonomial-le(p1;q1)
                                                            then if imonomial-le(q1;p1)
                                                                 then let cp,vs p1 
                                                                      in eval cp (fst(q1)) in
                                                                         eval l' if c=0  then l  else [<c, vs> l] in
                                                                           add-ipoly-prepend(ps;qs;l')
                                                                 else add-ipoly-prepend(ps;[q1 qs];[p1 l])
                                                                 fi 
                                                            else add-ipoly-prepend([p1 ps];qs;[q1 l])
                                                            fi 

add-ipoly-prepend(p;q;l) ==
  fix((λadd-ipoly-prepend,p,q,l. eval pp in
                                 eval qq in
                                   if pp Ax then rev(l) qq
                                   otherwise if qq Ax then rev(l) pp
                                             otherwise let p1,ps pp 
                                                       in let q1,qs qq 
                                                          in if imonomial-le(p1;q1)
                                                             then if imonomial-le(q1;p1)
                                                                  then let cp,vs p1 
                                                                       in eval cp (fst(q1)) in
                                                                          eval l' if c=0
                                                                                       then l
                                                                                       else [<c, vs> l] in
                                                                            add-ipoly-prepend ps qs l'
                                                                  else add-ipoly-prepend ps [q1 qs] [p1 l]
                                                                  fi 
                                                             else add-ipoly-prepend [p1 ps] qs [q1 l]
                                                             fi )) 
  
  
  l



Definitions occuring in Statement :  imonomial-le: imonomial-le(m1;m2) rev-append: rev(as) bs cons: [a b] callbyvalue: callbyvalue ifthenelse: if then else fi  pi1: fst(t) isaxiom: if Ax then otherwise b int_eq: if a=b  then c  else d apply: a fix: fix(F) lambda: λx.A[x] spread: spread def pair: <a, b> add: m natural_number: $n
Definitions occuring in definition :  fix: fix(F) lambda: λx.A[x] isaxiom: if Ax then otherwise b rev-append: rev(as) bs ifthenelse: if then else fi  imonomial-le: imonomial-le(m1;m2) spread: spread def add: m pi1: fst(t) callbyvalue: callbyvalue int_eq: if a=b  then c  else d natural_number: $n pair: <a, b> apply: a cons: [a b]
FDL editor aliases :  add-ipoly-prepend
Latex:
add-ipoly-prepend(p;q;l)
==r  eval  pp  =  p  in
        eval  qq  =  q  in
            if  pp  =  Ax  then  rev(l)  +  qq
            otherwise  if  qq  =  Ax  then  rev(l)  +  pp
                                otherwise  let  p1,ps  =  pp 
                                                    in  let  q1,qs  =  qq 
                                                          in  if  imonomial-le(p1;q1)
                                                                then  if  imonomial-le(q1;p1)
                                                                          then  let  cp,vs  =  p1 
                                                                                    in  eval  c  =  cp  +  (fst(q1))  in
                                                                                          eval  l'  =  if  c=0    then  l    else  [<c,  vs>  /  l]  in
                                                                                              add-ipoly-prepend(ps;qs;l')
                                                                          else  add-ipoly-prepend(ps;[q1  /  qs];[p1  /  l])
                                                                          fi 
                                                                else  add-ipoly-prepend([p1  /  ps];qs;[q1  /  l])
                                                                fi 


Latex:
add-ipoly-prepend(p;q;l)  ==
    fix((\mlambda{}add-ipoly-prepend,p,q,l.
                                                                eval  pp  =  p  in
                                                                eval  qq  =  q  in
                                                                    if  pp  =  Ax  then  rev(l)  +  qq
                                                                    otherwise  if  qq  =  Ax  then  rev(l)  +  pp
                                                                                        otherwise  let  p1,ps  =  pp 
                                                                                                            in  let  q1,qs  =  qq 
                                                                                                                  in  if  imonomial-le(p1;q1)
                                                                                                                        then  if  imonomial-le(q1;p1)
                                                                                                                                  then  let  cp,vs  =  p1 
                                                                                                                                            in  eval  c  =  cp  +  (fst(q1))  in
                                                                                                                                                  eval  l'  =  if  c=0
                                                                                                                                                                            then  l
                                                                                                                                                                            else  [...  / 
                                                                                                                                                                                        l]  in
                                                                                                                                                      add-ipoly-prepend  ps  qs 
                                                                                                                                                      l'
                                                                                                                                  else  add-ipoly-prepend  ps 
                                                                                                                                            [q1  /  qs] 
                                                                                                                                            [p1  /  l]
                                                                                                                                  fi 
                                                                                                                        else  add-ipoly-prepend  [p1  /  ps]  qs 
                                                                                                                                  [q1  /  l]
                                                                                                                        fi  )) 
    p 
    q 
    l



Date html generated: 2017_09_29-PM-05_52_47
Last ObjectModification: 2017_05_04-PM-02_58_49

Theory : omega


Home Index