Nuprl Definition : add-polynom
add-polynom(n;rmz;p;q)
==r if (n =z 0)
    then p + q
    else let pp ⟵ p
         in let qq ⟵ 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 ⟵ 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 = p 
                                   in let b,bs = q 
                                      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 p + q
                              else let pp ⟵ p
                                   in let qq ⟵ 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 ⟵ 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 = p 
                                                             in let b,bs = q 
                                                                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 )) 
  n 
  rmz 
  p 
  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 b then t else f fi 
, 
eq_int: (i =z j)
, 
bfalse: ff
, 
btrue: tt
, 
less: if (a) < (b)  then c  else d
, 
apply: f a
, 
fix: fix(F)
, 
lambda: λx.A[x]
, 
spread: spread def, 
subtract: n - m
, 
add: n + m
, 
natural_number: $n
Definitions occuring in definition : 
cons: [a / b]
, 
natural_number: $n
, 
subtract: n - m
, 
rm-zeros: rm-zeros(n;p)
, 
ifthenelse: if b then t else f fi 
, 
bfalse: ff
, 
apply: f a
, 
callbyvalueall: callbyvalueall, 
btrue: tt
, 
spread: spread def, 
less: if (a) < (b)  then c  else d
, 
length: ||as||
, 
callbyvalue: callbyvalue, 
null: null(as)
, 
add: n + m
, 
eq_int: (i =z j)
, 
lambda: λx.A[x]
, 
fix: fix(F)
FDL editor aliases : 
add-polynom
add-polynom
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_04_17-AM-09_06_26
Last ObjectModification:
2017_04_14-AM-10_53_07
Theory : list_1
Home
Index