Nuprl Definition : mult-polynom

mult-polynom(n;p;q)
==r eval pp in
    eval qq 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 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 in
                            eval qq 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 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 x);qq)
                                                                        fi  in
                                                                add-polyn(n;z';aq);zero;pp)
                              fi )) 
  
  
  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 then else fi  int_eq: if a=b  then c  else d apply: a fix: fix(F) lambda: λx.A[x] multiply: m subtract: m natural_number: $n
Definitions occuring in definition :  fix: fix(F) int_eq: if a=b  then c  else d multiply: m subtract: 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 then else fi  poly-zero: poly-zero(n;p) nil: [] map-rev: map-rev(f;L) lambda: λx.A[x] apply: 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