anchor.diff:  (defun zdd-count (zdd)
     "Return the number of members of `zdd`."
     (ematch zdd
  -    ((leaf nil) 0)
  -    ((leaf t) 1)
  +    ((sink nil) 0)
  +    ((sink t) 1)
       ((node _ hi lo) (+ (zdd-count hi)
                          (zdd-count lo)))))
   
  
positive.code:   (let ((seen (make-hash-table :test 'eq)))
      (recursively ((zdd zdd))
        (ematch zdd
          ((leaf) (setf (gethash zdd seen) t))
          ((node _ hi lo)
           (when (not (gethash zdd seen))
             (setf (gethash zdd seen) t)
  
negative.code: 
  (defun zdd-join% (a b)
    (ematch* (a b)
      (((sink nil) _) (leaf nil))
      ((_ (sink nil)) (leaf nil))
  
      (((sink t) b) b)
      ((a (sink t)) a)
  
      (((node var-a hi-a lo-a)
        (node var-b hi-b lo-b))
  