• Non ci sono risultati.

Introduction to Formal Methods Chapter 05: Symbolic CTL Model Checking

N/A
N/A
Protected

Academic year: 2021

Condividi "Introduction to Formal Methods Chapter 05: Symbolic CTL Model Checking"

Copied!
61
0
0

Testo completo

(1)

Introduction to Formal Methods

Chapter 05: Symbolic CTL Model Checking

Roberto Sebastiani

DISI, Università di Trento, Italy – roberto.sebastiani@unitn.it URL: http://disi.unitn.it/rseba/DIDATTICA/fm2020/

Teaching assistant:Enrico Magnago– enrico.magnago@unitn.it

CDLM in Informatica, academic year 2019-2020

last update: Monday 18thMay, 2020, 14:48

Copyright notice: some material (text, figures) displayed in these slides is courtesy of R. Alur, M. Benerecetti, A. Cimatti, M.

Di Natale, P. Pandya, M. Pistore, M. Roveri, and S.Tonetta, who detain its copyright. Some exampes displayed in these slides are taken from [Clarke, Grunberg & Peled, “Model Checking”, MIT Press], and their copyright is detained by the authors. All the other material is copyrighted by Roberto Sebastiani. Every commercial use of this material is strictly forbidden by the copyright laws without the authorization of the authors. No copy of these slides can be displayed in public

without containing this copyright notice.

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 1 / 68

(2)

Outline

1

Motivations

2

Ordered Binary Decision Diagrams

3

Symbolic representation of systems

4

Symbolic CTL Model Checking

5

A simple example

6

Symbolic CTL M.C: efficiency issues

7

Exercises

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 2 / 68

(3)

The Main Problem of CTL M.C. State Space Explosion

The bottleneck:

Exhaustive analysis may require to store all the states of the Kripke structure, and to explore them one-by-one

The state space may be exponential in the number of components and variables

(E.g., 300 Boolean vars =⇒ up to 2

300

≈ 10

100

states!) State Space Explosion:

too much memory required

too much CPU time required to explore each state

A solution: Symbolic Model Checking

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 4 / 68

(4)

Symbolic Model Checking

Symbolic representation:

manipulation of sets of states (rather than single states);

sets of states represented by formulae in propositional logic;

set cardinality not directly correlated to size

expansion of sets of transitions (rather than single transitions);

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 5 / 68

(5)

Symbolic Model Checking [cont.]

two main symbolic techniques:

Binary Decision Diagrams (BDDs)

Propositional Satisfiability Checkers (SAT solvers) Different model checking algorithms:

Fix-point Model Checking (historically, for CTL)

Fix-point Model Checking for LTL (conversion to fair CTL MC) Bounded Model Checking (historically, for LTL)

Invariant Checking ...

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 6 / 68

(6)

Ordered Binary Decision Diagrams (OBDDs) [Bryant, ’85]

Canonical representation of Boolean formulas

“If-then-else” binary direct acyclic graphs (DAGs) with one root and two leaves: 1, 0 (or >,⊥; or T, F)

Variable ordering A

1

, A

2

, ..., A

n

imposed a priori.

Paths leading to 1 represent models

Paths leading to 0 represent counter-models Note

Some authors call them Reduced Ordered Binary Decision Diagrams (ROBDDs)

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 8 / 68

(7)

OBDD - Examples

F T

b3 a3

b3 b2 a2

b2

b1 b1

a1 a1

a2

a3 a3 a3

a2

a3

b1 b1 b1 b1 b1 b1

b2 b2 b2 b2

b3 b3

b1 b1

T F

OBDDs of (a

1

↔ b

1

) ∧ (a

2

↔ b

2

) ∧ (a

3

↔ b

3

) with different variable orderings

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 9 / 68

(8)

Ordered Decision Trees

Ordered Decision Tree: from root to leaves, variables are encountered always in the same order

Example: Ordered Decision tree for ϕ = (a ∧ b) ∨ (c ∧ d ) a

b

c c

d d d d d d d

c

d b

c

0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 1

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 10 / 68

(9)

From Ordered Decision Trees to OBDD’s: reductions

Recursive applications of the following reductions:

share subnodes: point to the same occurrence of a subtree (via hash consing)

remove redundancies: nodes with same left and right children can be eliminated (“if A then B else B” =⇒ “B”)

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 11 / 68

(10)

Reduction: example

a b

c c

d d d d d d d

c

d b

c

0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 1

Detect redundacies: a b

c c

d d d d d d d

c

d b

c

0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 1

Remove redundacies: a b

c c

d d d

c b

c

0 1 0 1 0 1

0 0 0 1 1

Remove redundacies: a b

c c

d d d

b c

0 1 0 1 0 1

0 0 0

1

Share identical nodes: a b

c c

d d d

b c

0 1 0 1 0 1

0 0 0

1

Share identical nodes: a b

c

d

b

0

1

Detect redundancies: a b

c

d

b

0

1

Remove redundancies:

Final OBDD!

a

c

d

b

0

1

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 12 / 68

(11)

Recursive structure of an OBDD

Assume the variable ordering A

1

, A

2

, ..., A

n

:

OBDD(>, {A

1

, A

2

, ..., A

n

}) = 1 OBDD(⊥, {A

1

, A

2

, ..., A

n

}) = 0 OBDD(ϕ, {A

1

, A

2

, ..., A

n

}) = if A

1

then OBDD(ϕ[A

1

|>], {A

2

, ..., A

n

}) else OBDD(ϕ[A

1

|⊥], {A

2

, ..., A

n

})

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 13 / 68

(12)

Incrementally building an OBDD

obdd _build (>, {...}) := 1, obdd _build (⊥, {...}) := 0,

obdd _build (A

i

, {...}) := ite(A

i

, 1, 0), obdd _build ((¬ϕ), {A

1

, ..., A

n

}) :=

apply (¬, obdd _build (ϕ, {A

1

, ..., A

n

})) obdd _build ((ϕ

1

op ϕ

2

), {A

1

, ..., A

n

}) :=

reduce(

apply ( op,

obdd _build (ϕ

1

, {A

1

, ..., A

n

}), obdd _build (ϕ

2

, {A

1

, ..., A

n

}) ) )

op ∈ {∧, ∨, →, ↔}

“ite(A

i

, ϕ

>i

, ϕ

i

)” is “If A

i

Then ϕ

>i

Else ϕ

i

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 14 / 68

(13)

Incrementally building an OBDD (cont.)

apply (op, O

i

, O

j

) := (O

i

op O

j

) if (O

i

, O

j

∈ {1, 0}) apply (¬, ite(A

i

, ϕ

>i

, ϕ

i

)) :=

ite(A

i

, apply (¬, ϕ

>i

), apply (¬, ϕ

i

))

apply (op, ite(A

i

, ϕ

>i

, ϕ

i

), ite(A

j

, ϕ

>j

, ϕ

j

)) :=

if (A

i

= A

j

) then ite(A

i

, apply (op, ϕ

>i

, ϕ

>j

), apply (op, ϕ

i

, ϕ

j

))

if (A

i

< A

j

) then ite(A

i

, apply (op, ϕ

>i

, ite(A

j

, ϕ

>j

, ϕ

j

)), apply (op, ϕ

i

, ite(A

j

, ϕ

>j

, ϕ

j

))) if (A

i

> A

j

) then ite(A

j

, apply (op, ite(A

i

, ϕ

>i

, ϕ

i

), ϕ

>j

), apply (op, ite(A

i

, ϕ

>i

, ϕ

i

), ϕ

j

)) op ∈ {∧, ∨, →, ↔}

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 15 / 68

(14)

Incrementally building an OBDD (cont.)

Ex: build the obdd for A

1

∨ A

2

from those of A

1

, A

2

(order: A

1

, A

2

):

apply (∨,

A1

z }| {

ite(A

1

, >, ⊥),

A2

z }| {

ite(A

2

, >, ⊥))

= ite(A

1

, apply (∨, >, ite(A

1

, >, ⊥)), apply (∨, ⊥, ite(A

2

, >, ⊥)) )

= ite(A

1

, >, ite(A

2

, >, ⊥) )

Ex: build the obdd for (A

1

∨ A

2

) ∧ (A

1

∨ ¬A

2

) from those of (A

1

∨ A

2

), (A

1

∨ ¬A

2

) (order: A

1

, A

2

):

apply (∧,

(A1∨A2)

z }| {

ite(A

1

, >, ite(A

2

, >, ⊥)),

(A1∨¬A2)

z }| {

ite(A

1

, >, ite(A

2

, ⊥, >)),

= ite(A

1

, apply (∧, >, >), apply (∧, ite(A

2

, >, ⊥), ite(A

2

, ⊥, >))

= ite(A

1

, >, ite(A

2

, apply (∧, >, ⊥), apply (∧, ⊥, >)))

= ite(A

1

, >, ite(A

2

, ⊥, ⊥))

= ite(A

1

, >, ⊥)

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 16 / 68

(15)

OBBD incremental building – example

ϕ = (A

1

∨ A

2

) ∧ (A

1

∨ ¬A

2

) ∧ (¬A

1

∨ A

2

) ∧ (¬A

1

∨ ¬A

2

)

T F

A2 A1

T F

A2 A1

T F

A2 A1

T F

A2 A1

A1

T F

A1

T F

F (A1 v −A2)

(A1 v A2) (−A1 v A2) (−A2 v −A2)

(A1 v A2) ^ (A1 v −A2) (−A1 v A2) ^ (−A1 v −A2)

(A1 v A2) ^ (A1 v −A2) ^ (−A1 v A2) ^ (−A1 v −A2)

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 17 / 68

(16)

Critical choice of variable Orderings in OBDD’s

(a

1

↔ b

1

) ∧ (a

2

↔ b

2

) ∧ (a

3

↔ b

3

)

True False

a1

b1

a2

b2 b2

a3

b3 b3

b1

b1 b1 b1 b1 b1 b1 b1 b1

a3 a3 a3 a3

a2 a2

a1

b3 b3

b2 b2

b2 b2

False True

Linear size Exponential size

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 18 / 68

(17)

OBDD’s as canonical representation of Boolean formulas

An OBDD is a canonical representation of a Boolean formula:

once the variable ordering is established, equivalent formulas are represented by the same OBDD:

ϕ

1

↔ ϕ

2

⇐⇒ OBDD(ϕ

1

) = OBDD(ϕ

2

) equivalence check requires constant time!

=⇒validity check requires constant time! (ϕ ↔ >)

=⇒(un)satisfiability check requires constant time! (ϕ ↔ ⊥) the set of the paths from the root to 1 represent all the models of the formula

the set of the paths from the root to 0 represent all the counter-models of the formula

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 19 / 68

(18)

Exponentiality of OBDD’s

The size of OBDD’s may grow exponentially wrt. the number of variables in worst-case

Consequence of the canonicity of OBDD’s (unless P = co-NP) Example: there exist no polynomial-size OBDD representing the electronic circuit of a bitwise multiplier

Note

The size of intermediate OBDD’s may be bigger than that of the final one (e.g., inconsistent formula)

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 20 / 68

(19)

Useful Operations over OBDDs

the equivalence check between two OBDDs is simple are they the same OBDD? (=⇒ constant time)

the size of a Boolean composition is up to the product of the size of the operands: |f op g| = O(|f | · |g|)

f g

fg O(|f| |g|)

(but typically much smaller on average).

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 21 / 68

(20)

Boolean quantification

Shannon’s expansion:

If v is a Boolean variable and f is a Boolean formula, then

∃v .f := f |

v =0

∨ f |

v =1

∀v .f := f |

v =0

∧ f |

v =1

v does no more occur in ∃v .f and ∀v .f !!

Multi-variable quantification: ∃(w

1

, . . . , w

n

).f := ∃w

1

. . . ∃w

n

.f Intuition:

µ |= ∃v .f iff exists tvalue ∈ {>, ⊥} s.t. µ ∪ {v := tvalue} |= f µ |= ∀v .f iff forall tvalue ∈ {>, ⊥}, µ ∪ {v := tvalue} |= f Example: ∃b, c . ((a ∧ b) ∨ (c ∧ d )) = a ∨ d

Note

Naive expansion of quantifiers to propositional logic may cause a blow-up in size of the formulae

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 22 / 68

(21)

OBDD’s and Boolean quantification

OBDD’s handle quantification operations quite efficiently

if f is a sub-OBDD labeled by variable v , then f |

v =1

and f |

v =0

are the “then” and “else” branches of f

fv=1 fv=0

. . . . v

=⇒ lots of sharing of subformulae!

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 23 / 68

(22)

OBDD – summary

Factorize common parts of the search tree (DAG) Require setting a variable ordering a priori (critical!) Canonical representation of a Boolean formula.

Once built, logical operations (satisfiability, validity, equivalence) immediate.

Represents all models and counter-models of the formula.

Require exponential space in worst-case

Very efficient for some practical problems (circuits, symbolic model checking).

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 24 / 68

(23)

Symbolic Representation of Kripke Structures

Symbolic representation:

sets of states as their characteristic function (Boolean formula) provide logical representation and transformations of characteristic functions

Example:

three state variables x

1

, x

2

, x

3

:

{ 000, 001, 010, 011 } represented as “first bit false”: ¬x

1

with five state variables x

1

, x

2

, x

3

, x

4

, x

5

:

{ 00000, 00001, 00010, 00011, 00100, 00101, 00110, 00111,. . . , 01111 } still represented as “first bit false”: ¬x

1

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 26 / 68

(24)

Kripke Structures in Propositional Logic

Let M = (S, I, R, L, AF ) be a Kripke structure

States s ∈ S are described by means of an array V of Boolean state variables.

A state is a truth assignment to each atomic proposition in V.

0100 is represented by the formula (¬x

1

∧ x

2

∧ ¬x

3

∧ ¬x

4

) we call ξ(s) the formula representing the state s ∈ S (Intuition: ξ(s) holds iff the system is in the state s)

A set of states Q ⊆ S can be represented by (any formula which is logically equivalent to) the formula ξ(Q):

_

s∈Q

ξ(s)

(Intuition: ξ(Q) holds iff the system is in one of the states s ∈ Q) Bijection between models of ξ(Q) and states in Q

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 27 / 68

(25)

Remark

every propositional formula is a (typically very compact) representation of the set of assignments satisfying it Any formula equivalent to ξ(Q) is a representation of Q

=⇒ Typically Q can be encoded by much smaller formulas than W

s∈Q

ξ(s)!

Example: Q ={ 00000, 00001, 00010, 00011, 00100, 00101, 00110, 00111,. . . , 01111 } represented as “first bit false”: ¬x

1

W

s∈Q

ξ(s) = (¬x

1

∧ ¬x

2

∧ ¬x

3

∧ ¬x

4

∧ ¬x

5

) ∨ (¬x

1

∧ ¬x

2

∧ ¬x

3

∧ ¬x

4

∧ x

5

) ∨ (¬x

1

∧ ¬x

2

∧ ¬x

3

∧ x

4

∧ ¬x

5

) ∨ ...

(¬x

1

∧ x

2

∧ x

3

∧ x

4

∧ x

5

)

 

 

 

 

2

4

disjuncts

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 28 / 68

(26)

Symbolic Representation of Set Operators

One-to-one correspondence between sets and Boolean operators Set of all the states: ξ(S) := >

Empty set : ξ(∅) := ⊥

Union represented by disjunction:

ξ(P ∪ Q) := ξ(P) ∨ ξ(Q)

Intersection represented by conjunction:

ξ(P ∩ Q) := ξ(P) ∧ ξ(Q)

Complement represented by negation:

ξ(S/P) := ¬ξ(P)

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 29 / 68

(27)

Symbolic Representation of Transition Relations

The transition relation R is a set of pairs of states: R ⊆ S × S A transition is a pair of states (s, s

0

)

A new vector of variables V’ (the next state vector) represents the value of variables after the transition has occurred

ξ(s, s

0

) defined as ξ(s) ∧ ξ(s

0

) (Intuition: ξ(s, s

0

) holds iff the system is in the state s and moves to state s

0

in next step) The transition relation R can be (naively) represented by

_

(s,s0)∈R

ξ(s, s

0

) = _

(s,s0)∈R

(ξ(s) ∧ ξ(s

0

))

Note

Each formula equivalent to ξ(R) is a representation of R

=⇒ Typically R can be encoded by a much smaller formula than W

(s,s0)∈R

ξ(s) ∧ ξ(s

0

)!

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 30 / 68

(28)

Example: a simple counter

MODULE main VAR

v0 : boolean;

v1 : boolean;

out : 0..3;

ASSIGN

init(v0) := 0;

next(v0) := !v0;

init(v1) := 0;

next(v1) := (v0 xor v1);

out := toint(v0) + 2*toint(v1);

v0

v1

v

1

v

0

v

10

v

00

0 0 0 1

0 1 1 0

1 0 1 1

1 1 0 0

00

11 01

10

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 31 / 68

(29)

Example: a simple counter [cont.]

v0

v1

v

1

v

0

v

10

v

00

0 0 0 1

0 1 1 0

1 0 1 1

1 1 0 0

00

11 01

10

ξ(R) = (v

00

↔ ¬v

0

) ∧ (v

10

↔ v

0

L v

1

) W

(s,s0)∈R

ξ(s) ∧ ξ(s

0

) = (¬v

1

∧ ¬v

0

∧ ¬v

10

∧ v

00

) ∨ (¬v

1

∧ v

0

∧ v

10

∧ ¬v

00

) ∨ (v

1

∧ ¬v

0

∧ v

10

∧ v

00

) ∨ (v

1

∧ v

0

∧ ¬v

10

∧ ¬v

00

)

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 32 / 68

(30)

Pre-Image

(Backward) pre-image of a set:

P PreImage(P)

Evaluate one-shot all transitions ending in the states of the set Set theoretic view:

PreImage(P, R) := {s | for some s

0

∈ P, (s, s

0

) ∈ R}

Logical view: ξ(PreImage(P, R)) := ∃V

0

.(ξ(P)[V

0

] ∧ ξ(R)[V , V

0

]) µ over V is s.t µ |= ∃V

0

.(ξ(P)[V

0

] ∧ ξ(R)[V , V

0

]) iff,

for some µ

0

over V

0

, we have: µ ∪ µ

0

|= (ξ(P)[V

0

] ∧ ξ(R)[V , V

0

]), i.e., µ

0

|= ξ(P)[V

0

] and µ ∪ µ

0

|= ξ(R)[V , V

0

])

Intuition: µ ⇐⇒ s, µ

0

⇐⇒ s

0

, µ ∪ µ

0

⇐⇒ hs, s

0

i

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 33 / 68

(31)

Example: simple counter

v0

v1

v

1

v

0

v

10

v

00

0 0 0 1

0 1 1 0

1 0 1 1

1 1 0 0

00

11 01

10

ξ(R) = (v

00

↔ ¬v

0

) ∧ (v

10

↔ v

0

L v

1

) ξ(P) := (v

0

↔ v

1

) (i.e., P = {00, 11})

ξ(PreImage(P, R)) =

∃V

0

.(ξ(P)[V

0

] ∧ ξ(R)[V , V

0

]) =

∃v

00

v

10

.((v

00

↔ v

10

) ∧ (v

00

↔ ¬v

0

) ∧ (v

10

↔ v

0

L v

1

)) = (¬v

0

∧ v

0

M

v

1

)

| {z }

v00=>,v10=>

∨ ⊥

|{z}

v00=>,v10=⊥

∨ ⊥

|{z}

v00=⊥,v10=>

∨ (v

0

∧ ¬(v

0

M v

1

))

| {z }

v00=⊥,v10=⊥

=

v

1

(i.e., {10, 11})

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 34 / 68

(32)

Pre-Image [cont.]

v

1

⊥ >

v

0

v

1

v

1

⊥ >

v

0

v

00

v

00

⊥ >

v

1

v

1

v

10

v

10

ξ(P) = v

0

↔ v

1

ξ(R) = (v

00

↔ ¬v

0

) ∧ (v

10

↔ v

0

L v

1

)

ξ(PreImage(P, R)) =

∃V

0

.((v

00

↔ v

10

) ∧ (v

00

↔ ¬v

0

) ∧ (v

10

↔ v

0

L v

1

)) = v

1

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 35 / 68

(33)

Forward Image

Forward image of a set:

P

Image(P)

Evaluate one-shot all transitions from the states of the set Set theoretic view:

Image(P, R) := {s

0

| for some s ∈ P, (s, s

0

) ∈ R}

Logical Characterization:

ξ(Image(P, R)) := ∃V .(ξ(P)[V ] ∧ ξ(R)[V , V

0

])

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 36 / 68

(34)

Example: simple counter

v0

v1

v

1

v

0

v

10

v

00

0 0 0 1

0 1 1 0

1 0 1 1

1 1 0 0

00

11 01

10

ξ(R) = (v

00

↔ ¬v

0

) ∧ (v

10

↔ v

0

L v

1

) ξ(P) := (v

0

↔ v

1

) (i.e., P = {00, 11})

ξ(Image(P, R)) = ∃V .(ξ(P)[V ] ∧ ξ(R)[V , V

0

])

= ∃V .((v

0

↔ v

1

) ∧ (v

00

↔ ¬v

0

) ∧ (v

10

↔ v

0

L v

1

))

= ...

= ¬v

10

(i.e., {00, 01})

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 37 / 68

(35)

Forward Image [cont.]

⊥ >

v

0

v

1

v

1

⊥ >

v

0

v

00

v

00

⊥ >

v

1

v

1

v

10

v

10

ξ(P) = v

0

↔ v

1

ξ(R) = (v

00

↔ ¬v

0

) ∧ (v

10

↔ v

0

L v

1

)

v

10

∃V .((v

0

↔ v

1

) ∧ (v

00

↔ ¬v

0

) ∧ (v

10

↔ v

0

L v

1

)) = ξ(Image(P, R)) =

¬v

10

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 38 / 68

(36)

Application of the Transition Relation

Image and PreImage of a set of states S computed by means of quantified Boolean formulae

The whole set of transitions can be fired (either forward or backward) in one logical operation

The symbolic computation of PreImage and Image provide the primitives for symbolic search of the state space of FSM’s

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 39 / 68

(37)

Symbolic CTL model checking

Problem: M |= ϕ?,

M = hS, I, R, L, APi being a Kripke structure and ϕ being a CTL formula

Solution: represent I and R as Boolean formulas ξ(I), ξ(R) and encode them as OBDDs, and

Apply fix-point CTL M.C. algorithm:

using OBDDs to represent sets of states and relations, using OBDD operations to handle set operations

using OBDD quantification technique to compute PreImages

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 41 / 68

(38)

General Schema

Assume ϕ written in terms of ¬, ∧, EX, EU, EG A general M.C. algorithm (fix-point):

(i) represent I and R as Boolean formulas ξ(I), ξ(R) (ii) for every ϕ

i

∈ Sub(ϕ), find ξ([ϕ

i

])

(iii) Check if ξ(I) → ξ([ϕ])

Subformulas Sub(ϕ) of ϕ are checked bottom-up

ξ([ϕ

i

]) computed directly, without computing [ϕ

i

] explicitly!!!

Boolean operators handled directly by OBDDs

next temporal operators EX: handled by symbolic PreImage computation

other temporal operators EG, EU: handled by fix-point symbolic computation

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 42 / 68

(39)

Symbolic Denotation of a CTL formula ϕ: ξ([ϕ])

ξ([ϕ]) := ξ({s ∈ S : M, s |= ϕ}) ξ([false]) = ⊥ ξ([true]) = >

ξ([p]) = p

ξ([¬ϕ

1

]) = ¬ξ([ϕ

1

]

ξ([ϕ

1

∧ ϕ

2

]) = ξ([ϕ

1

]) ∧ ξ([ϕ

2

])

ξ([EXϕ]) = ∃V

0

.( ξ([ϕ])[V

0

] ∧ ξ(R)[V , V

0

]) ξ([EGβ]) = νZ .( ξ([β]) ∧ ξ([EXZ ]) )

ξ([E(β

1

2

)]) = µZ .( ξ([β

2

]) ∨ (ξ([β

1

]) ∧ ξ([EXZ ]) )

Notation: if X

1

and X

2

are OBDDs and op is a Boolean operator, we write “X

1

op X

2

” for “reduce(apply(op,X

1

,X

2

))”

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 43 / 68

(40)

General M.C. Procedure

OBDD Check(CTL_formula β) { if (In_OBDD_Hash(β))

return OBDD_Get_From_Hash(β);

case β of

true: return obdd _true;

false: return obdd _false;

¬β

1

: return ¬ Check(β

1

);

β

1

∧ β

2

: return (Check(β

1

) ∧ Check(β

2

));

EXβ

1

: return PreImage(Check(β

1

));

EGβ

1

: return Check_EG(Check(β

1

));

E(β

1

2

): return Check_EU(Check(β

1

),Check(β

2

));

}

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 44 / 68

(41)

PreImage

OBDD PreImage(OBDD X ) {

return ∃V

0

.( X [V

0

] ∧ ξ(R)[V , V

0

]);

}

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 45 / 68

(42)

Check_EG

OBDD Check_EG(OBDD X ) { Y

0

:= X ; j := 1;

repeat

Y := Y

0

; j := j + 1;

Y

0

:= Y ∧ PreImage(Y ));

until (Y

0

↔ Y );

return Y ; }

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 46 / 68

(43)

Check_EU

OBDD Check_EU(OBDD X

1

,X

2

) { Y

0

:= X

2

; j := 1;

repeat

Y := Y

0

; j := j + 1;

Y

0

:= Y ∨ (X

1

∧ PreImage(Y ));

until (Y

0

↔ Y );

return Y ; }

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 47 / 68

(44)

CTL Symbolic Model Checking – Summary

Based on fixed point CTL M.C. algorithms

Kripke structure encoded as Boolean formulas (OBDDs) All operations handled as (quantified) Boolean operations Avoids building the state graph explicitly

reduces dramatically the state explosion problem

=⇒ problems of up to 10

120

states handled!!

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 48 / 68

(45)

A simple example

MODULE main VAR

b0 : boolean;

b1 : boolean;

...

ASSIGN

init(b0) := 0;

next(b0) := case b0 : 1;

!b0 : {0,1};

esac;

init(b1) := 0;

next(b1) := case b1 : 1;

!b1 : {0,1};

esac;

...

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 50 / 68

(46)

A simple example [cont.]

N Boolean variables b0, b1, ...

Initially, all variables set to 0

Each variable can pass from 0 to 1, but not vice-versa 2

N

states, all reachable

(Simplified) model of a student career behaviour.

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 51 / 68

(47)

A simple example: FSM

(transitive trans. omitted) 2

N

STATES

O(2

N

) TRANSITIONS

. . . .

. . . .

. . . .

. . . .

. . . . b1

b2 b0

b0,b1

b0,b2

b1,b2

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 52 / 68

(48)

A simple example: OBDD(ξ(R))

2N + 2 NODES

. . . .

True False

b0

b0’

b1

b1’

b2

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 53 / 68

(49)

A simple example: states vs. OBDD nodes [NuSMV.2]

0 50 100 150 200 250 300 350

0 2 4 6 8 10 12 14 16

VAR #

BDD NODES

0 10000 20000 30000 40000 50000 60000 70000

0 2 4 6 8 10 12 14 16

VAR #

STATES BDD NODES

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 54 / 68

(50)

A simple example: reaching K bits true

Property EF(b0 + b1 + ... + b(N − 1) ≥ K ) (K ≤ N) (it may be reached a state in which K bits are true) E.g.: “it is reachable a state where K exams are passed”

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 55 / 68

(51)

A simple example: FSM

N

K  + K +1 N  + ... + N N 

. . . .

. . . .

. . . .

. . . .

. . . . K=2

b1

b2 b0

b0,b1

b0,b2

b1,b2

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 56 / 68

(52)

A simple example: OBDD(ξ(ϕ))

(N − K + 1) · K + 2 NODES

true false

. . . .

. . . .

. . . . . . . .

. . . . . . . .

. . . .

. . . . b1

b2 b0

True False

b1 b1

b(K−1)

b(K)

b(K+1)

b(N−K)

b(N−K+1)

b(N−1)

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 57 / 68

(53)

A simple example: states vs. OBDD nodes [NuSMV.2]

0 100 200 300 400 500 600 700 800 900 1000

2 4 6 8 10 12 14 16

VAR #

BDD NODES

0 1e+08 2e+08 3e+08 4e+08 5e+08 6e+08 7e+08 8e+08

2 4 6 8 10 12 14 16

VAR #

STATES BDD NODES

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 58 / 68

(54)

Back to OBDDs: Efficiency Issues

OBDD packages provides efficient basis for Symbolic Model Checking:

unique representant for each OBDD via hash tables complement-based representation of negation memoizing partial computations

garbage collection mechanisms

variable reordering algorithms, dynamic activation specialized algorithms for relational products for Image/PreImage computations

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 60 / 68

(55)

Symbolic Model Checkers

Most hardware design companies have their own Symbolic Model Checker(s)

Intel, IBM, Motorola, Siemens, ST, Cadence, ...

very advanced tools proprietary technolgy!

On the academic side CMU SMV [McMillan]

VIS [Berkeley, Colorado]

Bwolen Yang’s SMV [CMU]

NuSMV [CMU, IRST, UNITN, UNIGE]

...

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 61 / 68

(56)

Ex: OBDDs

Let ϕ

def

= (A ∧ (B ∨ C)) and ϕ

0 def

= ∃A.∀B.ϕ. Using the variable ordering “A, B, C”, draw the OBDD corresponding to the formulas ϕ and ϕ

0

.

ϕ

def

= (A ∧ (B ∨ C)) [ Solution:

>

C A

B

>

>

>

]

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 63 / 68

(57)

Ex: OBDDs (cont.)

ϕ

0 def

= ∃A.∀B.(A ∧ (B ∨ C)) [ Solution:

ϕ0 def= ∃A.∀B.ϕ

= ∀B.(A ∧ (B ∨ C)))[A := >] ∨ (∀B.(A ∧ (B ∨ C)))[A := ⊥]

= ∀B.(B ∨ C)) ∨ ∀B.⊥

= ((B ∨ C)[B := >] ∧ (B ∨ C)[B := ⊥]) ∨ ⊥

= (> ∧ C)

= C

which corresponds to the following OBDD:

>

C

>

]

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 64 / 68

(58)

Ex: Symbolic CTL Model Checking

Given the following finite state machine expressed in NuSMV input language:

MODULE main

VAR v1 : boolean; v2 : boolean;

INIT (!v1 & !v2)

TRANS (next(v1) <-> !v1) & (next(v2) <-> (v1<->v2)) and consider the property P

def

= (v

1

∧ v

2

). Write:

the Boolean formulas I(v

1

, v

2

) and T (v

1

, v

2

, v

10

, v

20

) representing respectively the initial states and the transition relation of M.

[ Solution: I(v

1

, v

2

) is (¬v

1

∧ ¬v

2

), T (v

1

, v

2

, v

10

, v

20

) is (v

10

↔ ¬v

1

) ∧ (v

20

↔ (v

1

↔ v

2

)) ]

the graph representing the FSM. (Assume the notation “v

1

v

2

” for labeling the states: e.g. “10” means “v

1

= 1, v

2

= 0”.)

[ Solution:

00 11 01 10

]

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 65 / 68

(59)

Ex: Symbolic CTL Model Checking (cont.)

the Boolean formula representing symbolically

EXP. [The formula must be

computed symbolically, not simply inferred from the graph of the previous question!]

[ Solution:

EX(P)

= ∃v

10

, v

20

.(T (v

1

, v

2

, v

10

, v

20

) ∧ P(v

10

, v

20

))

= ∃v

10

, v

20

.((v

10

↔ ¬v

1

) ∧ (v

20

↔ (v

1

↔ v

2

)) ∧ (v

10

∧ v

20

)

| {z }

=⇒v10=>,v20=>

)

=

v01=>,v20=>

z }| {

(¬v

1

∧ ¬v

2

) ∨⊥ ∨ ⊥ ∨ ⊥

= (¬v

1

∧ ¬v

2

) . ]

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 66 / 68

(60)

Ex: Symbolic CTL Model Checking

Given the following finite state machine expressed in NuSMV input language:

VAR v1 : boolean; v2 : boolean;

INIT init(v1) <-> init(v2)

TRANS (v1 <-> next(v2)) & (v2 <-> next(v1));

write:

the Boolean formulas I(v

1

, v

2

) and T (v

1

, v

2

, v

10

, v

20

) representing the initial states and the transition relation of M respectively.

[ Solution: I(v

1

, v

2

) is (v

1

↔ v

2

), T (v

1

, v

2

, v

10

, v

20

) is (v

1

↔ v

20

) ∧ (v

2

↔ v

10

) ] the graph representing the FSM. (Assume the notation “v

1

v

2

” for labeling the states. E.g., “10” means “v

1

= 1, v

2

= 0”.)

[ Solution:

11 00

]

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 67 / 68

(61)

Ex: Symbolic CTL Model Checking (cont.)

the Boolean formula R

1

(v

10

, v

20

) representing the set of states which can be reached after exactly 1 step.

NOTE: this must be computed symbolically, not simply deduced from the graph of question b).

[ Solution:

R

1

(v

10

, v

20

) = ∃v

1

, v

2

.(I(v

1

, v

2

) ∧ T (v

1

, v

2

, v

10

, v

20

))

= ∃v

1

, v

2

.((v

1

↔ v

2

) ∧ (v

1

↔ v

20

) ∧ (v

2

↔ v

10

))

= ((v

1

↔ v

2

) ∧ (v

1

↔ v

20

) ∧ (v

2

↔ v

10

))[v

1

= ⊥, v

2

= ⊥] ∨ ((v

1

↔ v

2

) ∧ (v

1

↔ v

20

) ∧ (v

2

↔ v

10

))[v

1

= ⊥, v

2

= >] ∨ ((v

1

↔ v

2

) ∧ (v

1

↔ v

20

) ∧ (v

2

↔ v

10

))[v

1

= >, v

2

= ⊥] ∨ ((v

1

↔ v

2

) ∧ (v

1

↔ v

20

) ∧ (v

2

↔ v

10

))[v

1

= >, v

2

= >]

= (¬v

10

∧ ¬v

20

) ∨ ⊥ ∨ ⊥ ∨ (v

10

∧ v

20

)

= (¬v

10

∧ ¬v

20

) ∨ (v

10

∧ v

20

)

= (v

10

↔ v

20

) . ]

Roberto Sebastiani Ch. 05: Symbolic CTL Model Checking Monday 18thMay, 2020 68 / 68

Riferimenti

Documenti correlati

handle temporal operators AX, EX by computing pre-images handle temporal operators AG, EG, AF, EF, AU, EU, by (implicitly) applying tableaux rules, until a fixpoint is reached..

(E.g., 300 Boolean vars =⇒ up to 2 300 ≈ 10 100 states!) State Space Explosion:.. too much

Copyright notice: some material (text, figures) displayed in these slides is courtesy of R..

Given a fair Kripke model M, a fair non-trivial SCC is an SCC with at least one edge that contains at least one state for every fair condition. =⇒ all states in a fair (non-trivial)

Example: although state 3 belongs to sat(¬heat Uclose), the path which loops forever in 3 does not satisfy ¬heatUclose, as close never holds in that path. We restrict the

[Alternatively: there is no positive U-subformula, so that we must add a AGAF&gt; fairness condition, which is equivalent to say that all states belong to the fairness

Given the following generalized Büchi automaton A def = hQ, Σ, δ, I, FT i, with two sets of accepting states FT def = {F 1, F 2} s.t.. Ex:

From LTL Formulas to Büchi Automata: generalities On-the-fly construction of Bu¨chi Automata from LTL Complexity..