anchor.diff:    (qsort (qsort terms term-sym) term-pwr))
   
   (defun term-sym (term)
  -  (sym->val (sym (car (vars term)))))
  +  (sym->str (sym (car (vars term)))))
   
   (defun term-pwr (term)
     (pwr (car (vars term))))
  
positive.code: (defun vars (term) (caddr term))
  
  (defun sort-by-sym (vars)
    (qsort vars sym->val))
  
  (defun terms* (terms1 terms2)
    (labels
  
negative.code: (defun sym (var) (car var))
  (defun pwr (var) (cdr var))
  
  (defun sym->str (sym)
    (convert sym <string>))
  
  (defun vars* (vars1 vars2)
    (cond ((and (null vars1) (null vars2)) '())
          ((or (null vars1) (null vars2)) (or vars1 vars2))
          ((< (sym->str (sym (car vars1))) (sym->str (sym (car vars2))))
           (cons (car vars1) (vars* (cdr vars1) vars2)))
          ((> (sym->str (sym (car vars1))) (sym->str (sym (car vars2))))
           (cons (car vars2) (vars* vars1 (cdr vars2))))
          (t (cons (make-var (sym (car vars1)) (+ (pwr (car vars1)) (pwr (car vars2))))
                   (vars* (cdr vars1) (cdr vars2))))))
  