27.09.2013 Views

a modern C++ library for the manipulation of Boolean functions

a modern C++ library for the manipulation of Boolean functions

a modern C++ library for the manipulation of Boolean functions

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Require: a variable v and a set <strong>of</strong> variables V<br />

function iff_conj(v, V )<br />

G = x ∈ V . v ≺ x <br />

tv = and_vs_true(1, G)<br />

fcurr = fprev = 0<br />

while G = ∅ do<br />

m = max(G)<br />

fcurr = make_node m, fprev, 1 <br />

fprev = fcurr<br />

G = G \ m <br />

nv = make_node <br />

v, tv, fcurr<br />

S = x ∈ V . x ≺ v <br />

if S = ∅ <strong>the</strong>n<br />

return nv<br />

else<br />

fv = make_node v, 0, 1 <br />

curr = prev = nv<br />

while S = ∅ do<br />

m = max(S)<br />

curr = make_node <br />

m, prev, fv<br />

prev = curr<br />

S = S \ m <br />

return curr<br />

Algorithm 20: The iff_conj function.<br />

3.2 ROBDD algorithms 31

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!