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: an ROBDD node n and a set <strong>of</strong> variables E<br />
function elim_search_true_vars(n, E)<br />
if is_leaf(n) <strong>the</strong>n<br />
return (n, E)<br />
else if nvar ∈ E or nfalse <br />
= 0 <strong>the</strong>n<br />
E = E ∪ nvar<br />
return (elim_search_true_vars(ntrue, E), E)<br />
else if E = ∅ or max(E) ≺ nvar <strong>the</strong>n<br />
return (n, E)<br />
else<br />
return (make_node nvar, elim_true_vars(ntrue, E), elim_true_vars(nfalse, E) , E)<br />
Algorithm 15: The elim_search_true_vars function.<br />
Require: an ROBDD node n and a set <strong>of</strong> variables D<br />
function elim_search_false_vars(n, D)<br />
if is_leaf(n) <strong>the</strong>n<br />
return (n, D)<br />
else if nvar ∈ D or ntrue <br />
= 0 <strong>the</strong>n<br />
D = D ∪ nvar<br />
return (elim_search_false_vars(nfalse, D), D)<br />
else if D = ∅ or max(D) ≺ nvar <strong>the</strong>n<br />
return (n, D)<br />
else<br />
return (make_node nvar, elim_false_vars(ntrue, D), elim_false_vars(nfalse, D) , D)<br />
Algorithm 16: The elim_search_false_vars function.<br />
3.2 ROBDD algorithms 26