unit-11: binary decision diagrams (bdds)sri/courses/mc2015/slides/... · in this unit: an...
TRANSCRIPT
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