anchor.diff:  ; So each relation is a list of list of integers, the ith element of which
   ; specifies the list of arcs coming out of node i (each element in the list
   ; that's the ith element of the relation will be an integer uniquely
  -; representing the destination node).
  +; representing the destination node). The name of the relation must be a
  +; symbol.
   (defun make-rel (name edges)
     (cons name edges))
   (defun get-rel-name (rel) (car rel))
  
positive.code:              (integer-list-list-alistp (cdr ali)))
        nil)))
  
  ; assuming ali is an alist.
  (defun keys-are-all-strings (ali)
    (if (endp ali)
        t
      (if (stringp (caar ali))
          (keys-are-all-strings (cdr ali))
        nil)))
  
  (defun rels-well-formed (rels len)
    (and (rels-of-proper-len rels len)
         (integer-list-list-alistp rels)
         (keys-are-all-strings rels)))
  
  ; predicate function for frames. The relations must all have the appropriate
  ; number of nodes and format.
  
negative.code: ; a list of these rel's is an association list with names as values.
  
  ; convenience functions for making a frame and getting its two
  ; components. Num-nodes has to be an integer; atomic-program-extensions should
  ; be a list of rels (each of which is made by make-rel).
  (defun make-frame (num-nodes atomic-program-extensions)
    (list num-nodes atomic-program-extensions))
  (defun get-num-nodes (f) (nth 0 f))
  (defun get-atomic-programs (f) (nth 1 f))
  
  