Nuprl Definition : mult-polynom
mult-polynom(n;p;q)
==r eval pp = p in
    eval qq = q in
      if poly-zero(n;pp) then pp
      if poly-zero(n;qq) then qq
      else eval zero = polyconst(n;0) in
           if n=0
              then pp * qq
              else eval m = n - 1 in
                   cbv_list_accum(z,a.eval zero' = polyconst(m;0) in
                                      eval z' = if null(z) then [] else eager-append(z;[zero']) fi  in
                                      eval aq = if poly-zero(m;a) then [] else map-rev(λx.mult-polynom(m;a;x);qq) fi  in
                                        add-polyn(n;z';aq);zero;pp)
      fi 
mult-polynom(n;p;q) ==
  fix((λmult-polynom,n,p,q. eval pp = p in
                            eval qq = q in
                              if poly-zero(n;pp) then pp
                              if poly-zero(n;qq) then qq
                              else eval zero = polyconst(n;0) in
                                   if n=0
                                      then pp * qq
                                      else eval m = n - 1 in
                                           cbv_list_accum(z,a.eval zero' = polyconst(m;0) in
                                                              eval z' = if null(z)
                                                                        then []
                                                                        else eager-append(z;[zero'])
                                                                        fi  in
                                                              eval aq = if poly-zero(m;a)
                                                                        then []
                                                                        else map-rev(λx.(mult-polynom m a x);qq)
                                                                        fi  in
                                                                add-polyn(n;z';aq);zero;pp)
                              fi )) 
  n 
  p 
  q
Definitions occuring in Statement : 
polyconst: polyconst(n;k)
, 
add-polyn: add-polyn(n;p;q)
, 
poly-zero: poly-zero(n;p)
, 
map-rev: map-rev(f;L)
, 
cbv_list_accum: cbv_list_accum(x,a.f[x; a];y;L)
, 
null: null(as)
, 
eager-append: eager-append(as;bs)
, 
cons: [a / b]
, 
nil: []
, 
callbyvalue: callbyvalue, 
ifthenelse: if b then t else f fi 
, 
int_eq: if a=b  then c  else d
, 
apply: f a
, 
fix: fix(F)
, 
lambda: λx.A[x]
, 
multiply: n * m
, 
subtract: n - m
, 
natural_number: $n
Definitions occuring in definition : 
fix: fix(F)
, 
int_eq: if a=b  then c  else d
, 
multiply: n * m
, 
subtract: n - m
, 
cbv_list_accum: cbv_list_accum(x,a.f[x; a];y;L)
, 
polyconst: polyconst(n;k)
, 
natural_number: $n
, 
null: null(as)
, 
eager-append: eager-append(as;bs)
, 
cons: [a / b]
, 
callbyvalue: callbyvalue, 
ifthenelse: if b then t else f fi 
, 
poly-zero: poly-zero(n;p)
, 
nil: []
, 
map-rev: map-rev(f;L)
, 
lambda: λx.A[x]
, 
apply: f a
, 
add-polyn: add-polyn(n;p;q)
FDL editor aliases : 
mult-polynom
Latex:
mult-polynom(n;p;q)
==r  eval  pp  =  p  in
        eval  qq  =  q  in
            if  poly-zero(n;pp)
                then  pp
            if  poly-zero(n;qq)
                then  qq
            else  eval  zero  =  polyconst(n;0)  in
                      if  n=0
                            then  pp  *  qq
                            else  eval  m  =  n  -  1  in
                                      cbv\_list\_accum(z,a.eval  zero'  =  polyconst(m;0)  in
                                                                            ...;zero;pp)
            fi 
Latex:
mult-polynom(n;p;q)  ==
    fix((\mlambda{}mult-polynom,n,p,q.
                                                      eval  pp  =  p  in
                                                      eval  qq  =  q  in
                                                          if  poly-zero(n;pp)
                                                              then  pp
                                                          if  poly-zero(n;qq)
                                                              then  qq
                                                          else  eval  zero  =  polyconst(n;0)  in
                                                                    if  n=0
                                                                          then  pp  *  qq
                                                                          else  eval  m  =  n  -  1  in
                                                                                    cbv\_list\_accum(z,a.eval  zero'  =  polyconst(m;0)  in
                                                                                                                          eval  z'  =  if  null(z)
                                                                                                                                              then  []
                                                                                                                                              else  eager-append(z;[zero'])
                                                                                                                                              fi    in
                                                                                                                          eval  aq  =  if  poly-zero(m;a)
                                                                                                                                              then  []
                                                                                                                                              else  map-rev(\mlambda{}x.(... 
                                                                                                                                                                                m 
                                                                                                                                                                                a 
                                                                                                                                                                                x);qq)
                                                                                                                                              fi    in
                                                                                                                              add-polyn(n;z';aq);zero;pp)
                                                          fi  )) 
    n 
    p 
    q
Date html generated:
2017_09_29-PM-06_00_43
Last ObjectModification:
2017_04_27-PM-05_50_12
Theory : integer!polynomials
Home
Index