• 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!
168
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.

(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

(3)

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

(4)

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

(5)

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

(6)

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);

(7)

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);

(8)

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);

(9)

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);

(10)

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

...

(11)

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

...

(12)

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

(13)

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)

(14)

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)

(15)

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

(16)

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

(17)

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”)

(18)

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”)

(19)

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”)

(20)

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

(21)

Reduction: example

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

(22)

Reduction: example

Remove redundacies: a b

c c

d d d

c b

c

0 1 0 1 0 1

0 0 0 1 1

(23)

Reduction: example

Remove redundacies: a b

c c

d d d

b c

0 1 0 1 0 1

0 0 0

1

(24)

Reduction: example

Share identical nodes: a b

c c

d d d

b c

0 1 0 1 0 1

0 0 0

1

(25)

Reduction: example

Share identical nodes: a b

c

d

b

0

1

(26)

Reduction: example

Detect redundancies: a b

c

d

b

0

1

(27)

Reduction: example Remove redundancies:

Final OBDD!

a

c

d

b

0

1

(28)

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

})

(29)

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

(30)

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

(31)

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

(32)

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

(33)

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

(34)

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 ∈ {∧, ∨, →, ↔}

(35)

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 ∈ {∧, ∨, →, ↔}

(36)

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 ∈ {∧, ∨, →, ↔}

(37)

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

, >, ⊥)

(38)

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

, >, ⊥)

(39)

OBBD incremental building – example

ϕ = (A

1

∨ A

2

) ∧ (A

1

∨ ¬A

2

) ∧ (¬A

1

∨ A

2

) ∧ (¬A

1

∨ ¬A

2

)

(40)

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)

(41)

Critical choice of variable Orderings in OBDD’s

(a

1

↔ b

1

) ∧ (a

2

↔ b

2

) ∧ (a

3

↔ b

3

)

Linear size Exponential size

(42)

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

Linear size Exponential size

(43)

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

(44)

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

(45)

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

(46)

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

(47)

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)

(48)

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)

(49)

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)

(50)

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)

(51)

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|)

(but typically much smaller on average).

(52)

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).

(53)

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

(54)

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

(55)

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

(56)

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

(57)

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

(58)

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

(59)

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!

(60)

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).

(61)

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

(62)

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

(63)

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

(64)

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

(65)

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

(66)

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

(67)

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

(68)

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

(69)

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

(70)

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

(71)

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

(72)

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

(73)

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

(74)

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

(75)

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)

(76)

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)

(77)

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)

(78)

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)

(79)

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)

(80)

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)

(81)

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

)!

(82)

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

)!

(83)

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

)!

(84)

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

)!

(85)

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

)!

(86)

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

)!

(87)

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

(88)

Symbolic representation of systems

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

0

↔ ¬v

0

) ∧ (v

1

↔ 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

)

(89)

Symbolic representation of systems

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

)

(s,s0)∈R

ξ(s) ∧ ξ(s ) = (¬v

1

∧ ¬v

0

∧ ¬v

1

∧ v

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

)

(90)

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

)

Riferimenti

Documenti correlati

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

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..

limited sensitivity: one good setting, does not require expert users much higher capacity (more variables) than BDD based techniques Various techniques: Bounded Model