© fachgebiet softwaretechnik, heinz nixdorf institut, universität paderborn 5. model checking...

42
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

Upload: victoria-mooney

Post on 27-Mar-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

5. Model Checking

Modellbasierte Softwareentwicklung 117.01.2013

Page 2: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

2

Verification?

„Testing can only show the presence of errors never their

absence“ (Edsgar Dijkstra)

Tested cases

17.01.2013

Page 3: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

3

Model Checking

What is Model Checking? Two answers: … an automated proof method … a precise system analysis tool

A rigorous proof that the program does what you say it should do

This requires: Formal semantics: Kripke structure Formal specification: Temporal logic Method: Manual proof (up to 1981);

today model checking!

“Reused” slides (partially modified/combined) from:[Dwyer2002s] Matthew Dwyer. Kansas State University, USA Software Model Checking Tutorial

FSE’02 – Charleston, South Carolina – Nov. 19, 2002

[Dwyer2002s]

17.01.2013

Page 4: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

4

Model Checking

Proof of M ⊨ φ Question: „Is the system a model of the formula?“ Model Checking algorithm searches the whole state space

of the system

→ State space needs to be finite

17.01.2013

Page 5: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

517.01.2013

Input-Output Patterns

Reactive systems: Parallelism, distribution Interaction with their environment, no termination, hence

Hoare Style proofs do not work High complexity, safety critical

Page 6: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

617.01.2013

Model Checking

Kripke-structure

s0 s1

s2s3

s4s5

×Counterexample

It is always true..It is never true…

Specification

UML-Diagram (e.g. StateChart)

Code Generation&

Test

Temporal logic formula(e.g. CTL, LTL, …)

Page 7: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

7

Defines a state based transition graph, which specifies the behavior of a reactive system

17.01.2013

Kripke Structure

S = {s0, s1, s2, s3, s4}

T = {(s0,s1), (s1,s0), (s1, s2), (s1, s3), (s2, s3), (s3, s0), (s3, s4), (s4, s4)}

S0 = {s0}

L = {s0 → {p0}, s1 → {p1}, {s2} → {p0}, s3 → {p2}, s4 → {p1, p2}}

Kripke Structure = (AP, S, L, T, S0)• AP: Set of atomic propositions• S: finite set of states• L: S → ℙ(AP), labels• T S x S, transitions, is left-total (every node is source node for at least one transition)• S0: set of initial states

s0

s1 s2

s3

s4

p0

p2

p1 p0

p1, p2

AP = {p0, p1, p2}

Page 8: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

817.01.2013

Kripke Structure Path Tree

s0

s1 s2

s3

s4

p0

p2

p1 p0

p1

s0p0

s1p1

s1p1

s2 s3s0p0 p0 p2

s0 s4p0 p1

s3

s4 s0p0p1

p2

Page 9: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

917.01.2013

Microwave Example

startcloseerror

S5

startclose

S6

startcloseheat

S7

S1

starterror

S2

close

S3closeheat

S4

AP := {start, close, error, heat}

Page 10: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

1017.01.2013

Microwave Example

Properties: There is a state

where MW heats

The MW shall not heat if an error occured

There is a state directly following the initial state where the door is closed

startcloseerror

S5

startclose

S6

startcloseheat

S7

S1

starterror

S2

close

S3closeheat

S4

AP := {start, close, error, heat}

Page 11: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

1117.01.2013

Computation Tree Logic (CTL)

CTL-Formula consist of: Atomic propositions (predicates on states) Boolean connectives , , Additional CTL-operators of the form:

path quantifier + temporal operator

Path Quantifier: • A: for all paths holds…• E: there is a path for which holds…

Temporal Operator:• X: Next• F: Future • G: Global• U: Until

Page 12: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

1217.01.2013

Computation Tree Logic (CTL)

Valid CTL-formulae are defined recursively as follows:

Every atomic proposition (p, q, …) is a valid CTL-Formula.

Let 1, 2 be CTL-formulae then the following formulae are valid CTL-formulae:

Examples: p, p, p q, EF p, AG q, AG q, AG (EF p), (EX p) (AG q), A[ (EF p) U q ]

• EX 1

• EF 1

• EG 1

• E[ 1 U 2 ]

• 1

• 1 2

• 1 2

• 1 2

• AX 1

• AF 1

• AG 1

• A[ 1 U 2 ]

Page 13: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

1317.01.2013

CTL-Operators Examples

EX p

p

E[pUq]

p

p

q

AG p

p

p

p

AF p

p

p

p

„There is a path where p holds in the next state.“

„There is a path where p holds Until q holds.“

„For all paths p holds at some point in the Future.“

„For all paths p holds Globally (in every state).“

CTL: A path quantifier in front of every temporal operator

Page 14: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

1417.01.2013

Microwave Example

Properties: There is a state

where MW heats EF (heat)

The MW shall not heat if an error occured

AG ¬(error ⋀ heat)

There is a state directly following the initial state where the door is closed

EX (close)

startcloseerror

S5

startclose

S6

startcloseheat

S7

S1

starterror

S2

close

S3closeheat

S4

AP := {start, close, error, heat}

Page 15: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

1517.01.2013

State Explosion Problem

Problem: number of states of a realistic system usually huge The number of states of a system is exponential in its

number of variables

→ Construction of the whole state space not always feasible

(too little system memory)

Solution: try to avoid explicit construction of state space (Later in this course)

Page 16: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

1617.01.2013

Software Model Checking: Reality Check

Specifications are partial They do not define

complete functional correctness

Focus on crucial properties

Cost of checking is enormous Must approximate What kinds of

approximation are useful?

OK

orSoftware model

Specification

ModelChecker

Error trace

Line 5: …Line 12: …Line 15:…Line 21:…Line 25:…Line 27:… …Line 41:…Line 47:…

[Dwyer2002s]

Page 17: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

17

Software Model Checking -

Approximation

OK

Software model

Specification

ModelChecker

Error trace

Line 5: …Line 12: …Line 15:…Line 21:…Line 25:…Line 27:… …Line 41:…Line 47:…

No false positives

No false negatives

Approximation

[Dwyer2002s]

17.01.2013

Page 18: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

1817.01.2013

Model Construction Problem

Semantic gap: Programming Languages with methods, inheritance,

dynamic creation, exceptions, etc. Model Description Languages are only automata

Model Description

Model Checker

Program

void add(Object o) { buffer[head] = o; head = (head+1)%size;}

Object take() { … tail=(tail+1)%size; return buffer[tail];}

Gap

[Dwyer2002s]

Page 19: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

1917.01.2013

Output Interpretation Problem

Raw error trace may be 1000’s of steps long Must map line listing onto model description Mapping to source is made difficult by

Semantic gap & clever encodings of complex features multiple optimizations and transformations

Model DescriptionProgram

void add(Object o) { buffer[head] = o; head = (head+1)%size;}

Object take() { … tail=(tail+1)%size; return buffer[tail];}

Gap

Error trace

Line 5: …Line 12: …Line 15:…Line 21:…Line 25:…Line 27:… …Line 41:…Line 47:…

[Dwyer2002s]

Page 20: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

2017.01.2013

Why is model-checking software difficult?

Problems using existing checkers: Model construction Property specification State explosion Output interpretation

OK

Error trace

orFinite-state model

Temporal logic formula

Model Checker

Line 5: …Line 12: …Line 15:…Line 21:…

[Dwyer2002s]

Page 21: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

2117.01.2013

Summary

Instead of a „complete“ specification use only one that consists of relevant properties (e.g., for safety)

Usually only restricted notions for formal models Finite automata (or similar restricted models)

Often restricted notions for formal properties Propositional logic Temporal logic (Model-Checking)

Benefit: Counterexample when a property is not fulfilled

Limitations: Not feasible for too large models (state explosion) Not feasible for too complex formal properties

Page 22: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

5.1 CTL Model Checking

17.01.2013Modellbasierte Softwareentwicklung 22

Page 23: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

2317.01.2013

Microwave Example

Properties: There is a state

where MW heats EF (heat)

The MW shall not heat if an error occured

AG ¬(error ⋀ heat)

There is a state directly following the initial state where the door is closed

EX (close)

startcloseerror

S5

startclose

S6

startcloseheat

S7

S1

starterror

S2

close

S3closeheat

S4

AP := {start, close, error, heat}

Page 24: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

2417.01.2013

CTL-Formula Reduction

By EX, EG and EU all other properties can be expressed, as e.g. in AX f = EX (f) EF f = E (true U f) AG f = EF (f) AF f = EG (f) A (f U g) = E (g U (f g)) EG g

= (E (g U (f g)) EG g)

In the following only EX, EG, EU, and

Page 25: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

2517.01.2013

Model Checking Algorithm (1/2) Globally defined Kripke-Structure, label(s) is the set of all formulas which hold in a state s

Iterative algorithm: In the i-th run check all sub-formulae of height i in the syntax tree of the formula ensures that no formula is examined before its sub-formulae are examined

Example: EX (p EG q)

function verify (Formula f) : boolean; for i = 0 .. h do for all sub-formulae g of f of height i do check (g); end for all; end for; return s S0: f label(s)end verify;

(h is height of the syntax tree of f)

EX

EG

p

q i = 0

i = 1

i = 2

i = 3

i = 4

Page 26: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

26

function check (Formula f);switch

case f AP checkAP(f) // label states with their

atomic propositionscase f = g checkNegation(g) // check negationscase f = g h checkDisjunction(g, h) // check disjunction

case f = EX g checkEX(g)case f = EG g checkEG(g)case f = E[gUh] checkEU(g, h)

end switchend check;

Model Checking Algorithm (2/2)

17.01.2013

Page 27: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

2717.01.2013

checkAP

Function checkAP(g) marks a state s with the atomic proposition g if g holds in s

function checkAP(g)

for all s S do

if g label(s) then

label(s) := label(s) {g}

end labelStates;

g

g

f

f

h

g

g

g

g

f

f

h

Page 28: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

28

function check (Formula f);switch

case f AP checkAP(f) // label states with their

atomic propositionscase f = g checkNegation(g) // check negationscase f = g h checkDisjunction(g, h) // check disjunction

case f = EX g checkEX(g)case f = EG g checkEG(g)case f = E[gUh] checkEU(g, h)

end switchend check;

Model Checking Algorithm (2/2)

17.01.2013

Page 29: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

2917.01.2013

checkNegation

Function checkNegation(g) marks a state s with g if the sub-formula g does not hold in s

function checkNegation(g)

for all s S do

if g label(s) then

label(s) := label(s) { g}

end labelStates;

g

g ¬g

¬g

¬gg

g

f

f

h

g

g

g

g

f

f

h

Page 30: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

30

Model Checking Algorithm (2/2)

17.01.2013

function check (Formula f);switch

case f AP checkAP(f) // label states with their

atomic propositionscase f = g checkNegation(g) // check negationscase f = g h checkDisjunction(g, h) // check disjunction

case f = EX g checkEX(g)case f = EG g checkEG(g)case f = E[gUh] checkEU(g, h)

end switchend check;

Page 31: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

3117.01.2013

checkDisjunction

Function checkDisjunction(g, h) marks all states for which g or h holds

function checkDisjunction(g, h)

for all s S do

if g label(s) or h label(s) then

label(s) := label(s) {g h}

end labelStates;

g

g

g

g

f

f

h

f

f

g

g

f

f

h

f

fg, h g

g, h gh, h gh

Page 32: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

32

function check (Formula f);switch

case f AP checkAP(f) // label states with their

atomic propositionscase f = g checkNegation(g) // check negationscase f = g h checkDisjunction(g, h) // check disjunction

case f = EX g checkEX(g)case f = EG g checkEG(g)case f = E[gUh] checkEU(g, h)

end switchend check;

Model Checking Algorithm (2/2)

17.01.2013

Page 33: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

3317.01.2013

CheckEX

Marks all states for which EX(g) holds Is there a path for which g holds in the next state?

function checkEX(g) S1 := {s | g label(s)} for all (s1, s2) T, s2 S1 do

label(s1) := label(s1) {EX g}end checkEX;

Remark: T S x S is left-total S1 S2

S4 S3

S5

g

g

f

f

f

EX g

EX g

Page 34: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

34

function check (Formula f);switch

case f AP checkAP(f) // label states with their

atomic propositionscase f = g checkNegation(g) // check negationscase f = g h checkDisjunction(g, h) // check disjunction

case f = EX g checkEX(g)case f = EG g checkEG(g)case f = E[gUh] checkEU(g, h)

end switchend check;

Model Checking Algorithm (2/2)

17.01.2013

Page 35: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

3517.01.2013

Strongly Connected Component Given: directed Graph G Strongly Connected Component C:

Subgraph of G Any node of C is reachable by a (directed) path from any other

node in C Non trivial Strongly Connected Component

C is a Strongly Connected Component C has either more than one node or one node with a self

referencing edge

Page 36: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

3617.01.2013

Example

1 2

3 45

Non trivial SCC

Non trivial SCC

Trivial SCC

Page 37: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

3717.01.2013

CheckEG: Example

Marks all states for which EG (f) holds Is there a path for which f always holds?

S1f

S2f

S7g

S3f

S4f

S5f

S6f

Page 38: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

3817.01.2013

CheckEG: Example

M0 = {S3, S4, S5} M1 = {S3, S4, S5, S2} M2 = {S3, S4, S5, S2, S1}

S1f

S2f

S3f

S4f

S5f

S6f {f} {EG(f)}{f} {EG(f)}

{f} {EG(f)}

{f} {EG(f)}{f} {EG(f)}

Page 39: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

3917.01.2013

CheckEG

function checkEG(f)

S1 := {s | f label(s)}

SCC := {C | nontrivial SCC of S1}

S2 := c SCC{s | s C}

for all s S2 do label(s) := label(s) {EG f} end for all

while S2 do

choose s S2

S2 := S2 \ {s}

for all (s‘, s) T, s‘ S1 doif EG f label(s‘) then

label(s‘) := label(s‘) {EG f}

S2 := S2 {s‘}end if

end for allend while

end checkEG

Page 40: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

40

function check (Formula f);switch

case f AP checkAP(f) // label states with their

atomic propositionscase f = g checkNegation(g) // check negationscase f = g h checkDisjunction(g, h) // check disjunction

case f = EX g checkEX(g)case f = EG g checkEG(g)case f = E[gUh] checkEU(g, h)

end switchend check;

Model Checking Algorithm (2/2)

17.01.2013

Page 41: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

4117.01.2013

CheckEU

Marks all states for which E[fUg] holds CheckEU(f,g): is there a path where f holds until g holds

M0 = {S4, S5} M1 = {S4, S5, S2} M2 = {S4, S5, S2, S1}

S1

S2

S5

S4

S3

f

f

g

g

h

E[fUg]

E[fUg]

E[fUg]

Page 42: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn 5. Model Checking Modellbasierte Softwareentwicklung 1 17.01.2013

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

4217.01.2013

CheckEU

function CheckEU(f,g)

S1 := {s | g label(s)}

for all s S1 do label(s) := label(s) {E[fUg]} end for all

while S1

choose s S1

S1 := S1 \ {s}

for all (s‘, s) T do

if E[fUg] label(s‘) and f label(s‘) then

label(s‘) := label(s‘) {E[fUg]}

S1 := S1 {s‘}

end if

end for all

end while

end checkEU