Unit-11: Binary Decision Diagrams (BDDs)sri/Courses/MC2015/Slides/... · In this unit: An...

Preview:

Citation preview

Unit-11: Binary Decision Diagrams (BDDs)

B. Srivathsan

Chennai Mathematical Institute

NPTEL-course

July - November 2015

1/24

Module 1:Introduction to BDDs

2/24

Model-checking

Transition Systems

+ Properties

+NuSMV

Automata

Unit: 4

BüchiAutomata

Unit: 5,6

LTL

properties

Unit: 7,8

CTL

properties

Unit: 9

State-spaceexplosion

Unit: 10

3/24

In this unit: An efficient data structure for representing transitionsystems

É Module 1: Introduction to the data structure: Binary DecisionDiagrams (BDDs)

É Module 2: Operations on BDDs

É Module 3: Using BDDs in the model-checking process

Reference: Logic in Computer Science, 2nd edition, by Huth and Ryan,Section 6.1 - 6.3

4/24

In this unit: An efficient data structure for representing transitionsystems

É Module 1: Introduction to the data structure: Binary DecisionDiagrams (BDDs)

É Module 2: Operations on BDDs

É Module 3: Using BDDs in the model-checking process

Reference: Logic in Computer Science, 2nd edition, by Huth and Ryan,Section 6.1 - 6.3

4/24

Boolean functions

5/24

x,y : Boolean variables

Boolean functionf (x,y) = x+ y

0+ 0 = 00+ 1 = 11+ 0 = 11+ 1 = 1

Logical OR

0 0 0

0 1 1

1 0 1

1 1 1

x y f (x,y)

Truth table

6/24

x,y : Boolean variables

Boolean functionf (x,y) = x+ y

0+ 0 = 00+ 1 = 11+ 0 = 11+ 1 = 1

Logical OR

0 0 0

0 1 1

1 0 1

1 1 1

x y f (x,y)

Truth table

6/24

x,y : Boolean variables

Boolean functionf (x,y) = x+ y

0+ 0 = 00+ 1 = 11+ 0 = 11+ 1 = 1

Logical OR

0 0 0

0 1 1

1 0 1

1 1 1

x y f (x,y)

Truth table

6/24

x,y : Boolean variables

Boolean functionf (x,y) = x+ y

0+ 0 = 00+ 1 = 11+ 0 = 11+ 1 = 1

Logical OR

0 0 0

0 1 1

1 0 1

1 1 1

x y f (x,y)

Truth table

6/24

x,y : Boolean variables

Boolean functionf (x,y) = x+ y

0+ 0 = 00+ 1 = 11+ 0 = 11+ 1 = 1

Logical OR

0 0 0

0 1 1

1 0 1

1 1 1

x y f (x,y)

Truth table

6/24

x,y : Boolean variables

Boolean functionf (x,y) = x · y

0 · 0 = 00 · 1 = 01 · 0 = 01 · 1 = 1

Logical AND

0 0 0

0 1 0

1 0 0

1 1 1

x y f (x,y)

Truth table

7/24

x,y : Boolean variables

Boolean functionf (x,y) = x · y

0 · 0 = 00 · 1 = 01 · 0 = 01 · 1 = 1

Logical AND

0 0 0

0 1 0

1 0 0

1 1 1

x y f (x,y)

Truth table

7/24

x,y : Boolean variables

Boolean functionf (x,y) = x · y

0 · 0 = 00 · 1 = 01 · 0 = 01 · 1 = 1

Logical AND

0 0 0

0 1 0

1 0 0

1 1 1

x y f (x,y)

Truth table

7/24

x,y : Boolean variables

Boolean functionf (x,y) = x · y

0 · 0 = 00 · 1 = 01 · 0 = 01 · 1 = 1

Logical AND

0 0 0

0 1 0

1 0 0

1 1 1

x y f (x,y)

Truth table

7/24

x,y : Boolean variables

Boolean functionf (x,y) = x · y

0 · 0 = 00 · 1 = 01 · 0 = 01 · 1 = 1

Logical AND

0 0 0

0 1 0

1 0 0

1 1 1

x y f (x,y)

Truth table

7/24

x : Boolean variable

Boolean functionf (x) = x

0 = 11 = 0

Logical NOT

0 1

1 0

x f (x)

Truth table

8/24

x : Boolean variable

Boolean functionf (x) = x

0 = 11 = 0

Logical NOT

0 1

1 0

x f (x)

Truth table

8/24

x : Boolean variable

Boolean functionf (x) = x

0 = 11 = 0

Logical NOT

0 1

1 0

x f (x)

Truth table

8/24

x : Boolean variable

Boolean functionf (x) = x

0 = 11 = 0

Logical NOT

0 1

1 0

x f (x)

Truth table

8/24

x : Boolean variable

Boolean functionf (x) = x

0 = 11 = 0

Logical NOT

0 1

1 0

x f (x)

Truth table

8/24

x1,x2, . . . ,xn: Boolean variables

f : {x1,x2, . . . ,xn} 7→ {0,1} Boolean function

+ · Boolean operations

Examples: f1(x,y) = x+ y, f2(x,y,z) = x · y+ y · z, f3(x,y,z) = x+ y · z

9/24

x1,x2, . . . ,xn: Boolean variables

f : {x1,x2, . . . ,xn} 7→ {0,1} Boolean function

+ · Boolean operations

Examples: f1(x,y) = x+ y, f2(x,y,z) = x · y+ y · z, f3(x,y,z) = x+ y · z

9/24

Representing boolean functions

10/24

f (x,y,z) = x · y+ y · z

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x

y y

z z z z

0 1 0 0 0 1 1 1

Truth table

Binary Decision Tree

11/24

f (x,y,z) = x · y+ y · z

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x

y y

z z z z

0 1 0 0 0 1 1 1

Truth table

Binary Decision Tree

11/24

f (x,y,z) = x · y+ y · z

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x

y y

z z z z

0 1 0 0 0 1 1 1

Truth table Binary Decision Tree

11/24

Operations on truth tables

12/24

g(x,y,z) = f (x,y,z) = x · y+ y · z

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0

1

0 0 1

0

0 1 0

1

0 1 1

1

1 0 0

1

1 0 1

0

1 1 0

0

1 1 1

0

13/24

g(x,y,z) = f (x,y,z) = x · y+ y · z

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0

1

0 0 1

0

0 1 0

1

0 1 1

1

1 0 0

1

1 0 1

0

1 1 0

0

1 1 1

0

13/24

g(x,y,z) = f (x,y,z) = x · y+ y · z

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1

0

0 1 0

1

0 1 1

1

1 0 0

1

1 0 1

0

1 1 0

0

1 1 1

0

13/24

g(x,y,z) = f (x,y,z) = x · y+ y · z

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 0

0 1 0

1

0 1 1

1

1 0 0

1

1 0 1

0

1 1 0

0

1 1 1

0

13/24

g(x,y,z) = f (x,y,z) = x · y+ y · z

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 0

0 1 0 1

0 1 1

1

1 0 0

1

1 0 1

0

1 1 0

0

1 1 1

0

13/24

g(x,y,z) = f (x,y,z) = x · y+ y · z

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 0

0 1 0 1

0 1 1 1

1 0 0

1

1 0 1

0

1 1 0

0

1 1 1

0

13/24

g(x,y,z) = f (x,y,z) = x · y+ y · z

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 0

0 1 0 1

0 1 1 1

1 0 0 1

1 0 1

0

1 1 0

0

1 1 1

0

13/24

g(x,y,z) = f (x,y,z) = x · y+ y · z

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 0

0 1 0 1

0 1 1 1

1 0 0 1

1 0 1 0

1 1 0

0

1 1 1

0

13/24

g(x,y,z) = f (x,y,z) = x · y+ y · z

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 0

0 1 0 1

0 1 1 1

1 0 0 1

1 0 1 0

1 1 0 0

1 1 1

0

13/24

g(x,y,z) = f (x,y,z) = x · y+ y · z

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 0

0 1 0 1

0 1 1 1

1 0 0 1

1 0 1 0

1 1 0 0

1 1 1 0

13/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 0

1 1 0 0

1 1 1 0

f (x,y,z) = x · y+ y · zg(x,y,z) = x · y

h(x,y,z) = f (x,y,z)+ g(x,y,z)

x y z

h

0 0 0

1

0 0 1

1

0 1 0

0

0 1 1

0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

14/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 0

1 1 0 0

1 1 1 0

f (x,y,z) = x · y+ y · zg(x,y,z) = x · y

h(x,y,z) = f (x,y,z)+ g(x,y,z)

x y z

h

0 0 0

1

0 0 1

1

0 1 0

0

0 1 1

0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

14/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 0

1 1 0 0

1 1 1 0

f (x,y,z) = x · y+ y · zg(x,y,z) = x · y

h(x,y,z) = f (x,y,z)+ g(x,y,z)

x y z

h

0 0 0

1

0 0 1

1

0 1 0

0

0 1 1

0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

14/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 0

1 1 0 0

1 1 1 0

f (x,y,z) = x · y+ y · zg(x,y,z) = x · y

h(x,y,z) = f (x,y,z)+ g(x,y,z)

x y z h0 0 0

1

0 0 1

1

0 1 0

0

0 1 1

0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

14/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 0

1 1 0 0

1 1 1 0

f (x,y,z) = x · y+ y · zg(x,y,z) = x · y

h(x,y,z) = f (x,y,z)+ g(x,y,z)

x y z h0 0 0 1

0 0 1

1

0 1 0

0

0 1 1

0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

14/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 0

1 1 0 0

1 1 1 0

f (x,y,z) = x · y+ y · zg(x,y,z) = x · y

h(x,y,z) = f (x,y,z)+ g(x,y,z)

x y z h0 0 0 1

0 0 1 1

0 1 0

0

0 1 1

0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

14/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 0

1 1 0 0

1 1 1 0

f (x,y,z) = x · y+ y · zg(x,y,z) = x · y

h(x,y,z) = f (x,y,z)+ g(x,y,z)

x y z h0 0 0 1

0 0 1 1

0 1 0 0

0 1 1

0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

14/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 0

1 1 0 0

1 1 1 0

f (x,y,z) = x · y+ y · zg(x,y,z) = x · y

h(x,y,z) = f (x,y,z)+ g(x,y,z)

x y z h0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

14/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 0

1 1 0 0

1 1 1 0

f (x,y,z) = x · y+ y · zg(x,y,z) = x · y

h(x,y,z) = f (x,y,z)+ g(x,y,z)

x y z h0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1

1

1 1 0

1

1 1 1

1

14/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 0

1 1 0 0

1 1 1 0

f (x,y,z) = x · y+ y · zg(x,y,z) = x · y

h(x,y,z) = f (x,y,z)+ g(x,y,z)

x y z h0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0

1

1 1 1

1

14/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 0

1 1 0 0

1 1 1 0

f (x,y,z) = x · y+ y · zg(x,y,z) = x · y

h(x,y,z) = f (x,y,z)+ g(x,y,z)

x y z h0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1

1

14/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 0

1 1 0 0

1 1 1 0

f (x,y,z) = x · y+ y · zg(x,y,z) = x · y

h(x,y,z) = f (x,y,z)+ g(x,y,z)

x y z h0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

14/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 1

1 1 0 1

1 1 1 1

f (x,y,z) = x · y+ y · zg(x,y,z) = x

h(x,y,z) = f (x,y,z) · g(x,y,z)

x y z

h

0 0 0

0

0 0 1

0

0 1 0

0

0 1 1

0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

15/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 1

1 1 0 1

1 1 1 1

f (x,y,z) = x · y+ y · zg(x,y,z) = x

h(x,y,z) = f (x,y,z) · g(x,y,z)

x y z

h

0 0 0

0

0 0 1

0

0 1 0

0

0 1 1

0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

15/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 1

1 1 0 1

1 1 1 1

f (x,y,z) = x · y+ y · zg(x,y,z) = x

h(x,y,z) = f (x,y,z) · g(x,y,z)

x y z

h

0 0 0

0

0 0 1

0

0 1 0

0

0 1 1

0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

15/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 1

1 1 0 1

1 1 1 1

f (x,y,z) = x · y+ y · zg(x,y,z) = x

h(x,y,z) = f (x,y,z) · g(x,y,z)

x y z h0 0 0

0

0 0 1

0

0 1 0

0

0 1 1

0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

15/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 1

1 1 0 1

1 1 1 1

f (x,y,z) = x · y+ y · zg(x,y,z) = x

h(x,y,z) = f (x,y,z) · g(x,y,z)

x y z h0 0 0 0

0 0 1

0

0 1 0

0

0 1 1

0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

15/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 1

1 1 0 1

1 1 1 1

f (x,y,z) = x · y+ y · zg(x,y,z) = x

h(x,y,z) = f (x,y,z) · g(x,y,z)

x y z h0 0 0 0

0 0 1 0

0 1 0

0

0 1 1

0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

15/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 1

1 1 0 1

1 1 1 1

f (x,y,z) = x · y+ y · zg(x,y,z) = x

h(x,y,z) = f (x,y,z) · g(x,y,z)

x y z h0 0 0 0

0 0 1 0

0 1 0 0

0 1 1

0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

15/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 1

1 1 0 1

1 1 1 1

f (x,y,z) = x · y+ y · zg(x,y,z) = x

h(x,y,z) = f (x,y,z) · g(x,y,z)

x y z h0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0

0

1 0 1

1

1 1 0

1

1 1 1

1

15/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 1

1 1 0 1

1 1 1 1

f (x,y,z) = x · y+ y · zg(x,y,z) = x

h(x,y,z) = f (x,y,z) · g(x,y,z)

x y z h0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1

1

1 1 0

1

1 1 1

1

15/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 1

1 1 0 1

1 1 1 1

f (x,y,z) = x · y+ y · zg(x,y,z) = x

h(x,y,z) = f (x,y,z) · g(x,y,z)

x y z h0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0

1

1 1 1

1

15/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 1

1 1 0 1

1 1 1 1

f (x,y,z) = x · y+ y · zg(x,y,z) = x

h(x,y,z) = f (x,y,z) · g(x,y,z)

x y z h0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1

1

15/24

x y z f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

x y z g

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 1

1 1 0 1

1 1 1 1

f (x,y,z) = x · y+ y · zg(x,y,z) = x

h(x,y,z) = f (x,y,z) · g(x,y,z)

x y z h0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

15/24

Truth table representation for booleanfunctions

É Space: For n variables, needs to store 2n · (n+ 1) bits

É Operations: Visit each entry of truth table

É Sequential circuits can be modeled using boolean functions

If boolean functions are represented using truth tables, a circuit with100 variables needs more than 2100 bits!

16/24

Truth table representation for booleanfunctions

É Space: For n variables, needs to store 2n · (n+ 1) bits

É Operations: Visit each entry of truth table

É Sequential circuits can be modeled using boolean functions

If boolean functions are represented using truth tables, a circuit with100 variables needs more than 2100 bits!

16/24

Truth table representation for booleanfunctions

É Space: For n variables, needs to store 2n · (n+ 1) bits

É Operations: Visit each entry of truth table

É Sequential circuits can be modeled using boolean functions

If boolean functions are represented using truth tables, a circuit with100 variables needs more than 2100 bits!

16/24

Coming next: Efficient representation for Boolean formulas

17/24

x · yx

y y

1 0 0 0

x

y y

1 0

unnecessary

x

y

1 0

Binary Decision Diagram

18/24

x · yx

y y

1 0 0 0

x

y y

1 0

unnecessary

x

y

1 0

Binary Decision Diagram

18/24

x · yx

y y

1 0 0 0

x

y y

1 0

unnecessary

x

y

1 0

Binary Decision Diagram

18/24

x · yx

y y

1 0 0 0

x

y y

1 0

unnecessary

x

y

1 0

Binary Decision Diagram

18/24

x · yx

y y

1 0 0 0

x

y y

1 0

unnecessary

x

y

1 0

Binary Decision Diagram

18/24

x

y y

z z z z

0 1 0 0 0 1 1 1

x

y y

z z z z

0 1

x

y y

z z

0 1

x

y y

z

0 1

19/24

x

y y

z z z z

0 1 0 0 0 1 1 1

x

y y

z z z z

0 1

x

y y

z z

0 1

x

y y

z

0 1

19/24

x

y y

z z z z

0 1 0 0 0 1 1 1

x

y y

z z z z

0 1

x

y y

z z

0 1

x

y y

z

0 1

19/24

x

y y

z z z z

0 1 0 0 0 1 1 1

x

y y

z z z z

0 1

x

y y

z z

0 1

x

y y

z

0 1

19/24

Binary Decision Diagramsx

y y

z z z z

0 1 0 0 0 1 1 1

x

y y

z z z z

0 1

x

y y

z z

0 1

x

y y

z

0 1

5/5

x

y y

z z z z

0 1 0 0 0 1 1 1

x

y y

z z z z

0 1

x

y y

z z

0 1

x

y y

z

0 1

5/5

x · yx

y y

1 0 0 0

x

y y

1 0

unnecessary

x

y

1 0

Binary Decision Diagram

4/5

x · yx

y y

1 0 0 0

x

y y

1 0

unnecessary

x

y

1 0

Binary Decision Diagram

4/5

Reduced BDDs

20/24

Binary Decision Diagramsx

y y

z z z z

0 1 0 0 0 1 1 1

x

y y

z z z z

0 1

x

y y

z z

0 1

x

y y

z

0 1

5/5

x

y y

z z z z

0 1 0 0 0 1 1 1

x

y y

z z z z

0 1

x

y y

z z

0 1

x

y y

z

0 1

5/5

x · yx

y y

1 0 0 0

x

y y

1 0

unnecessary

x

y

1 0

Binary Decision Diagram

4/5

x · yx

y y

1 0 0 0

x

y y

1 0

unnecessary

x

y

1 0

Binary Decision Diagram

4/5

Reduced BDDs

20/24

Reduction rules for BDDs

É C1: Removal of duplicate leaves

É C2: Removal of redundant tests

É C3: Removal of duplicate sub-trees

21/24

x

y y

z z z z

0 1 0 0 0 1 1 1

x

y y

z z z z

0 1

x

y y

z z

0 1

x

y y

z

0 1

C1

C2

C3

22/24

x · yx

y y

1 0 0 0

x

y y

1 0

x

y

1 0

C1

C2

23/24

Representing boolean functions

BDDs

Reduced BDDs

24/24

Recommended