# HG changeset patch
# User Steve Losh <steve@stevelosh.com>
# Date 1496157222 0
# Node ID fc378d24dd2f205c51b57cf315a58d18b3928b25
# Parent  490f2915466fd88a80a2fd69a1fb8bf0ab66731e
Make zdd union a bit cleaner

diff -r 490f2915466f -r fc378d24dd2f src/zdd.lisp
--- a/src/zdd.lisp	Thu May 25 15:49:38 2017 +0000
+++ b/src/zdd.lisp	Tue May 30 15:13:42 2017 +0000
@@ -118,19 +118,24 @@
 
 
 (defun-ematch* zdd-union% (a b)
-  (((node) (sink)) (zdd-union% b a))
+  ((a (sink nil)) a)
+  (((sink nil) b) b)
 
-  (((sink nil) b) b)
+  ((a (sink t)) (unit-patch a))
   (((sink t) b) (unit-patch b))
 
   (((node var-a hi-a lo-a)
     (node var-b hi-b lo-b))
    (cond
-     ((< var-a var-b) (zdd-node var-a hi-a (zdd-union% lo-a b)))
-     ((> var-a var-b) (zdd-node var-b hi-b (zdd-union% lo-b a)))
-     ((= var-a var-b) (zdd-node var-a
-                                (zdd-union% hi-a hi-b)
-                                (zdd-union% lo-a lo-b))))))
+     ((< var-a var-b)
+      (zdd-node var-a hi-a (zdd-union% lo-a b)))
+     ((> var-a var-b)
+      (zdd-node var-b hi-b (zdd-union% lo-b a)))
+     ((= var-a var-b)
+      (zdd-node var-a
+                (zdd-union% hi-a hi-b)
+                (zdd-union% lo-a lo-b))))))
+
 (defun zdd-union (&rest zdds)
   "Return the union of ZDDs: {α | α ∈ Z₁ or α ∈ Z₂}."
   (if zdds