anchor.diff:                   (let ((bindings (list)))
                      (cond ((simple-form-p constraint)
                             (values 
  -                           (make-equality-predicate var constraint) nil nil))
  +                           (make-equality-predicate var constraint) 
  +                           (list (find-slot-binding var)) nil))
                            ((simple-negated-form-p constraint)
                             (values (make-equality-predicate 
                                      var (second constraint))
  -                                  nil t))
  +                                  (list (find-slot-binding var)) t))
                            (t
                             (values (make-generic-predicate constraint)
                                     (collect-constraint-bindings
  
positive.code: (defmacro make-equality-predicate (var atom)
    `(function
      (lambda ()
        (equal (symbol-value ,var) ,@(if (symbolp atom) `(',atom) `(,atom))))))
  
  (defmacro make-generic-predicate (&rest body)
    `(function (lambda () ,@body)))
  
  (defun find-or-set-slot-binding (var slot-name location)
    (multiple-value-bind (binding existsp)
  
negative.code: ;;; modify) is performed elsewhere as these constructs undergo additional
  ;;; transformations.
  ;;;
  ;;; $Id: parser.lisp,v 1.30 2002/09/26 19:13:13 youngde Exp $
  
  (in-package "LISA")
  
  