Formal Verifjcation Lecture 8: Operations on Binary Decision - - PowerPoint PPT Presentation

formal verifjcation lecture 8 operations on binary
SMART_READER_LITE
LIVE PREVIEW

Formal Verifjcation Lecture 8: Operations on Binary Decision - - PowerPoint PPT Presentation

Formal Verifjcation Lecture 8: Operations on Binary Decision Diagrams (BDDs) Jacques Fleuriot jdf@inf..ac.uk Diagrams from Huth & Ryan, LiCS, 2nd Ed. Recap reduce , apply , restrict , exists Previously: (Reduced, Ordered) Binary


slide-1
SLIDE 1

Formal Verifjcation Lecture 8: Operations on Binary Decision Diagrams (BDDs)

Jacques Fleuriot jdf@inf..ac.uk

Diagrams from Huth & Ryan, LiCS, 2nd Ed.

slide-2
SLIDE 2

Recap

▶ Previously:

▶ (Reduced, Ordered) Binary Decision Diagrams ((RO)BDDs)

▶ Tiis time:

▶ Operations on ROBDDs

reduce, apply, restrict, exists

▶ Symbolic Model Checking with BDDs

slide-3
SLIDE 3

Binary Decision Diagrams

Binary Decision Diagrams: DAGs, such that

▶ Unique root node ▶ Variables on non-terminal nodes ▶ Truth-values on terminal nodes ▶ Exactly two edges from each non-terminal node, labelled 0, 1

Some notation, for a given BDD node n:

▶ If n is a non-terminal node:

var(n) — the variable label on node n; lo(n) — the node reached by following the 0 edge from n; hi(n) — the node reached by following the 1 edge from n;

▶ If n is a terminal node:

val(n) — the truth value labelling n For a BDD B, the root node is called root(B).

slide-4
SLIDE 4

reduce

reduce constructs a ROBDD from an OBDD.

  • 1. Label each OBDD node n with an integer id(n),
  • 2. in a single botuom-up pass, such that:
  • 3. two OBDD nodes m and n have the same label (id(m) = id(n))

if and only if m and n represent the same boolean function. Tie ROBDD is then created by using one node from each class of nodes with the same label.

slide-5
SLIDE 5

reduce

Assignment of labels follows the rules for performing reductions. To label a node n:

▶ Remove duplicate terminals:

if n is a terminal node (i.e., 0 or 1 ), then set id(n) to be val(n).

▶ Remove redundant tests:

if id(lo(n)) = id(hi(n)) then set id(n) to be id(lo(n)).

▶ Remove duplicate nodes:

if there exists a node m that has already been labelled such that    var(m) = var(n) lo(m) = lo(n) hi(m) = hi(n)   , set id(n) to id(m).

Use a hashtable with ⟨var(n), lo(n), hi(n)⟩ keys for O(1) lookup time.

▶ Otherwise, set id(n) to an unused number.

slide-6
SLIDE 6

reduce Example

  • x#4

1

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#3

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

3

  • x#2

3

  • 0#0

1#1 0#0 1#1

In practice, labelling and construction are interleaved.

slide-7
SLIDE 7

reduce Example

  • x#4

1

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#3

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

3

  • x#2

3

  • 0#0

1#1 0#0 1#1

In practice, labelling and construction are interleaved.

slide-8
SLIDE 8

reduce Example

  • x#4

1

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#3

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

3

  • x#2

3

  • 0#0

1#1 0#0 1#1

In practice, labelling and construction are interleaved.

slide-9
SLIDE 9

reduce Example

  • x#4

1

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#3

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

3

  • x#2

3

  • 0#0

1#1 0#0 1#1

In practice, labelling and construction are interleaved.

slide-10
SLIDE 10

reduce Example

  • x#4

1

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#3

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

3

  • x#2

3

  • 0#0

1#1 0#0 1#1

In practice, labelling and construction are interleaved.

slide-11
SLIDE 11

reduce Example

  • x#4

1

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#3

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

3

  • x#2

3

  • 0#0

1#1 0#0 1#1

In practice, labelling and construction are interleaved.

slide-12
SLIDE 12

reduce Example

  • x#4

1

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#3

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

3

  • x#2

3

  • 0#0

1#1 0#0 1#1

In practice, labelling and construction are interleaved.

slide-13
SLIDE 13

reduce Example

  • x#4

1

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#3

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

3

  • x#2

3

  • 0#0

1#1 0#0 1#1

In practice, labelling and construction are interleaved.

slide-14
SLIDE 14

reduce Example

  • x#4

1

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#3

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

3

  • x#2

3

  • 0#0

1#1 0#0 1#1

In practice, labelling and construction are interleaved.

slide-15
SLIDE 15

reduce Example

  • x#4

1

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#3

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

3

  • x#2

3

  • 0#0

1#1 0#0 1#1 Reduces to

  • x#4

1

✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭

  • x#3

2

❇ ❇ ❇ ❇ ❇ ❇ ❇ ❇ ❇ ❇ ❇

  • x#2

3

  • 0#0

1#1

In practice, labelling and construction are interleaved.

slide-16
SLIDE 16

reduce Example

  • x#4

1

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#3

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

2

✶ ✶ ✶ ✶ ✶ ✶ ✶ ✶

  • x#2

3

  • x#2

3

  • 0#0

1#1 0#0 1#1 Reduces to

  • x#4

1

✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭ ✭

  • x#3

2

❇ ❇ ❇ ❇ ❇ ❇ ❇ ❇ ❇ ❇ ❇

  • x#2

3

  • 0#0

1#1

In practice, labelling and construction are interleaved.

slide-17
SLIDE 17

apply

Given compatible OBDDs Bf and Bg that represent formulas f and g, apply(□, Bf, Bg) computes an OBDD representing f □ g.

▶ where □ represents some binary operation on boolean formulas

for example, ∧, ∨, ⊕

▶ Unary operations can be handled too.

for example, negation: ¬x = x ⊕ 1

slide-18
SLIDE 18

apply: Shannon expansions

For any boolean formula f and variable x, it can be writuen as: f ≡ (¬x ∧ f [0/x]) ∨ (x ∧ f [1/x]) Tiis is the Shannon expansion of f (originally due to G. Boole). In particular: f g can be expanded like so: f g x f x g x x f x g x If a BDD x B B represents a boolean function f, then:

  • 1. B represents f

x and B represents f x ; and

  • 2. Tie BDD is efgectively a compressed representation of f in

Shannon normal form. So: implement apply recursively on the structure of the BDDs.

slide-19
SLIDE 19

apply: Shannon expansions

For any boolean formula f and variable x, it can be writuen as: f ≡ (¬x ∧ f [0/x]) ∨ (x ∧ f [1/x]) Tiis is the Shannon expansion of f (originally due to G. Boole). In particular: f □ g can be expanded like so: f □ g ≡ (¬x ∧ (f [0/x] □ g[0/x])) ∨ (x ∧ (f [1/x] □ g[1/x])) If a BDD x B B represents a boolean function f, then:

  • 1. B represents f

x and B represents f x ; and

  • 2. Tie BDD is efgectively a compressed representation of f in

Shannon normal form. So: implement apply recursively on the structure of the BDDs.

slide-20
SLIDE 20

apply: Shannon expansions

For any boolean formula f and variable x, it can be writuen as: f ≡ (¬x ∧ f [0/x]) ∨ (x ∧ f [1/x]) Tiis is the Shannon expansion of f (originally due to G. Boole). In particular: f □ g can be expanded like so: f □ g ≡ (¬x ∧ (f [0/x] □ g[0/x])) ∨ (x ∧ (f [1/x] □ g[1/x])) If a BDD

  • x

✺ ✺

B B′ represents a boolean function f, then:

  • 1. B represents f [0/x] and B′ represents f [1/x]; and
  • 2. Tie BDD is efgectively a compressed representation of f in

Shannon normal form. So: implement apply recursively on the structure of the BDDs.

slide-21
SLIDE 21

apply: cases

apply(□,

  • x

✺ ✺ B B′ ,

  • x

✻ ✻ C C′ ) =

  • x

◆ ◆ ◆ ◆ apply(□, B, C) apply(□, B′, C′) apply(□,

  • x

✺ ✺ B B′ , C ) =

  • x

◆ ◆ ◆ apply(□, B, C) apply(□, B′, C) when C is terminal node, or non-terminal with var(root(C)) > x apply(□, B ,

  • x

✻ ✻ C C′ ) =

  • x

◆ ◆ ◆ apply(□, B, C) apply(□, B, C′) when B is terminal node, or non-terminal with var(root(B)) > x apply(□, u , v ) = u □ v

slide-22
SLIDE 22

apply: example

Compute apply(∨, Bf, Bg), where Bf and Bg are:

  • x#R1

1

✰ ✰ ✰ ✰ ✰ ✰ ✰ ✰ ✰ ✰ ✰ ✰ ✰ ✰ ✰

  • x#R2

2

■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■

  • x#R3

3

  • x#R4

4

❑ ❑ ❑ ❑ ❑ ❑ ❑ ❑ ❑ ❑ ❑

0#R5 1#R6 ∨

  • x#S1

1

✯ ✯ ✯ ✯ ✯ ✯ ✯ ✯ ✯ ✯ ✯ ✯ ✯ ✯ ✯

  • x#S2

3

  • x#S3

4

❑ ❑ ❑ ❑ ❑ ❑ ❑ ❑ ❑ ❑

0#S4 1#S5

slide-23
SLIDE 23

apply: recursive calls

(R1, S1)

❑ ❑ ❑ ❑ ❑ ❑ ❑ ❑ ❑ ❑ ❑ ❑

(R2, S3)

❆ ❆ ❆ ❆ ❆ ❆ ❆ ❆ ❆

(R3, S2)

✵ ✵ ✵ ✵ ✵ ✵ ✵

(R4, S3)

✵ ✵ ✵ ✵ ✵ ✵ ✵

(R3, S3)

✵ ✵ ✵ ✵ ✵ ✵ ✵

(R4, S3)

✵ ✵ ✵ ✵ ✵ ✵ ✵

(R6, S5) (R5, S4) (R6, S5) (R4, S3)

  • (R6, S3)

❆ ❆ ❆ ❆ ❆ ❆ ❆ ❆ ❆

(R5, S4) (R6, S5) (R5, S4) (R6, S5) (R6, S4) (R6, S5)

slide-24
SLIDE 24

apply: memoisation

Tie recursive apply implementation will generate an OBBD.

▶ Apply reduce to convert it back to a ROBDD.

However, as can be seen from the tree of recursive calls, there are many calls to apply with the same arguments.

▶ Each invocation of apply where at least one of the arguments

is non-terminal generates two further calls to apply: the number of calls is worst-case exponential in the sizes of the

  • riginal diagrams.

We are not taking into account the sharing in BDDs. We can greatly improve the run-time by using memoisation: remembering the results of previous calls.

slide-25
SLIDE 25

apply: memoised recursive calls

Memoisation results in at most |Bf| · |Bg| calls to apply. (R1, S1)(x1)

❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖

(R2, S3)(x2)

❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖

(R3, S2)(x3)

  • ✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡✡

(R3, S3)(x3)

❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖

(R4, S3)(x4)

❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖

(R6, S3)(x4)

♦♦♦♦♦♦♦♦♦♦♦

  • (R5, S4)(0)

(R6, S5)(1) (R6, S4)(1)

slide-26
SLIDE 26

apply: Result

If we are careful to never create the same BDD node twice (using the same lookup table technique as reduce), then with memoisation, we automatically get a reduced BDD:

  • x1

✵ ✵ ✵ ✵ ✵ ✵ ✵ ✵ ✵ ✵ ✵ ✵ ✵ ✵ ✵

  • x2
  • P

P P P P P P P P P P P P P P P P

  • x3
  • x4

◗ ◗ ◗ ◗ ◗ ◗ ◗ ◗ ◗ ◗ ◗ ◗ ◗ ◗ ◗ ◗

1

slide-27
SLIDE 27

Other Operations

restrict(0, x, Bf) computes ROBDD for f [0/x]

  • 1. For each node n labelled with x, incoming edges are redirected

to lo(n), and the node n is removed.

  • 2. Resulting BDD then reduced with reduce.
  • 3. (again, reduce can be interleaved with the removal.)

exists(x, Bf) computes ROBDD for ∃x. f.

  • 1. Uses the identity

(∃x. f) ≡ f [0/x] ∨ f [1/x]

  • 2. Realised using the restrict and apply functions:

apply(∨, restrict(0, x, Bf), restrict(1, x, Bf))

slide-28
SLIDE 28

Time Complexities

Algorithm Input OBDDs Output OBDD Time complexity reduce B reduced B O(|B| · log |B|) apply Bf, Bg (reduced) Bf□g (reduced) O(|Bf| · |Bg|) restrict Bf (reduced) Bf[0/x] or Bf[1/x] (red’d) O(|Bf| · log |Bf|) ∃ Bf (reduced) B∃x1 ... xn.f (reduced) NP-complete

H&R, Figure 6.23

slide-29
SLIDE 29

Implementing CTL Model Checling using BDDs

Recall:

  • 1. CTL model checking computes a set of states φ for every

sub-formula φ of the original formula.

  • 2. Sets of states will be represented using ROBDDs

States are represented by boolean vectors ⟨v1, . . . , vn⟩ (i.e. vi ∈ {0, 1}). Sets of states are represented using ROBDDs on n variables x1, . . . , xn (the Atoms) that describe the ciaracteristic function of the set (see H&R 6.3.1 for a detailed description).

▶ Set operations (∩, ∪,¯) implemented using the operations on BBDs

For example, the defjnition φ ∧ ψ = φ ∩ ψ is implemented by: Bφ∧ψ = apply(∧, Bφ, Bψ)

slide-30
SLIDE 30

Implementing CTL Model Checling using BDDs

Transition relations (→) ⊆ S × S are represented by ROBDDs on 2n variables.

▶ If the variables x1, . . . , xn describe the current state, and the variables

x′

1, . . . , x′ n describe the next state, then a good ordering is

x1, x′

1, x2, x′ 2, . . . , xn, x′ n (interleaving).

When translating from the model description, the boolean formulas describing the:

  • 1. initial state set
  • 2. transition relation
  • 3. defjned variables

are translated into ROBDDs by using the apply algorithm, following the structure of the original formula. Tiis avoids exponential blow-up from fjrst constructing a decision tree and then reducing.

slide-31
SLIDE 31

Implementing CTL Model Checling using BDDs

Tie function applications pre∃(Y)

·

= {s ∈ S | ∃s′ ∈ S. (s → s′) ∧ s′ ∈ Y} pre∀(Y)

·

= {s ∈ S | ∀s′ ∈ S. (s → s′) → s′ ∈ Y} are implemented using BDDs like so: Bpre∃(Y) = exists( − → x′ , apply(∧, B→, BY′)) where

▶ B→ is the ROBDD representing the transition relation →; ▶ BY′ is the ROBDD representing the set Y with the variables

x1, . . . , xn renamed to x′

1, . . . , x′ n.

And: pre∀(Y) = S − pre∃(S − Y) where S − Y is implemented by negation (via apply).

slide-32
SLIDE 32

Implementing CTL Model Checling using BDDs

To implement the temporal connectives, we compute fjx points. EF φ = µY. φ ∪ pre∃(Y) EG φ = νY. φ ∩ pre∃(Y) ... By Knaster-Tarski, we know that:

▶ F|S|(∅) is the least fjxed point of F: µY.F(Y) ▶ F|S|(S) is the greatest fjxed point of F: νY.F(Y)

Compute EF φ using the sequence (of ROBDDs) Y0 = ∅, Y1 = φ ∪ pre∃(∅), Y2 = φ ∪ pre∃(φ ∪ pre∃(∅)), ... Usually, we won’t need |S| steps: we can stop when Yi = Yi+1

▶ Tiis check is very cheap with ROBDDs.

slide-33
SLIDE 33

Summary

▶ Operations on BDDs (H&R 6.2)

▶ reduce ▶ apply ▶ restrict, exists

▶ Symbolic Model Checking (H&R 6.3)

▶ Representing states and transitions as BDDs ▶ Implementing the CTL MC algorithm with BDDs