anchor.diff:      (let ((cpt (node-cpt node)))
         (maphash #'(lambda (key-list potential)
                      (format t "~S -> ~S~%" key-list potential)) cpt))))
  -
  -#+-(defun print-hash-entry (key-list potential)
  -    (format t "~S -> ~S~%" key-list potential))
   
   (defgeneric node-variables (node)
     (:documentation
  
positive.code:              (list name value))
             values))))
    
  ;;; returns the node type for a discrete node
  ;;; it casts node-values into a list and returns something like (MEMBER 1 2 3)
  (defmethod node-type ((node discrete-node))
    `(member ,@(coerce (node-domain-values node) 'list)))
  
negative.code:   "Returns a list with the cardinality of node's parents followed by its own cardinality."
    (append (mapcar #'node-cardinality (node-parents node)) (list (node-cardinality node))))
  
  (defun sort-node-values (node-values)
    (sort (copy-list node-values) #'string<
          :key #'first))
  
  ;; example usages:
  #+(or) (node-probability *node-b* '((A t)(B t))) ;; -> 0.2 -> T
  ;; the lookup is commutative
  #+(or) (node-probability *node-b* '((B t)(A t))) ;; -> 0.2 -> T
  (defgeneric node-probability (node node-values)
    (:documentation "Compute the probability of the given instatiation of a tuple of the nodes cpt. 
     The value list is an alist of node-value pairs, i.e., given in the form:
  