software model checking: theory and practice

21
Software Model Checking: Theory and Practice Lecture: Specification Checking - LTL Model Checking Copyright 2004, Matt Dwyer, John Hatcliff, and Robby. The syllabus and all lectures for this course are copyrighted materials and may not be used in other course settings outside of Kansas State University and the University of Nebraska in their current form or modified form without the express written permission of one of the copyright holders. During this course, students are prohibited from selling notes to or being paid for taking notes by any person or commercial firm without the express written permission of one of the copyright holders.

Upload: others

Post on 02-Nov-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Software Model Checking: Theory and Practice

Software Model Checking: Theory and Practice

Lecture: Specification Checking -LTL Model Checking

Copyright 2004, Matt Dwyer, John Hatcliff, and Robby. The syllabus and all lectures for this course are copyrighted materials and may not be used in other course settings outside of Kansas State University and the University of Nebraska in their current form or modified form without the express written permission of one of the copyright holders. During this course, students are prohibited from selling notes to or being paid for taking notes by any person or commercial firm without the express written permission of one of the copyright holders.

Page 2: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 2

Objectives

To understand Büchi automata and their relationship to LTLTo understand how Büchi acceptance search enables a general LTL model checking algorithm

Page 3: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 3

Safety Checking

For safety properties we automated the “instrumentation” of checking for acceptance of a regular expression for a violation

This involved modifying the DFS algorithm to Calculate states of the property automatonCheck to see whether an accept state is reached

We will apply the same basic strategy for LTL

Page 4: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 4

Property

LTL Model Checking

From the semanticsAn LTL formula defines a set of (accepting) traces

We canCheck for trace containment

System

Page 5: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 5

LTL Model Checking

From the semanticsThe negation of an LTL formula defines a set of (violating) traces

We canCheck for non-empty language intersection

System

Negation of Property

Page 6: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 6

Emptiness Check

LTL is closed under complementL(φ) = L(¬φ)

where the language of a formula defines a set of infinite traces

A Büchi automaton accepts a set of infinite traces

Page 7: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 7

Büchi AutomataA Büchi automaton is a quadruple (R,I,δ,F)

S is a set of statesI ⊆ R is a set of initial statesδ : R → P(R) is a transition relationF is a set of accepting states

Unlike FSAs, Büchi automata are always non-deterministic

set of initial statesmultiple transitions from a state

Page 8: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 8

Büchi Automata

Automaton states are labeled with atomic propositions of the formulaλ : R → P(A)

• where A are the set of observables for the program

• λ(r) is the set of observables for a property state

Note that the meaning of the automata is defined via this mapping• plays the role of alphabet in FSA

Page 9: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 9

Example : Büchi Automaton

cruise off true

S = {r0, r1, r2}I = {r0}δ = {(r0,{r0,r1}),(r1,{r2}),(r2,{r2})}F = {r2}λ = {(r0,cruire}),(r1,{off}),(r2,{})}

r0 r2r1

Page 10: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 10

Büchi Automata SemanticsAn infinite trace

σ = r0, r1, …is accepted by a Büchi automaton iff

r0 ∈ I starting in an initial state

∀i≥0 : ri+1∈ δ(ri) trace corresponds to transition relation

∀i≥0 ∃j≥i : rj ∈ F can reach a final state from end of all prefixes

Page 11: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 11

Büchi Trace ContainmentAssume each system state (S) is labeled (Λ)

with set of observables (A)A Büchi automaton accepts a system trace

s0, s1, …

∃r0 ∈ I : λ(r0)∈ Λ(s0)

∀i≥0 ∃ri+1∈ δ(ri) : λ(ri+1)∈ Λ(si+1)

∀i≥0 ∃j≥i : rj ∈ F

Page 12: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 12

Example : Büchi Automaton

cruise off true

cruise cruise off off accel accel cruise …cruise cruise accel cruise off accel …

ro r1 r2

Page 13: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 13

LTL and Büchi Automata

Every LTL formula has a Büchi automaton that accepts its language (not vice versa)

L(φ) ⊆ L(BA)L(φ) ∩ L(BA) ≠∅

Büchi automata cannot be determinizedi.e., there is no canonical deterministic automaton that accepts the same language

Büchi automata are closed under the standard set operations

Page 14: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 14

Example : Büchi Automaton

cruise off true

What LTL property does this correspond to?

ro r1 r2

cruise U off

Page 15: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 15

Example : Büchi Automaton

true off true

What LTL property does this correspond to?

ro r1 r2

◊ off

Page 16: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 16

LTL Model Checking

Apply same strategy as beforeGenerate Büchi automaton for the negationof the LTL propertyExplore state space of the product of the automaton and the systemCheck for emptiness

Violation are indicated by accepting tracesLook for cycles containing an accept stateUse nested depth-first search

Page 17: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 17

errors := {}seen := {}for each r ∈ I do

seen := seen U {(s0 , r)}stack := [(s0 , r)]DFS((s0 , r))pop(stack)

LTL Model Checking

For each initial property state

initialize DFS data structures

perform search of initial product state

Page 18: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 18

DFS ((s,r))workSet := enabled (s )for each α ∈ workSet do

s’ := α (s )for each r’ ∈ δ(r) do

if λ(r’ ) ∉ Λ(s’) thenif (s’ ,r’ ) ∉ seen then

seen := seen ∪ {(s’ ,r’ )}push (stack, (s’ ,r’ ))DFS((s’,r’))if r’ ∈ A then

seen’ := {(s’ ,r’)}stack’ := [(s’ ,r’)]NDFS((s’,r’),(s’ ,r’))pop(stack’ )

pop(stack)end DFS

LTL Model Checking

For each transition

check if state labels match

Only launch a cycle search from property accept states

Page 19: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 19

NDFS ((s,r), seed)workSet := enabled (s )for each α ∈ workSet do

s’ := α (s )for each r’ ∈ δ(r) do

if λ(r’ ) ∉ Λ(s’) thenif (s’ ,r’) = ∫eed then

errors := errors U {(stack,stack’)}continue

if (s’,r’) ∉ seen’ thenseen’ := seen’ ∪ {(s’,r’)}push (stack’, (s’,r’))NDFS((s’,r’), seed)pop(stack’ )

end NDFS

LTL Model Checking

For each transition

check if state labels match

Same logic as for

progress checking

Page 20: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 20

Fairness

Liveness states that the system should eventually do something

Often times in real systems threads rely on a schedule to give them a chance to runAbstracting scheduling to non-deterministic choice introduces severe approximation

There are many forms of fairnessThe intuition is that we restrict the systems behaviors to only those on which each process gets a chance to execute

Page 21: Software Model Checking: Theory and Practice

Property Checking : LTL Model Checking 21

Fairness in LTL

LTL is expressive enough to state fairness properties directly

[]<> (Phil1.eating || Phil2.eating)([]<>Phil1.eating) && ([]<>Phil2.eating)

Fairness formula can be used to filter the behaviors that are checked as follows

Fairness -> PropertyIf not Fairness then whole thing is trueProperty checked only when Fairness holds