anchor.diff:    (lambda (token)
       (if (zerop (attr token)) nil token)))
   
  -; Construct the terms of a polynomial
   (defun make-termlist (terms)
     (make-tokenlist terms))
   
  -; Construct the variables of a term
   (defun make-varlist (variables)
     (make-tokenlist variables))
   
  
positive.code:   (varreduce (append vars1 vars2)))
  
  ; Multiply two variables
  ; Only used with variables with the same symbol
  (defun var* (var1 var2)
    (make-var (sym var1)
              (+ (pwr var1) (pwr var2))))
  
  ; Simplify polynomial by adding terms of the same order
  (defun polyreduce (poly)
    ((tokenreduce term+ equal-order) poly))
  
  ; Multiply variables with the same symbol
  (defun varreduce (variables)
    ((tokenreduce var* equal-sym) variables))
  
  
negative.code:     (lambda (token2)
        (fun (equal (attr token1) (attr token2))))))
  
  ; Simplify term
  ;; Return an empty list if it evaluates to zero
  (defun term-simplify (term)
    ((token-simplify coeff) term))
  
  ; Simplify variable
  ;; Return an empty list if it evaluates to one
  (defun var-simplify (variable)
    ((token-simplify pwr) variable))
  
  