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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Contents<br />

1 <strong>Boolean</strong> <strong>functions</strong> 1<br />

1.1 Fundamental concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />

1.1.1 Definition <strong>of</strong> <strong>Boolean</strong> <strong>functions</strong> . . . . . . . . . . . . . . . . . . . . 1<br />

1.1.2 Denoting specific <strong>Boolean</strong> <strong>functions</strong> . . . . . . . . . . . . . . . . . . 1<br />

1.1.3 Notable sets <strong>of</strong> variables . . . . . . . . . . . . . . . . . . . . . . . . 2<br />

1.1.4 Equivalence relations over sets <strong>of</strong> variables . . . . . . . . . . . . . . 2<br />

1.1.5 Projections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

1.1.6 Positive <strong>Boolean</strong> <strong>functions</strong> . . . . . . . . . . . . . . . . . . . . . . . 3<br />

1.1.7 Shannon expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . 4<br />

2 Reduced Ordered Binary Decision Diagrams 5<br />

2.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

2.1.1 ROBDD definition . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

2.1.2 ROBDD semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

2.2 ROBDD properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

2.2.1 Canonicity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

2.2.2 Influence <strong>of</strong> variable ordering . . . . . . . . . . . . . . . . . . . . . 7<br />

2.3 Operations on ROBDDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

2.3.1 Implementation <strong>of</strong> algebraic operators . . . . . . . . . . . . . . . . 8<br />

2.3.2 Implementation <strong>of</strong> <strong>the</strong> restriction operation . . . . . . . . . . . . . 10<br />

3 Algorithms in CORAL 11<br />

3.1 Basic data structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

3.1.1 Sets <strong>of</strong> <strong>Boolean</strong> variables . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

3.1.2 Equivalence relations . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

3.1.3 Hash table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

3.1.4 Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

3.2 ROBDD algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

3.2.1 Memory management . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

3.2.2 Algorithms with upward approximation . . . . . . . . . . . . . . . 12<br />

3.2.3 Complexity limitation . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

3.2.4 Conjunction and disjunction . . . . . . . . . . . . . . . . . . . . . . 13<br />

3.2.5 if/<strong>the</strong>n/else operator . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

3.2.6 Specializations <strong>of</strong> if/<strong>the</strong>n/else . . . . . . . . . . . . . . . . . . . . . 15<br />

3.2.7 Variables on which a <strong>Boolean</strong> function depends . . . . . . . . . . . 17<br />

3.2.8 Entailed and disentailed variables . . . . . . . . . . . . . . . . . . . 17<br />

i

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

Saved successfully!

Ooh no, something went wrong!