From 9e8bc2c7da5d38e86c52a52b1c4c4297b5dee241 Mon Sep 17 00:00:00 2001 From: Jules Zisser Date: Thu, 21 Aug 2025 13:47:28 +0300 Subject: [PATCH 1/2] fix pick_iter --- dd/cudd_add.pyx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/dd/cudd_add.pyx b/dd/cudd_add.pyx index 1db46d09..16d91d1b 100644 --- a/dd/cudd_add.pyx +++ b/dd/cudd_add.pyx @@ -1541,6 +1541,7 @@ cdef class ADD: 'is not in an ADD ' 'in this manager') x[index] = g.node + else: x[index] = Cudd_addIthVar( self.manager, index) @@ -1716,8 +1717,7 @@ cdef class ADD: algebraic decision diagram maps the assignment `var_values` to. """ - # TODO: with_values - return next(self.pick_iter(u, care_vars), None) + return next(self.pick_iter(u, care_vars, with_values), None) def pick_iter( self, @@ -1777,7 +1777,10 @@ cdef class ADD: set(var_values).difference(support)) for m in _bdd._enumerate_minterms( var_values, care_vars): - yield m + if with_values: + yield (m, value) + else: + yield m r = Cudd_NextCube(gen, &cube, &value) finally: Cudd_GenFree(gen) From 0b1826fd09a86403d02c7a2afd25775a1d2732dd Mon Sep 17 00:00:00 2001 From: Jules Zisser Date: Thu, 21 Aug 2025 18:03:41 +0300 Subject: [PATCH 2/2] fixed multi_compose bug --- dd/cudd_add.pyx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dd/cudd_add.pyx b/dd/cudd_add.pyx index 16d91d1b..04d8a505 100644 --- a/dd/cudd_add.pyx +++ b/dd/cudd_add.pyx @@ -1543,8 +1543,9 @@ cdef class ADD: x[index] = g.node else: - x[index] = Cudd_addIthVar( - self.manager, index) + tmp = Cudd_addIthVar(self.manager, index) + g = wrap(self, tmp) + x[index] = g.node try: r = Cudd_addVectorCompose( self.manager, u.node, x)