anchor.diff:  (defun zdd-keep-supersets-of% (zdd set)
     (ematch* (zdd set)
       ((_ nil) zdd)
  -    (((leaf) _) (leaf nil))
  +    (((sink) _) (leaf nil))
       (((node var hi lo) (list* el remaining))
        (cond
          ((= var el) (zdd-node var
  
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-union% (a b)
    (ematch* (a b)
      (((node) (sink)) (zdd-union% b a))
  
      (((sink nil) b) b)
      (((sink t) b) (unit-patch b))
  
      (((node var-a hi-a lo-a)
        (node var-b hi-b lo-b))
  