anchor.diff:    (add-activation (get-strategy self)
                     (make-activation rule token)))
   
  +(defmethod increment-time ((self rete))
  +  (incf (get-clock self)))
  +
  +(defmethod record-fact ((self rete) fact)
  +  (with-accessors ((facts get-fact-list)) self
  +    (setf facts
  +      (nconc facts `(,fact)))))
  +
  +(defmethod next-fact-id ((self rete))
  +  (with-accessors ((next-fact-id get-next-fact-id)) self
  +    (prog1
  +        (values next-fact-id)
  +      (incf next-fact-id))))
  +
   (defmethod insert-token ((self rete) (token add-token))
     (call-node-right (get-root-node (get-compiler self)) token))
   
  
positive.code:   (setf (get-fact-id fact) (next-fact-id self))
    (increment-time self)
    (update-time fact self)
    (add-fact-to-engine self fact)
    (insert-token self (make-add-token :initial-fact fact))
    (values fact))
    
  
negative.code:    (clock :initform 0
            :accessor get-clock)
     (fact-list :initform nil
                :accessor get-fact-list)
     (next-fact-id :initform 0
                   :accessor get-next-fact-id))
    (:documentation
     "Represents the inference engine itself."))
  
  