Week-1: Introduction to model checking
B. Srivathsan
Chennai Mathematical Institute
NPTEL-course July - November 2015
1/15
Module 2:
Modeling hardware circuits
2/15
x1
XOR
x2 y
0 0 0
0 1 1
1 0 1
1 1 0
x1 x2 y
x1
AND
x2 y
0 0 0
0 1 0
1 0 0
1 1 1
x1 x2 y
x
NOT
y0 1
1 0
x y
x1
OR
x2 y
0 0 0
0 1 1
1 0 1
1 1 1
x1 x2 y
3/15
y = NOT ( XOR (x
1, x
2) )
XOR NOT
x1
x2 y
0 0 1
0 1 0
1 0 0
1 1 1
x1 x2 y
4/15
y = NOT ( XOR (x
1, x
2) )
XOR NOT
x1
x2 y
0 0 1
0 1 0
1 0 0
1 1 1
x1 x2 y
4/15
y = NOT ( XOR (x
1, x
2) )
XOR NOT
x1
x2 y
0 0 1
0 1 0
1 0 0
1 1 1
x1 x2 y
4/15
y= NOT(XOR(x,r) )
rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1 0
1
0 0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1 0
1
0 0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1 0
1
0 0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1
1
1 0
1 0
1
0 0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1 0
1
0 0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1
0
1
0 0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1 0
1
0 0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1 0
1
0
0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1 0
1
0 0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1 0
1
0 0
1
1
1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1 0
1
0 0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1 0
1
0 0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1 0
1
0 0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1 0
1
0 0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1 0
1
0 0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø
Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1 0
1
0 0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
y= NOT(XOR(x,r) ) rnext = XOR(x,r)
XOR NOT
x
yr register
Ø Ø Ø Ø Ø Ø Ø Ø Ø
x r y
1 0 0
1 1 1
0
1 0
1
0 0
1
1 1
1 0 0
0 1 0
0 1 0
1 1 1
0 0 1
· · ·
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
5/15
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
Non-deterministic transition system
More than one initial state
States with more than one transition on an action
6/15
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
Non-deterministic transition system
More than one initial state
States with more than one transition on an action
6/15
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Ø
Ø Ø Ø
Ø
Ø Ø
Ø
Non-deterministic transition system
More than one initial state
States with more than one transition on an action
6/15
Transition Systems
Deterministic Single initial state
and
Non-deterministic Multiple initial states
or
s r s r
1r
2r
ma a
a a
...
7/15
Coming next: examples of deterministic and non-deterministic transition systems
8/15
Non-deterministic
q0 a q1
a b
q0 q1
q2 b
b
a a
b a
q0 a q1
b b
Deterministic
q0 a q1
b b
q0 q1
q2 b
b
a a
c c
q0 a q1
b b
9/15
Model of ATM
IDLE PIN? TRAN
BAL DRAW
MORE $$
insert_card
wrong
correct
balance withdrawal
amount
cash
no yes
no
Deterministic transition system
10/15
Model of ATM
IDLE PIN? TRAN
BAL DRAW
MORE $$
insert_card
wrong
correct
balance withdrawal
amount
cash
no yes
no
Deterministic transition system
10/15
Model of vending machine
IDLE
SELECT
W C
coin
water cola
get_water get_cola
Deterministic transition system
11/15
Model of vending machine
IDLE
SELECT
W C
coin
water cola
get_water get_cola
Deterministic transition system
11/15
Model of hardware circuit
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Non-deterministic transition system: to model incomplete information
12/15
Model of hardware circuit
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
Non-deterministic transition system: to model incomplete information
12/15
Coming next: Another example of hardware circuit
13/15
XOR NOT
OR
r
x y
x=0,r=0,y=1 x=1,r=0,y=0
x=0,r=1,y=0 x=1,r=1,y=1
14/15
Summary
Hardware Circuits
Modeling using transition systems
Non-determinism
Reference:Principles of Model Checking,Baier and Katoen, MIT Press (2008) Pages 26 - 29
15/15