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
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Require: a ROBDD node n and a set <strong>of</strong> variables F<br />
function and_vs_false(n, F )<br />
avf_impl(n, F, 1)<br />
function avf_impl(n, F, c)<br />
if n = 0 <strong>the</strong>n<br />
return n<br />
else if n = 1 <strong>the</strong>n<br />
nres = 1<br />
while xc max(F ) do<br />
nres = make_node <br />
max(F ), 0, nres<br />
F = F \ max(F ) <br />
return nres<br />
else if nvar ≺ xc <strong>the</strong>n<br />
return make_node nvar, avf_impl(ntrue, F, c), avf_impl(nfalse, F, c) <br />
else<br />
if xc nvar <strong>the</strong>n<br />
nnext = n<br />
else<br />
nnext = nfalse<br />
if ∃xnext = min {x ∈ F . xc ≺ x} <strong>the</strong>n<br />
return make_node(xc, 0, avf_impl(nnext, F, variable_index(xnext)))<br />
else<br />
return make_node(xc, 0, nnext)<br />
Algorithm 18: The and_vs_false function<br />
3.2 ROBDD algorithms 28