algorithmic software verification

20
Algorithmic Software Verification VII. Computation tree logic and bisimulations

Upload: wade-mcfarland

Post on 31-Dec-2015

22 views

Category:

Documents


1 download

DESCRIPTION

Algorithmic Software Verification. VII. Computation tree logic and bisimulations. Motivation. See McMillan’s thesis where he models a synchronous fair bus arbiter circuit. See table: # of states, BDD size and time Wants to check: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Algorithmic Software Verification

Algorithmic Software Verification

VII. Computation tree logic and bisimulations

Page 2: Algorithmic Software Verification

MotivationSee McMillan’s thesis where he models a synchronous

fair bus arbiter circuit.

See table: # of states, BDD size and time

Wants to check:

- No two acks are asserted simultaneously

- Every persistent request is eventually ack-ed

- Ack is not asserted without a request.

Not really safety/reachability properties:

so how do we state and check these specs?

Temporal logics!

Page 3: Algorithmic Software Verification

References

Symbolic model checking

An approach to the state explosion problem

Ken McMillan 1992

Page 4: Algorithmic Software Verification

Model: Kripke structures

Finite state machines with boolean variables

ignoring .

FSM = (X, {{true, false}} {x X} , Q, Q_in, , δ )

X finite set of variables/propositions Q finite set of states Q_in Q set of initial states

For each q Q, (q) is a function that maps each x in X to true or false δ Q x Q transition relation

Page 5: Algorithmic Software Verification

CTL: Syntax

Fix X the set of atomic propositions.

CTL(X) f,g ::= p | f | f g | f g |

EX f | EF f | E(f U g) | A(f U g)

Intuitively:

EX f --- some successor state satisfies f

AX f --- every successor state satisfies f

E(f U g) – along some path, f holds until g holds

A(f U g) – along every path, f holds until g holds

Page 6: Algorithmic Software Verification

CTL: SyntaxAdditional derived operators:

EF f --- there is some reachable state where f holds

(reachability) E(true U f)

AG f --- in every reachable state, f holds

(safety) E (true U f)

EG f --- there is some path along which f always holds.

A(true U f)

AF f --- along every path, f eventually holds

A(true U f)

Actually, EX, EG and EU are sufficient.

Page 7: Algorithmic Software Verification

CTL: Examples

- ack1 and ack2 are never asserted simultaneously

- Every request req is eventually acknowledged by

an ack.

- ack is not asserted without a request

Page 8: Algorithmic Software Verification

CTL: Examples

- ack1 and ack2 are never asserted simultaneously

AG( (ack1 ack2) )

- Every request req is eventually acknowledged by

an ack.

AG(req (AF ack))

- ack is not asserted without a request

E( req U ack)

Page 9: Algorithmic Software Verification

SemanticsFSM = (X, {{true, false}} {x X} , Q, Q_in, , δ )

With every f associate the set of states of a Kripke structure that satisfies f:

M, s |= p iff (s)(p) = true

M, s |= f g iff M,s |= f or M,s |= g

M, s |= f iff M,s | f

M, s |= EX f iff there is an s’ with δ(s,s’) and

s’ |= f

M, s |= EF f iff there is an s’ reachable from s

such that s’ |= f

Page 10: Algorithmic Software Verification

Semantics

M, s |= E (f U g) iff there is a path s=s1s2… from s

and a k such that s’ |= g and

for each i<k, si |= f

M, s’ |= A(f U g) iff for every path s=s1s2… from s

and a k such that sk |= g and

for every i<k, si |=f

Page 11: Algorithmic Software Verification

BisimulationsLet M =(X, Q, Q_in, , δ ) and M’ =(X’, Q’, Q_in’, ’, δ’ )

be two Kripke structures (can be same)

A bisimilation relation is a relation R QxQ’ such that:

- For every (q, q’) in R, (q) = ’(q’)

- If (q,q’) is in R, and q q1 then there is a q1’ in Q’

such that q1 q1’ in M’ and (q1,q1’) is in R.

- If (q,q’) is in R, and q’ q1’ then there is a q1 in Q

such that q q1 in M and (q1,q1’) is in R.

Fact: If R and R’ are bisimulation relations, then so is

R R’.

Page 12: Algorithmic Software Verification

Bisimulations

Let R* be the largest bisimulation relation:

R* = { R | R is a bisimulation relation}

If q is in Q and q’ is in Q’, then

q and q’ are bisimilar iff (q,q’) is in R*.

Denoted: q ~ q’

Two models are bisimilar if q_in ~ q_in’

Page 13: Algorithmic Software Verification

Bisimulations

Let M =(X, Q, q_in, , δ ) be a model.

The unfolding of M, unf(M), is a tree model:

Nodes: xq where x is in Q*

Edges: xq xqq’ iff q q’

Initial node: q_in

’(xq) = (q)

Claim:

- M and unf(M) are bisimilar

- For each xq, q ~ xq.

Page 14: Algorithmic Software Verification

CTL and bisimilarity

Lemma: Let f be a CTL formula.

Let q in Q and q’ in Q’ be two states such

that q ~ q’.

Then M,q |= f iff M,q’ |= f

Proof: By induction on structure of formulas.

Page 15: Algorithmic Software Verification

CTL and bisimilarity

CTL can distinguish between models that exhibit

the same sequential behaviors.

Hence CTL is a branching-time logic and not a linear-time logic.

What is the right notion of behavior of a model?

--- The set of strings exhibited by it

--- The tree unfolding of the model

Page 16: Algorithmic Software Verification

Model-checking CTL

Given M and f.

Compute the set of all states of M that satisfy f,

by induction on structure of f.

║p║ = states where p holds

║f g║ = ║f║ ║g ║

║ f ║ = complement of ║f ║

║EX f ║ = the set of states s that have a succ s’ in ║f ║

Page 17: Algorithmic Software Verification

Model-checking CTL

║E f U g ║ :

Take the set X =║g ║.

Repeat{

Add the set of states that satisfy f and have

a successor in X.

} till X reaches a fixpoint.

Page 18: Algorithmic Software Verification

Model-checking CTL

║EG f║ :

Let M’ be M restricted to states satisfying f.

A state s satisfies EG f iff

s is in M’ and there is a path from s to an

SCC of M’.

Page 19: Algorithmic Software Verification

Model-checking CTL

Model-checking CTL can be done in time O(|f|. |M|).

Number of subformulas of f is O(|f|)

║p║, ║f g║ , ║ f ║ and ║EX f ║ are easy.

║EX f U g║ -- Start with states T satisfying g; put them in ║EX f U g║ -- In each round, take a state in T, remove it from T,

and add predecessors of this state that satisfy f

and put them in T and ║EX f U g║. -- Each state is processed only once – linear time.

Page 20: Algorithmic Software Verification

Model-checking CTL

║EG f║

-- Construct M’.

-- Partition M’ into SCCs using Tarjan’s algorithm

-- Starting from states in nontrivial SCCs, work

backwards adding states that satisfy f.

-- Linear time.