Nuprl Definition : add-polynom
add-polynom(p;q)
==r if tree_leaf?(p)
      then if tree_leaf?(q)
           then eval a = tree_leaf-value(p) + tree_leaf-value(q) in
                tree_leaf(a)
           else eval a = add-polynom(p;tree_node-left(q)) in
                eval b = tree_node-right(q) in
                  tree_node(a;b)
           fi 
    if tree_leaf?(q) then eval a = add-polynom(tree_node-left(p);q) in eval b = tree_node-right(p) in   tree_node(a;b)
    else eval a = add-polynom(tree_node-left(p);tree_node-left(q)) in
         eval b = add-polynom(tree_node-right(p);tree_node-right(q)) in
           if poly-zero(b) ∧b poly-int(a) then a else tree_node(a;b) fi 
    fi 
add-polynom(p;q) ==
  fix((λadd-polynom,p,q. if tree_leaf?(p)
                           then if tree_leaf?(q)
                                then eval a = tree_leaf-value(p) + tree_leaf-value(q) in
                                     tree_leaf(a)
                                else eval a = add-polynom p tree_node-left(q) in
                                     eval b = tree_node-right(q) in
                                       tree_node(a;b)
                                fi 
                        if tree_leaf?(q)
                          then eval a = add-polynom tree_node-left(p) q in
                               eval b = tree_node-right(p) in
                                 tree_node(a;b)
                        else eval a = add-polynom tree_node-left(p) tree_node-left(q) in
                             eval b = add-polynom tree_node-right(p) tree_node-right(q) in
                               if poly-zero(b) ∧b poly-int(a) then a else tree_node(a;b) fi 
                        fi )) 
  p 
  q
Wellformedness Lemmas : 
add-polynom_wf, 
add-polynom_wf1
Definitions occuring in Statement : 
poly-int: poly-int(p)
, 
poly-zero: poly-zero(p)
, 
tree_node-right: tree_node-right(v)
, 
tree_node-left: tree_node-left(v)
, 
tree_leaf-value: tree_leaf-value(v)
, 
tree_leaf?: tree_leaf?(v)
, 
tree_node: tree_node(left;right)
, 
tree_leaf: tree_leaf(value)
, 
band: p ∧b q
, 
callbyvalue: callbyvalue, 
ifthenelse: if b then t else f fi 
, 
apply: f a
, 
fix: fix(F)
, 
lambda: λx.A[x]
, 
add: n + m
Definitions occuring in definition : 
fix: fix(F)
, 
lambda: λx.A[x]
, 
add: n + m
, 
tree_leaf-value: tree_leaf-value(v)
, 
tree_leaf: tree_leaf(value)
, 
tree_leaf?: tree_leaf?(v)
, 
tree_node-left: tree_node-left(v)
, 
callbyvalue: callbyvalue, 
apply: f a
, 
tree_node-right: tree_node-right(v)
, 
ifthenelse: if b then t else f fi 
, 
band: p ∧b q
, 
poly-zero: poly-zero(p)
, 
poly-int: poly-int(p)
, 
tree_node: tree_node(left;right)
FDL editor aliases : 
add-polynom
Latex:
add-polynom(p;q)
==r  if  tree\_leaf?(p)
            then  if  tree\_leaf?(q)
                      then  eval  a  =  tree\_leaf-value(p)  +  tree\_leaf-value(q)  in
                                tree\_leaf(a)
                      else  eval  a  =  add-polynom(p;tree\_node-left(q))  in
                                eval  b  =  tree\_node-right(q)  in
                                    tree\_node(a;b)
                      fi 
        if  tree\_leaf?(q)
            then  eval  a  =  add-polynom(tree\_node-left(p);q)  in
                      eval  b  =  tree\_node-right(p)  in
                          tree\_node(a;b)
        else  eval  a  =  add-polynom(tree\_node-left(p);tree\_node-left(q))  in
                  eval  b  =  add-polynom(tree\_node-right(p);tree\_node-right(q))  in
                      if  poly-zero(b)  \mwedge{}\msubb{}  poly-int(a)  then  a  else  tree\_node(a;b)  fi 
        fi 
Latex:
add-polynom(p;q)  ==
    fix((\mlambda{}add-polynom,p,q.  if  tree\_leaf?(p)
                                                      then  if  tree\_leaf?(q)
                                                                then  eval  a  =  tree\_leaf-value(p)  +  tree\_leaf-value(q)  in
                                                                          tree\_leaf(a)
                                                                else  eval  a  =  add-polynom  p  tree\_node-left(q)  in
                                                                          eval  b  =  tree\_node-right(q)  in
                                                                              tree\_node(a;b)
                                                                fi 
                                                if  tree\_leaf?(q)
                                                    then  eval  a  =  add-polynom  tree\_node-left(p)  q  in
                                                              eval  b  =  tree\_node-right(p)  in
                                                                  tree\_node(a;b)
                                                else  eval  a  =  add-polynom  tree\_node-left(p)  tree\_node-left(q)  in
                                                          eval  b  =  add-polynom  tree\_node-right(p)  tree\_node-right(q)  in
                                                              if  poly-zero(b)  \mwedge{}\msubb{}  poly-int(a)  then  a  else  tree\_node(a;b)  fi 
                                                fi  )) 
    p 
    q
Date html generated:
2017_10_01-AM-08_32_42
Last ObjectModification:
2017_05_02-PM-06_00_21
Theory : integer!polynomial!trees
Home
Index