anchor.diff:               (filter (equal-fun not (car tokens)) (cdr tokens))))
         nil)))
   
  +; Return whether two terms
  +; are of the same order
   (defun equal-order (fun term)
     ((equal-token vars) fun term))
   
  +; Return whether two variables
  +; have the same symbol
   (defun equal-sym (fun var)
     ((equal-token sym) fun var))
   
  
positive.code: (defun term*-out (term2)
    (lambda (term1) (term* term1 term2)))
  
  (defun termnegate (term)
    (cons (- (coeff term)) (list (vars term))))
  
  (defun var* (var1 var2)
    (make-var (sym var1)
              (+ (pwr var1) (pwr var2))))
  
  (defun polyreduce (poly)
    ((tokenreduce term+ equal-order) poly))
  
  (defun varreduce (variables)
    ((tokenreduce var* equal-sym) variables))
  
  
negative.code:     (lambda (token2)
        (fun (equal (attr token1) (attr token2))))))
  
  ; Return an empty list if the term
  ; evaluates to zero
  (defun term-simplify (term)
    ((token-simplify coeff) term))
  
  ; Return an empty list of the variable
  ; evaluates to one (i.e. power is zero)
  (defun var-simplify (variable)
    ((token-simplify pwr) variable))
  
  