0% found this document useful (0 votes)
235 views49 pages

Robdd Step by Step

The document introduces binary decision diagrams (BDDs) and their ordered variant (OBDDs). BDDs provide a way to represent Boolean functions as directed acyclic graphs. OBDDs require that variables are tested in a specific order on all paths through the graph. Reduced and ordered BDDs (ROBDDs) provide a canonical representation of Boolean functions, allowing for efficient operations like satisfiability checking. The document discusses constructing ROBDDs by converting Boolean expressions to an if-then-else normal form and provides an example of this process.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
235 views49 pages

Robdd Step by Step

The document introduces binary decision diagrams (BDDs) and their ordered variant (OBDDs). BDDs provide a way to represent Boolean functions as directed acyclic graphs. OBDDs require that variables are tested in a specific order on all paths through the graph. Reduced and ordered BDDs (ROBDDs) provide a canonical representation of Boolean functions, allowing for efficient operations like satisfiability checking. The document discusses constructing ROBDDs by converting Boolean expressions to an if-then-else normal form and provides an example of this process.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 49

Binary Decision Diagrams

An Introduction and Some Applications

Manas Thakur

PACE Lab, IIT Madras

Manas Thakur (IIT Madras) BDDs 1 / 25


Motivating Example

Binary decision tree for a truth table

Manas Thakur (IIT Madras) BDDs 2 / 25


Motivating Example

Binary decision tree for a truth table

Manas Thakur (IIT Madras) BDDs 3 / 25


Motivating Example

Collapse redundant nodes

Manas Thakur (IIT Madras) BDDs 4 / 25


Motivating Example

Collapse redundant nodes

Manas Thakur (IIT Madras) BDDs 5 / 25


Motivating Example

Collapse redundant nodes

Manas Thakur (IIT Madras) BDDs 6 / 25


Motivating Example

Collapse redundant nodes

Manas Thakur (IIT Madras) BDDs 7 / 25


Motivating Example

Eliminate unnecessary nodes

Manas Thakur (IIT Madras) BDDs 8 / 25


Motivating Example

We got an ROBDD!!

Manas Thakur (IIT Madras) BDDs 9 / 25


Introduction

Overview

1 Motivating Example

2 Introduction

3 Constructing ROBDDs

4 Applications

5 Conclusion

Manas Thakur (IIT Madras) BDDs 10 / 25


Introduction

Binary Decision Diagrams

Definition
A Binary Decision Diagram is a rooted DAG with
One or two terminal nodes of out-degree zero labeled 0 or 1
A set of variable nodes of out-degree two

Manas Thakur (IIT Madras) BDDs 11 / 25


Introduction

Ordered Binary Decision Diagrams (OBDDs)

A BDD is ordered if on all paths through the graph, the variables


respect a given linear order.
b1 < b2 < ... < bn

Manas Thakur (IIT Madras) BDDs 12 / 25


Introduction

Ordered Binary Decision Diagrams (OBDDs)

A BDD is ordered if on all paths through the graph, the variables


respect a given linear order.
b1 < b2 < ... < bn
An unordered BDD

Manas Thakur (IIT Madras) BDDs 12 / 25


Introduction

Ordered Binary Decision Diagrams (OBDDs)

The size of a BDD depends on the variable ordering

The problem of finding the best variable ordering in OBDDs is


NP-Complete

Manas Thakur (IIT Madras) BDDs 13 / 25


Introduction

Reduced Ordered Binary Decision Diagrams (ROBDDs)

Definition
An OBDD is reduced if it satisfies the following properties:
Uniqueness
low (u) = low (v ) and high(u) = high(v ) implies u = v
Non-redundant tests
low (u) 6= high(u)

We already saw an example of ROBDDs!! See it again

Manas Thakur (IIT Madras) BDDs 14 / 25


Introduction

Properties of ROBDDs

Size is correlated to amount of redundancy, NOT size of relation


Insight: As the relation gets larger, the number of dont-care bits
increases, leading to fewer necessary nodes (usually)

Canonicity: For every Boolean function, there is exactly one ROBDD


representing it
Hence, satisfiability, tautology-check, and equivalence can be tested in
deterministic time
For Boolean expressions, this problem is NP-Complete

Manas Thakur (IIT Madras) BDDs 15 / 25


Constructing ROBDDs

Normal forms for Boolean expressions

Disjunctive Normal Form (DNF)


(a1 a2 ... an ) ... (a1 a2 ... an )
Satisfiability: easy; Tautology check: hard

Manas Thakur (IIT Madras) BDDs 16 / 25


Constructing ROBDDs

Normal forms for Boolean expressions

Disjunctive Normal Form (DNF)


(a1 a2 ... an ) ... (a1 a2 ... an )
Satisfiability: easy; Tautology check: hard

Conjunctive Normal Form (CNF)


(a1 a2 ... an ) ... (a1 a2 ... an )
Tautology check: easy; Satisfiability: hard

Manas Thakur (IIT Madras) BDDs 16 / 25


Constructing ROBDDs

Normal forms for Boolean expressions

Disjunctive Normal Form (DNF)


(a1 a2 ... an ) ... (a1 a2 ... an )
Satisfiability: easy; Tautology check: hard

Conjunctive Normal Form (CNF)


(a1 a2 ... an ) ... (a1 a2 ... an )
Tautology check: easy; Satisfiability: hard

Reduction?

Manas Thakur (IIT Madras) BDDs 16 / 25


Constructing ROBDDs

Normal forms for Boolean expressions

Disjunctive Normal Form (DNF)


(a1 a2 ... an ) ... (a1 a2 ... an )
Satisfiability: easy; Tautology check: hard

Conjunctive Normal Form (CNF)


(a1 a2 ... an ) ... (a1 a2 ... an )
Tautology check: easy; Satisfiability: hard

Reduction?
No hopes since conversion between CNF and DNF is exponential

Manas Thakur (IIT Madras) BDDs 16 / 25


Constructing ROBDDs

If-then-else Normal Form (INF)

An If-then-else Normal Form (INF) is a Boolean expression built from


the if-then-else operator and the constants 0 and 1, such that all tests
are performed only on variables.
x y0 , y1 = (x y0 ) (x y1 )

Manas Thakur (IIT Madras) BDDs 17 / 25


Constructing ROBDDs

If-then-else Normal Form (INF)

An If-then-else Normal Form (INF) is a Boolean expression built from


the if-then-else operator and the constants 0 and 1, such that all tests
are performed only on variables.
x y0 , y1 = (x y0 ) (x y1 )
More examples
x = x (1, 0)

Manas Thakur (IIT Madras) BDDs 17 / 25


Constructing ROBDDs

If-then-else Normal Form (INF)

An If-then-else Normal Form (INF) is a Boolean expression built from


the if-then-else operator and the constants 0 and 1, such that all tests
are performed only on variables.
x y0 , y1 = (x y0 ) (x y1 )
More examples
x = x (1, 0)
x = (x 0, 1)

Manas Thakur (IIT Madras) BDDs 17 / 25


Constructing ROBDDs

If-then-else Normal Form (INF)

An If-then-else Normal Form (INF) is a Boolean expression built from


the if-then-else operator and the constants 0 and 1, such that all tests
are performed only on variables.
x y0 , y1 = (x y0 ) (x y1 )
More examples
x = x (1, 0)
x = (x 0, 1)
x y = (x 1, y )

Manas Thakur (IIT Madras) BDDs 17 / 25


Constructing ROBDDs

If-then-else Normal Form (INF)

An If-then-else Normal Form (INF) is a Boolean expression built from


the if-then-else operator and the constants 0 and 1, such that all tests
are performed only on variables.
x y0 , y1 = (x y0 ) (x y1 )
More examples
x = x (1, 0)
x = (x 0, 1)
x y = (x 1, y )
x y = (x y , 1)

Manas Thakur (IIT Madras) BDDs 17 / 25


Constructing ROBDDs

If-then-else Normal Form (INF)

An If-then-else Normal Form (INF) is a Boolean expression built from


the if-then-else operator and the constants 0 and 1, such that all tests
are performed only on variables.
x y0 , y1 = (x y0 ) (x y1 )
More examples
x = x (1, 0)
x = (x 0, 1)
x y = (x 1, y )
x y = (x y , 1)
x y = x (y 1, 0), (y 0, 1)

Manas Thakur (IIT Madras) BDDs 17 / 25


Constructing ROBDDs

Example: t = (x1 y1 ) (x2 y2 )

t = x1 t1 , t0

Manas Thakur (IIT Madras) BDDs 18 / 25


Constructing ROBDDs

Example: t = (x1 y1 ) (x2 y2 )

t = x1 t1 , t0
t0 = y1 0, t00

Manas Thakur (IIT Madras) BDDs 18 / 25


Constructing ROBDDs

Example: t = (x1 y1 ) (x2 y2 )

t = x1 t1 , t0
t0 = y1 0, t00
t1 = y1 t11 , 0

Manas Thakur (IIT Madras) BDDs 18 / 25


Constructing ROBDDs

Example: t = (x1 y1 ) (x2 y2 )

t = x1 t1 , t0
t0 = y1 0, t00
t1 = y1 t11 , 0
t00 = x2 t001 , t000

Manas Thakur (IIT Madras) BDDs 18 / 25


Constructing ROBDDs

Example: t = (x1 y1 ) (x2 y2 )

t = x1 t1 , t0
t0 = y1 0, t00
t1 = y1 t11 , 0
t00 = x2 t001 , t000
t11 = x2 t111 , t110

Manas Thakur (IIT Madras) BDDs 18 / 25


Constructing ROBDDs

Example: t = (x1 y1 ) (x2 y2 )

t = x1 t1 , t0
t0 = y1 0, t00
t1 = y1 t11 , 0
t00 = x2 t001 , t000
t11 = x2 t111 , t110
t000 = y2 0, 1

Manas Thakur (IIT Madras) BDDs 18 / 25


Constructing ROBDDs

Example: t = (x1 y1 ) (x2 y2 )

t = x1 t1 , t0
t0 = y1 0, t00
t1 = y1 t11 , 0
t00 = x2 t001 , t000
t11 = x2 t111 , t110
t000 = y2 0, 1
t001 = y2 1, 0

Manas Thakur (IIT Madras) BDDs 18 / 25


Constructing ROBDDs

Example: t = (x1 y1 ) (x2 y2 )

t = x1 t1 , t0
t0 = y1 0, t00
t1 = y1 t11 , 0
t00 = x2 t001 , t000
t11 = x2 t111 , t110
t000 = y2 0, 1
t001 = y2 1, 0
t110 = y2 0, 1

Manas Thakur (IIT Madras) BDDs 18 / 25


Constructing ROBDDs

Example: t = (x1 y1 ) (x2 y2 )

t = x1 t1 , t0
t0 = y1 0, t00
t1 = y1 t11 , 0
t00 = x2 t001 , t000
t11 = x2 t111 , t110
t000 = y2 0, 1
t001 = y2 1, 0
t110 = y2 0, 1
t111 = y2 1, 0

Manas Thakur (IIT Madras) BDDs 18 / 25


Constructing ROBDDs

Example: t = (x1 y1 ) (x2 y2 )

t = x1 t1 , t0
t0 = y1 0, t00
t1 = y1 t11 , 0
t00 = x2 t001 , t000
t11 = x2 t111 , t110
t000 = y2 0, 1
t001 = y2 1, 0
t110 = y2 0, 1
t111 = y2 1, 0

Manas Thakur (IIT Madras) BDDs 18 / 25


Constructing ROBDDs

Example: t = (x1 y1 ) (x2 y2 )

t = x1 t1 , t0
t0 = y1 0, t00
t1 = y1 t11 , 0
t00 = x2 t001 , t000
t11 = x2 t111 , t110
t000 = y2 0, 1
t001 = y2 1, 0
t110 = y2 0, 1
t111 = y2 1, 0

Manas Thakur (IIT Madras) BDDs 19 / 25


Constructing ROBDDs

Example: t = (x1 y1 ) (x2 y2 )

t = x1 t1 , t0
t0 = y1 0, t00
t = x1 t1 , t0
t1 = y1 t11 , 0
t0 = y1 0, t00
t00 = x2 t001 , t000
t1 = y1 t00 , 0
t11 = x2 t111 , t110
t00 = x2 t001 , t000
t000 = y2 0, 1
t000 = y2 0, 1
t001 = y2 1, 0
t001 = y2 1, 0
t110 = y2 0, 1
t111 = y2 1, 0

Manas Thakur (IIT Madras) BDDs 19 / 25


Applications

Lets move ahead

1 Motivating Example

2 Introduction

3 Constructing ROBDDs

4 Applications

5 Conclusion

Manas Thakur (IIT Madras) BDDs 20 / 25


Applications

Applications of BDDs

Correctness of Combinational Circuits

Equivalence of Combinational Circuits

Model Checking

And yes, Program Analysis!

Manas Thakur (IIT Madras) BDDs 21 / 25


Applications

BDDs for representing Points-to relation

Points-to analysis using BDDs. Berndl et al. PLDI03.


Let a,b,c be reference variables and A,B,C be object references.
The points-to relation (a,A),(a,B),(b,A),(b,B),(c,A),(c,B),(c,C) is
represented as:

Manas Thakur (IIT Madras) BDDs 22 / 25


Applications

BDDs for representing Points-to relation

Points-to analysis using BDDs. Berndl et al. PLDI03.


Let a,b,c be reference variables and A,B,C be object references.
The points-to relation (a,A),(a,B),(b,A),(b,B),(c,A),(c,B),(c,C) is
represented as:
On the board.

Manas Thakur (IIT Madras) BDDs 22 / 25


Applications

bddbddb

Cloning-Based Context-Sensitive Pointer Alias Analysis Using Binary


Decision Diagrams. John Whaley and Monica S. Lam. PLDI04.

Manas Thakur (IIT Madras) BDDs 23 / 25


Applications

bddbddb

Cloning-Based Context-Sensitive Pointer Alias Analysis Using Binary


Decision Diagrams. John Whaley and Monica S. Lam. PLDI04.

On the Board
1 Represent program information using relations
Express relations as BDDs

Manas Thakur (IIT Madras) BDDs 23 / 25


Applications

bddbddb

Cloning-Based Context-Sensitive Pointer Alias Analysis Using Binary


Decision Diagrams. John Whaley and Monica S. Lam. PLDI04.

On the Board
1 Represent program information using relations
Express relations as BDDs
2 Write program analyses as Datalog queries
Express queries as BDD operations

Manas Thakur (IIT Madras) BDDs 23 / 25


Applications

bddbddb

Cloning-Based Context-Sensitive Pointer Alias Analysis Using Binary


Decision Diagrams. John Whaley and Monica S. Lam. PLDI04.

On the Board
1 Represent program information using relations
Express relations as BDDs
2 Write program analyses as Datalog queries
Express queries as BDD operations
3 Get solutions!
Perform operations on BDDs

Manas Thakur (IIT Madras) BDDs 23 / 25


Applications

Pointers for the enthusiast

An Introduction to Binary Decision Diagrams. Tutorial by Henrik Reif


Andersen.

Program Analysis using Binary Decision Diagrams. Ondrej Lhotaks


PhD Thesis (2006).

Context-Sensitive Pointer Analysis using Binary Decision Diagrams.


John Whaleys PhD Thesis (2007).

Fun with Binary Decision Diagrams. Video lecture by Donald Knuth.

Manas Thakur (IIT Madras) BDDs 24 / 25


Conclusion

Conclusion

Manas Thakur (IIT Madras) BDDs 25 / 25


Conclusion

Conclusion

BDDs are very interesting and


useful!

Manas Thakur (IIT Madras) BDDs 25 / 25

You might also like