1 computergestützte verifikation 14.5.2002. 2 model checking für finite state systems...

32
1 Computergestützte Verifikation 14.5.2002

Upload: anina-muench

Post on 05-Apr-2015

110 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

1

Computergestützte Verifikation

14.5.2002

Page 2: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

2

Model Checking für finite state systems

explizit: symbolisch:

3.1: Tiefensuche

3.2: LTL-Model Checking

3.3: CTL-Model Checking

3.5: Reduktion durch Symmetrie3.6: Partial Order Reduction

3.7: Tools

4.1: BDD-basiertes CTL-Model Checking

4.2: SAT-basiertes Model Checking

4.3: Tools

3.4: Fairness

Kapitel 3 Kapitel 4

Page 3: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

3

Zusammenfassung Symmetrie

Symmetrien können in speziellen Datentypen oder als Automorphismen geeigneter Graphen gefunden werden

Datentypsymmetrie: - nur einige spezielle Symmetriegruppen, + Erkennung der Symmetrien trivial + Orbit-Problem effizient lösbar

Automorphismen: + viele Symmetriegruppen ( mehr Reduktion) - Erkennung der Symmetrien aufwendig, obwohl meist doch polynomiell - Orbit-Problem langsam oder approximativ

Page 4: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

4

3.6 Partial Order Reduction

Page 5: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

5

Verteilte SystemeUnabhängigkeitsrelation I zwischen Aktionen:

[a,b] in I gdw. keine der beiden Aktionen kann die Enabling-Bedingung der anderen ändern, und Resultat der Hinterein-anderausführung von a und b ist unabhängig von der Reihenfolge

s

s1

s2

s’

z.B. [g,g’] in I gdw. vorkommende Variablen disjunkt

Unabhängige Aktionen tragen wesentlich zur Zustandsraumexplosion bei.

Page 6: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

6

Zustandsexplosion in verteilten Systemen

Prozess A Prozess B Prozess C

internalinternalsync

internalinternalsync

internalinternalsync

1234

111211 121 112

311 221 212

444

131 122 113321 231 222 132 213312 123

322 331 232 313 133 223332 323 233

333

Page 7: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

7

Ansatz

bekämpfe Zustandsraumexplosion durch Unabhängigkeit

unabhängige Aktionen können in beliebiger Reihenfolgestattfinden

Reihenfolge ist oft unerheblich für Eigenschaft

reduziere, wo möglich, die Anzahl der Reihenfolgen, in denen unabhängige Aktionen ausgeführt werden

Page 8: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

8

Geschichte

1988 Valmari stubborn sets

1991 Godefroid persistence sets

1993 Peled ample sets

unabhängige Ansätze

stubborn sets: Prinzipien am meisten “pushed to the limit”

ample sets: pragmatischer für Implementation

hier: Amalgam aus stubborn und ample sets

Page 9: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

9

Ample sets

111211 121 112

311 221 212

444

131 122 113321 231 222 132 213312 123

322 331 232 313 133 223332 323 233

333

Sei s Zustand. ample(s) ist eine (wenn möglich) nichtleere Teilmenge der Aktionen, die bei s enabled sind

Reduziertes Transitionssystem: verfolge bei s nur die Aktionen in ample(s)

Page 10: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

10

Reduziertes Transitionssystem

111121

444

122222

223323333

Page 11: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

11

Weiteres Vorgehen

1. Studieren Prinzipien, die Ample sets erfüllen müssen, um LTL-Eigenschaften zu bewahren

2. Implementationsfragen

3. Wie es bei CTL(*) aussieht

4. Varianten für einfache Eigenschaftsklassen

Page 12: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

12

Prinzip # 1: Unabhängigkeit

Alle Aktionen, die in s enabled sind und nicht in ample(s), sind von jeder Aktion in ample(s) unabhängig

“Stattfinden der ausgeschlossenen Aktionen wird auf Nachfolgezustände vertröstet”

Für jeden bei s beginnenden Pfad des originalen Systems:

Keine Aktion, die von einer Aktion in ample(s) abhängig ist,kommt vor einer Aktion aus ample(s) vor.

Page 13: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

13

Erstes Prinzip und Deadlocks

Deadlock = Zustand, in dem keine Aktion stattfinden kann

Satz: Wenn ein red. Transitionssystem alle Initialzustände und,zu jedem s, alle Nachfolger aus ample(s) enthält, undample(s) Prinzip # 1 genügt, dann sind im red. System alleDeadlocks des originalen Systems enthalten.

s dSei w length(w) = min

1. Fall: in w kommt ein a aus ample(s) vors s1 s2 dw1 a w2

s s1’ s2 dw1a w2s1’ im red. TS,näher an d!

2. Fall: in w kommt kein a aus ample(s) vor

s dwa a d kein

Deadlock!

Page 14: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

14

Erstes Prinzip und unendliche PfadeSatz: Wenn das originale TS einen unendlichen Pfad enthält,so auch das reduzierte.

s w

1. Fall: in w kommt ein a aus ample(s) vors s1 s2w1 a w2

2. Fall: in w kommt kein a aus ample(s) vors w

a

s1’ s2w1

aw2

Wenn bei s unendl. Pfad ausführbar ist, so gibt es im red. TS einen Nachfolger von s, bei dem ein unendl. Pfad ausführbar ist. Rest: Induktion

s1’w

Page 15: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

15

Idee der weiteren Prinzipien

Voriger Satz: Wenn unendl. Pfad im originalen System, so unendl. Pfad im reduzierten System

Zukunft: Wenn unendl. Pfad mit Eigenschaft Y im orig. TS, so unendl. Pfad mit Eigenschaft Y im red. TS

Beweis des vorigen Satzes liefert Zuordnung eines Pfades imred. System zu einem Pfad im originalen System

Wir sorgen jetzt dafür, daß ein “passender” Pfad zugeordnetwird.

Page 16: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

16

Vorbereitung auf Prinzip # 2

Ziel: In dem zugeordneten Pfad finden “wichtige” Aktionenin derselben Reihenfolge statt wie im originalen Pfad

Sei LTL-Formel. Aktion a heißt unsichtbar für , wenna in keinem Zustand den Wahrheitswert irgendeiner in vorkommenden elementaren Zustandsaussage ändern kann.

wichtig = sichtbar

einzige Bedeutung unsichtbarer Aktionen: An- oder Abwesenheit entscheidet darüber, wie lange ein und dieselbe Kombination von Wahrheitswerten andauert

SStttooooteeerrrnnn

Page 17: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

17

Stotteräquivalenz

Sei X Alphabet und w Wort (endlich oder unendlich)

Die Stotterklasse von w enthält w und ist abgeschlossen bzgl.:

-mit waw’ ist auch waaw’ enthalten-mit waaw’ ist auch waw’ enthalten

Satz:Mit dem üblichen Alphabet (Vektoren von Wahrheitswerten)sind alle LTL-Eigenschaften, die kein X benutzen,stotterinvariant. LTL-X

Eine Menge von Wörtern ist stotterinvariant, wenn sie mit wimmer die ganze Stotterklasse von w enthält.

Page 18: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

18

Stottern in verteilten Systemen

Stottern wird induziert durch nebenläufige unbeteiligteKomponenten

relevante Eigenschaften verteilter Systeme sind immer stotterinvariant

Einschränkung auf LTL-X nicht tragisch (partial order reduction zielt eh nur auf verteilte Systeme)

Page 19: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

19

Prinzip # 2: Sichtbarkeitample(s) enthält entweder keine einzige sichtbare Aktion oderalle Aktionen, die enabled sind (sichtbar wie unsichtbar)

1. Fall: in w kommt ein a aus ample(s) vors s1 s2w1 a w2

s1’ s2 dw1a

w2

a unsichtbar oderw1 leer

2. Fall: in w kommt kein a aus ample(s) vor

s was1’

w

a unsichtbar

diejenigen sichtbaren Aktionen, die aus dem Originalpfad in den reduzierten Pfad übernommen werden, bleiben in der gleichen Reihenfolge

Page 20: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

20

Vorbereitung auf Prinzip # 3

Problem: Mit Prinzipien 1 und 2 kann das Vorkommensichtbarer Aktionen auf ewig aufgeschoben werden.

Aus einem Pfad, der a U b im Originalsystem erfüllt, kann im red. System ein Pfad werden, der G a erfüllt.

müssen ewiges Aufschieben verhindern

Page 21: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

21

Prinzip # 3: Nichtignorierung

Jeder Kreis im reduzierten Transitionssystem enthält einenZustand s, wo ample(s) alle Aktionen enthält, die in senabled sind

Wirkung: in einem solchen Zustand kann Fall 1 derPfadargumentation angewendet werden.

Jede Aktion des Originalpfades wird irgendwann\ auch im konstruieerten Pfad ausgeführt

Page 22: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

22

Prinzipien # 1-3 bewahren LTL-X

Satz: Ein TS erfüllt eine LTL-X-Formel gdw. ein beliebiges reduziertes TS, das Prinzipien 1-3 befolgt, die Formel erfüllt.

Bew.: Wenn das Originalsystem einen unendlichen Gegenbsp.-pfad enthält, so

enthält das reduzierte System einen unendlichen Pfad (P # 1),

in dem alle sichtbaren Aktionen des Originalpfades irgendwann vorkommen (P # 1,3),

und zwar in der gleichen Reihenfolge (P # 1,2),

und ansonsten nur unsichtbare Aktionen (P # 1,2)

Dieser Pfad ist ebenfalls Gegenbsp. (Wahl der sichtbarenAktionen, Stottoerinvarianz)

Page 23: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

23

Implementation von Prinzip # 2

Einfach: Jede Aktion, die Variablen schreibt, die in einerelementaren Zustandsaussage vorkommen, ist sichtbar.

Komplizierter (Bsp): = ‘pc = 17’g = ‘pc = 23 bla pc := 42’, ....

Wichtig: Umsetzung darf nicht zu viel Zeit kosten.

kann unsichtbar bleiben,obwohl es pc schreibt

Page 24: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

24

Implementation von Prinzip # 3

Satz: Jeder Kreis enthält eine RückwärtskanteSei s1 ... sn Kreis, o,B.d.A s1 der zuerst bei Tiefensuchebetretene Zustand.

sn von s1 erreichbar sn Baumnachfolger von s1

[sn,s1] ist Rückwärtskante

Implementation:-Benutze zunächst ample set nach Prinzipien 1 und 2-Markiere alle Zielknoten von Rückwärtskanten-Bei Backtracking zu einem markierten Knoten, ersetze ample(s) durch alle Aktionen, die enabled sind.

Die nachträgliche Änderung stellt keinen ernsten Eingriff dar

Page 25: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

25

Implementation von Prinzip # 1

Für jeden bei s beginnenden Pfad des originalen Systems:

Keine Aktion, die von einer Aktion in ample(s) abhängig ist,kommt vor einer Aktion aus ample(s) vor.

Problem:

a

ac

c

b

Eine von a unabhängige Aktion ckönnte eine von a abhänige Aktionaktivieren.

jetzt: ample*(s) – sowohl Aktionen, dieenabled sind, als auch welche, diedisabled sind. ample(s) = ample*(s) en(s)

Page 26: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

26

Eingeschränkte Guardbedingungen

z.B. pc = 17 mailbox ....

g heißt enabled in s bzgl. U Var (en(g,s,U) ), falls eins’ ex. mit s’(v) = s(v) für v in U, und g enabled in s’ ( en(g,s’) )

z.B. en(‘pc = 17 mailbox ....’, (17, ),{ pc}) ¬en(‘pc = 17 mailbox ....’, (17, ), {mailbox})

¬ en(g,s,U) ¬ en(g,s)

Page 27: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

27

Write-Up-Mengen

geg. guarded command g, ¬ en(g,s,U)

wrup(g,U) : Eine Menge von guarded commands mit:Wenn s’ von s ohne Verwendung von commands aus wrup(g,U)erreicht wird, so ¬ en(g,s’,U)

Bsp: g = ‘pc = 17 mailbox ....’ wrup(g,{pc}) = { g | g ‘ ..... ....,pc:= 17,....’}

Bsp: g = ‘x > 27 .... ....’

wrup(g,{x}) = {g | g kann Wert von x erhöhen}

notfalls: wrup(g,U) := {g | g schreibt Variablen in U}

Page 28: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

28

Implementation von Prinzip # 1Wenn ample*(s) folgende Bedingungen erfüllt:

(E) Wenn g in ample*(s) und en(g,s), so sind alle von g abhängigen Aktionen in ample*(s)(D) Wenn g in ample*(s) und ¬en(g,s), so sind für ein U mit ¬en(g,s,U) alle Aktionen aus wrup(g,U) in ample*(s)

dann erfüllt ample(s) := ample*(s) en(s) Prinzip # 1:

Wenn g in ample(s), so sind alle abhängigen Aktionen in ample*(s) (E)Wenn g in ample*(s) und disabled, so können Aktionenaußerhalb ample*(s) g nicht aktivieren.

Algorithmus: Ersetze “sind drin” durch “müssen auch rein”,löse Nichtdeterminismus bei der Wahl von U irgendwie auf.

Page 29: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

29

Implementation von Prinzip # 1

genauer: “muß auch rein” bildet gerichteten Graph zwischenAktionen.

ample(s) := die aktivierten Aktionen aus der ersten gefundenenSZK, die aktivierte Aktionen enthält.

ample(s) wird durch Tiefensuche in diesem Graph bestimmt

Der Abschluß dieser SZK bzgl. “muß auch rein” enthält weitereAktionen, aber keine weiteren aktivierten Aktionen.

Page 30: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

30

Übung 1

Bestimme eine größtmögliche Unabhängigkeitsrelationzwischen folgenden guarded commands (alle Variablensind vom Typ Nat).

g1: x > 0 x := x – 1, z := z + 1, y := y + 1g2: y > 0 y := y – 1, u := u + 1g3: u > 1 v > 0 u := u – 1, v := v – 1, x := x + 1g4: z > 0 z := z – 1, v := v + 1g5: y > 0 y := y – 1, z := z + 1

Page 31: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

31

Übung 2

Welche Aussagen sind für diese guarded commandsim Zustand s = (x = 0, y = 0, z = 1, u = 1, v = 0) richtig?

g1: x > 0 x := x – 1, z := z + 1, y := y + 1g2: y > 0 y := y – 1, u := u + 1g3: u > 1 v > 0 u := u – 1, v := v – 1, x := x + 1g4: z > 0 z := z – 1, u := u + 1g5: y > 0 y := y – 1, z := z + 1

a) en(g3, s, {u})b) en(g3,s,{v})c) en(g3,s,{u,v})d) en(g3,s)

e) en(g4,s)f ) en(g4,s,{z})g) en(g1,s)h) en(g1,s,{y})

Page 32: 1 Computergestützte Verifikation 14.5.2002. 2 Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:

32

Übung 3

Bestimme für diese guarded commands folgende Mengen!

g1: x > 0 x := x – 1, z := z + 1, y := y + 1g2: y > 0 y := y – 1, u := u + 1g3: u > 1 v > 0 u := u – 1, v := v – 1, x := x + 1g4: z > 0 z := z – 1, u := u + 1g5: y > 0 y := y – 1, z := z + 1

a) wrup(g3,{u})b) wrup(g3, {v})c) wrup(g3,{u,v})

d) wrup(g4,{z})e) wrup(g4,s,{x,y,z,u,v})