Nuprl Definition : add-polynom

add-polynom(n;rmz;p;q)
==r if (n =z 0)
    then q
    else let pp ⟵ p
         in let qq ⟵ q
            in if null(pp) then qq
            if null(qq) then pp
            else eval ||pp|| in
                 eval ||qq|| in
                   if (m) < (k)
                      then let b,bs qq 
                           in let cs ⟵ add-polynom(n;ff;pp;bs)
                              in [b cs]
                      else if (k) < (m)
                              then let a,as pp 
                                   in let cs ⟵ add-polynom(n;ff;as;qq)
                                      in [a cs]
                              else let a,as 
                                   in let b,bs 
                                      in let c ⟵ add-polynom(n 1;tt;a;b)
                                         in let cs ⟵ add-polynom(n;ff;as;bs)
                                            in if rmz then rm-zeros(n 1;[c cs]) else [c cs] fi 
            fi 
    fi 

add-polynom(n;rmz;p;q) ==
  fix((λadd-polynom,n,rmz,p,q. if (n =z 0)
                              then q
                              else let pp ⟵ p
                                   in let qq ⟵ q
                                      in if null(pp) then qq
                                      if null(qq) then pp
                                      else eval ||pp|| in
                                           eval ||qq|| in
                                             if (m) < (k)
                                                then let b,bs qq 
                                                     in let cs ⟵ add-polynom ff pp bs
                                                        in [b cs]
                                                else if (k) < (m)
                                                        then let a,as pp 
                                                             in let cs ⟵ add-polynom ff as qq
                                                                in [a cs]
                                                        else let a,as 
                                                             in let b,bs 
                                                                in let c ⟵ add-polynom (n 1) tt b
                                                                   in let cs ⟵ add-polynom ff as bs
                                                                      in if rmz
                                                                      then rm-zeros(n 1;[c cs])
                                                                      else [c cs]
                                                                      fi 
                                      fi 
                              fi )) 
  
  rmz 
  
  q



Definitions occuring in Statement :  rm-zeros: rm-zeros(n;p) length: ||as|| null: null(as) cons: [a b] callbyvalueall: callbyvalueall callbyvalue: callbyvalue ifthenelse: if then else fi  eq_int: (i =z j) bfalse: ff btrue: tt less: if (a) < (b)  then c  else d apply: a fix: fix(F) lambda: λx.A[x] spread: spread def subtract: m add: m natural_number: $n
Definitions occuring in definition :  fix: fix(F) lambda: λx.A[x] eq_int: (i =z j) add: m null: null(as) callbyvalue: callbyvalue length: ||as|| less: if (a) < (b)  then c  else d spread: spread def btrue: tt callbyvalueall: callbyvalueall apply: a bfalse: ff ifthenelse: if then else fi  rm-zeros: rm-zeros(n;p) subtract: m natural_number: $n cons: [a b]
FDL editor aliases :  add-polynom
Latex:
add-polynom(n;rmz;p;q)
==r  if  (n  =\msubz{}  0)
        then  p  +  q
        else  let  pp  \mleftarrow{}{}  p
                  in  let  qq  \mleftarrow{}{}  q
                        in  if  null(pp)  then  qq
                        if  null(qq)  then  pp
                        else  eval  m  =  ||pp||  in
                                  eval  k  =  ||qq||  in
                                      if  (m)  <  (k)
                                            then  let  b,bs  =  qq 
                                                      in  let  cs  \mleftarrow{}{}  add-polynom(n;ff;pp;bs)
                                                            in  [b  /  cs]
                                            else  if  (k)  <  (m)
                                                            then  let  a,as  =  pp 
                                                                      in  let  cs  \mleftarrow{}{}  add-polynom(n;ff;as;qq)
                                                                            in  [a  /  cs]
                                                            else  let  a,as  =  p 
                                                                      in  let  b,bs  =  q 
                                                                            in  let  c  \mleftarrow{}{}  add-polynom(n  -  1;tt;a;b)
                                                                                  in  let  cs  \mleftarrow{}{}  add-polynom(n;ff;as;bs)
                                                                                        in  if  rmz
                                                                                        then  rm-zeros(n  -  1;[c  /  cs])
                                                                                        else  [c  /  cs]
                                                                                        fi 
                        fi 
        fi 


Latex:
add-polynom(n;rmz;p;q)  ==
    fix((\mlambda{}add-polynom,n,rmz,p,q.  if  (n  =\msubz{}  0)
                                                            then  p  +  q
                                                            else  let  pp  \mleftarrow{}{}  p
                                                                      in  let  qq  \mleftarrow{}{}  q
                                                                            in  if  null(pp)  then  qq
                                                                            if  null(qq)  then  pp
                                                                            else  eval  m  =  ||pp||  in
                                                                                      eval  k  =  ||qq||  in
                                                                                          if  (m)  <  (k)
                                                                                                then  let  b,bs  =  qq 
                                                                                                          in  let  cs  \mleftarrow{}{}  add-polynom  n  ff  pp  bs
                                                                                                                in  [b  /  cs]
                                                                                                else  if  (k)  <  (m)
                                                                                                                then  let  a,as  =  pp 
                                                                                                                          in  let  cs  \mleftarrow{}{}  add-polynom  n  ff  as  qq
                                                                                                                                in  [a  /  cs]
                                                                                                                else  let  a,as  =  p 
                                                                                                                          in  let  b,bs  =  q 
                                                                                                                                in  let  c  \mleftarrow{}{}  add-polynom  (n  -  1)  tt 
                                                                                                                                                        a 
                                                                                                                                                        b
                                                                                                                                      in  let  cs  \mleftarrow{}{}  add-polynom  n  ff  as 
                                                                                                                                                                bs
                                                                                                                                            in  if  rmz
                                                                                                                                            then  rm-zeros(n  -  1;[c  /  cs])
                                                                                                                                            else  [c  /  cs]
                                                                                                                                            fi 
                                                                            fi 
                                                            fi  )) 
    n 
    rmz 
    p 
    q



Date html generated: 2017_09_29-PM-05_59_52
Last ObjectModification: 2017_04_26-PM-02_04_44

Theory : integer!polynomials


Home Index