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.
2 Reduced Ordered Binary Decision<br />
Diagrams<br />
2.1 Definition<br />
2.1.1 ROBDD definition<br />
Reduced Ordered Binary Decision Diagrams (ROBDDs), first introduced by Randal<br />
E. Bryant in [Bry86] along with <strong>the</strong> basic algorithms that manipulate <strong>the</strong>m, are <strong>the</strong><br />
fundamental data structure used by CORAL to represent <strong>Boolean</strong> <strong>functions</strong>. A ROBDD<br />
is a rooted, directed, and acyclic graph where leaf nodes are ei<strong>the</strong>r 0 or 1 (<strong>the</strong> terminal<br />
nodes) and each non-leaf node n is labeled with a <strong>Boolean</strong> variable nvar ∈ Vars on which<br />
<strong>the</strong> represented <strong>Boolean</strong> function depends (nvar ∈ vars(f)). Each non-leaf node has two<br />
successors nfalse and ntrue, called <strong>the</strong> false successor and <strong>the</strong> true successor respectively.<br />
Both successors can be ei<strong>the</strong>r a leaf node or a non-leaf node labeled with a variable that<br />
is greater than nvar (this explains <strong>the</strong> Ordered part <strong>of</strong> <strong>the</strong> name). Finally, no duplicate<br />
nodes must be present (this explains <strong>the</strong> Reduced part <strong>of</strong> <strong>the</strong> name). As Bryant himself<br />
showed, it is possible to trans<strong>for</strong>m any Ordered Binary Decision Diagram into a ROBDD<br />
by applying a few simple reduction rules:<br />
Remove duplicate terminal nodes: Keep no more than one copy <strong>of</strong> <strong>the</strong> terminal nodes<br />
0 and 1 and redirect all edges that were directed towards <strong>the</strong> removed duplicates to<br />
<strong>the</strong> remaining copies.<br />
Remove duplicate non-terminal nodes: If two or more non-terminal nodes are labeled<br />
with <strong>the</strong> same variable and share <strong>the</strong> same true and false successors, keep only one<br />
copy and redirect all edges that were directed towards <strong>the</strong> removed duplicates to<br />
<strong>the</strong> remaining copy.<br />
Remove nodes having a unique successor: Remove all nodes that have <strong>the</strong>ir true successor<br />
equal to <strong>the</strong>ir false successor and redirect all edges that were directed towards<br />
<strong>the</strong>m to <strong>the</strong>ir successor.<br />
The rules must be applied repeatedly until a fixpoint is reached, as applying one rule<br />
may lead to fur<strong>the</strong>r reduction possibilities <strong>for</strong> <strong>the</strong> o<strong>the</strong>rs. We now give a <strong>for</strong>mal definition<br />
<strong>for</strong> ROBDDs:<br />
Definition 5. (ROBDDs.) If N is <strong>the</strong> set <strong>of</strong> nodes <strong>of</strong> a ROBDD <strong>the</strong>n N satisfies<br />
N ⊆ {0, 1} ∪ Vars × N × N.