Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen,...

82
Computergestützte Verifikation 5.7.2002

Transcript of Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen,...

Page 1: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Computergestützte Verifikation

5.7.2002

Page 2: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Testen: kann nur die Anwesenheit von Fehlernfeststellen, nicht ihre Abwesenheit. (E. Dijkstra)

Verifikation: Nachweis der Korrektheit (theoretisch)

Fähigkeit, subtile Fehler zu finden (praktisch)

Konstruktion: Erzeugen des Systems aus derSpezifikation

Systematische Entwicklungsprozesse: z.B. ISO 9000

Page 3: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Was ist Model Checking?

Erschöpfende Durchmusterung der Zustände einesSystems zur Prüfung einer vorgegebenen Eigenschaft

Grundproblem: Zustandsexplosion

Page 4: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Model Checking: Prinzipskizze

System

Spezifikation Formalisierung log. Formel

Abstraktion Modell

Model Checker+

Gegenbeispiel

-

Simulation

VerfeinerungFehler-beseitigung

Präzisierung

Überlauf

Page 5: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

1 Systeme

Zustand:Zusammenfassung aller Systemgrößen, die das weitereSystemverhalten wesentlich beeinflussen können

diskrete Systeme = alle Wertebereiche abzaehlbarkontinuierliche Systeme = alle Wertebereiche dichthybride Systeme = sowohl als auchreal-time Systeme = einzige kontinuierliche Größe ist die Zeitfinite state systems = Zustandsraum endlichinifinite state systems = Zustandsraum unendlich

Abstraktion

Page 6: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

2 Temporale Logik

G F = gilt unendlich oft

.......

F G = stabilisiert

..........

G ( F ) = führt zu

..........

Tautologien: F G F G F G F G F G

Page 7: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

s5

Der Berechnungsbaum

s1

s2

s3

s4

s6

s1s1

s4s2

s4

s2

s5

s3

s3

s5

s1

s1

s5

s5 s6

s6

s2 s4 s6 s4

Page 8: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

CTL* -Pfadquantoren

s

Wenn eine Pfadformel ist, soist E eine Zustandsformel

s erfüllt E gdw. es einen Pfad gibt, der bei s beginnt und

a,b a,d

c

s E F c s A X aTautologien: A E AE

Wenn eine Pfadformel ist, soist A eine Zustandsformel

s erfüllt A gdw. für alle Pfade die bei s beginnen, gilt:

Page 9: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

CTL* - Zusammenfassung

CTL*

LTL CTL

nur Pfad-formeln

Nur Zust.-formeln

Page 10: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Computation Tree Logic (CTL)

CTL = atomare Zustandsaussagen + Boolesche Operatoren + Paare [ Pfadquantor , Temporaloperator ]

AG (invariant) AF (irgendwann)

AX (in allen Nachf.) A( . U . ) (bis)

EG (mgl.weise immer) EF (möglich)

EX (in einem Nachf.) E( . U . ) (bis)

Page 11: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Progress und Fairness

p

a

bc

d

e

f

p p p

a

b

d e

F p gilt nicht !!?!?!?!

Page 12: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Model Checking für finite state systems

explizit: symbolisch:

explizite Konstruktion einesTransitionssystems,

das sich in bezug auf dieuntersuchte Eigenschaftäquivalent zum gegebenenverhält, aber in der Regelwesentlich kleiner ist.

Eigenschaft wird durchGraphsuche nach Zeugen/Gegenbeispielenverifiziert

Datenstruktur, die Mengen vonZuständen bzw. Pfadenbeschreibt,Operationen, die simultan dieNachfolger aller Zuständeberechnet

Eigenschaft wird durch Fixpunktoperationen auf dersymbolischen Datenstrukturberechnet

Page 13: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

3 Explizites Model Checking3.1 Tiefensuche

0

3

26

1

5

4 [v,v’] ist Vorwärtskante, falls [v,v’] in T*\T

[v,v’] ist Rückwärtskante, falls [v’,v] in T*

[v,v’] ist Querkante, sonst

[v,v’] ist Baumkante, falls [v,v’] in T

[v,v’] in Quer v.dfs > v’.dfs

[v,v’] in Vorwärts v.dfs v’.dfs

[v,v’] in Rückwärts v.dfs > v’.dfs

[v,v’] in Rückwärts v ~ v’0

6

52

4

1

3

Page 14: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Kriterium für Startknoten von SZK

0

3

26

1

5

4v.lowlink = MIN(v’.dfs | v’ von v erreichbar über beliebig vieleBaumkanten, gefolgt von max. eineranderen Kante [v,v’] mit v ~ v’)

0

1

1

3

4

44

Satz: v ist genau dann Startknoten einerSZK wenn v.lowlink = v.dfs

0

6

52

4

1

3

0

1 1

1

6

4

4

Page 15: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

3.2 LTL Model Checking

LTL-Eigenschaft Menge derjenigen Pfade, die erfüllen L

Transitionssystem Menge derjenigen Pfade, die in TS realisiert werden können

LTS

TS erfüllt genau dann, wenn jeder Pfad in TS erfüllt, d.h.

LTS L

Page 16: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Büchi-Automaten

= endliche Automaten mit einem für unendliche Sequenzengeeigneten Akzeptierungskriterium

B = [X, Z, Z0, , F]

X – Alphabet Z – ZustandsmengeZ0 – Anfangszustandsmenge : Z x X 2Z

F = {F1,...,Fn}, Fi Z Akzeptierungsmengen

unendliche Sequenz in X

B akzeptiert: es ex. unendliche Sequenz = z0 z1 z2 ....- z0 Z0, zi+1 d(zi,xi), - Für jedes Fi F: enthält unendlich oft Elemente aus Fi

LB

Page 17: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

3.3 CTL Model Checking

s

CheckAU(s,,): Suche Gegenbeispiel

L(s’,) = W

L(s’,) = F

L(s’,A( U )) = ?

L(s’,) = W

L(s’,) = FL(s’,) = F

L(s’,A( U ) = W

L(s’,A( U ) = F

Page 18: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Was hilft das?

s0

S

S1

S2 Sn

....

|| ( O(|S1|) +

.... + O(|Sn|))

O( |S2|) +

= O(||(|S1| +|S2|+...+ |Sn|))

= O((|| |TS|)

L(s,A/E( U )) ?

Page 19: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

3.4 Fairness-Eingabe: eine SZK C, Mengen Fschw und Fst von Fairnessannahmen-Ausgabe: eine SZM, die in C enthalten ist und alle Fairnessannahmen erfüllt (bzw. ø, falls keine ex.)

0. Fall: C trivial return ø 1. Fall: alle Fairnessannahmen erfüllt (Test ist leicht, siehe vorn) return C2. Fall: eine schwache Annahme verletzt (also: kein -Zst. in C) return ø3. Fall: eine starke Annahme (G F ) (G F ) ist verletzt (also: es gibt in C -Zst., aber keine -Zst.) Streiche alle -Zst. aus C, zerlege die entstehende Menge in SZK und rufe den Algorithmus rekursiv für alle Fragmente auf, bis ein Aufruf eine nichttriviale SZM liefert

Page 20: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

3.5 Symmetrie

Grundgedanke: symmetrisch strukturierte Systeme haben symmetrisches Verhalten

Quellen für Symmetrie:a) regelmäßig strukturierte Datentypenb) replizierte Komponenten im Gesamtsystem

Wenn Verhalten bei s bekannt und s’ symmetrisch zu s,braucht Verhalten bei s’ nicht mehr untersucht werden

technisch: Äquivalenzrelation; Quotienten-Transitionssystem

Page 21: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Beispiel 1

(i,i,1)

(r,i,1) (i,r,1)

(r,r,1)(c,i,0) (i,c,0)

(c,r,0) (r,c,0)

g1

= { Id, } ([x,y,z]) = [y,x,z]

Page 22: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Beispiel 1

(i,i,1)

(r,i,1)

(r,r,1)(c,i,0)

(c,r,0)

= { Id, } ([x,y,z]) = [y,x,z]

Page 23: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Symmetrie in DatentypenFall 1: Skalare Datentypen

-Menge D von Werten- nur = , in Guards - := (Zuweisung)- als Indexmenge von (einfachen) Arrays anderer Datentypen- Schleifen der Form FOR ALL x D DO ... - choose(x)- keine Konstanten

Seien x1 , ... , xn alle Variablen eines skalaren Datentyps D, eine Belegung dieser Variablen mit Werten, und eine Permutation auf D.

Setzen zu einer Symmetrie fort

Page 24: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Graphautomorphismen

Eine Permutation s: V V heißt Graphautomorphismus,falls für alle v,v’ aus V gilt:1. c(v) = c((v))2. Wenn [v,v’] E, so [(v),(v’)] E und c([v,v’]) = c([(v),(v’)])

Graphautomorphismen des Kommunikationsgraphen induzierenSymmetrien eines Komponentensystems

Hinter allen Symmetrieansätzen stecken Graphautomorphismen,z.B. auch hinter Datentypsymmetrie:

1

2

4

3=

=

=

=

1

2

4

3=

=

=

=

incr

incrincr

incr

Page 25: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Komplexität des Automorphismenproblems

eng verwandt: Graphisomorphie NP

NPV

P

?

?Ein Graph kann exponentiellviele Automorphismen haben

Page 26: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Konzept für Erzeugendensystem

U1U2

U3 U1 U2 U3 ... Un = {e}

Eindeutige Darstellung:Jedes Element g von G besitzt genau eine Darstellungder Formg = g1 o g2 o... o gn mit gi aus einem der vonUi in U(i-1) generierten Orbit

Page 27: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Automorphismenberechnung

41 8

62

ae

b f a

871

3

5

c

83

32

c c

R*D

R* R* R*D D

R* R* R*R* R*

poly

exp

83

32

c c

= #Ai #Bi ist selten meistens poly. Laufzeit!!!

Page 28: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

id id

g11 g12 g13 g14 g21 g22 g23 g31 g32

Orbitproblem

geg: s ges: canrep(s)

1. s1 := MIN{g1i-1(s), i = ...}2. s2 := MIN{g2i-1(s1), i = ...}

3. s3 := MIN{g3i-1(s2), i = ...}

........n. sn := MIN{g1i-1(s[n-1]), i = ...}

canrep(s) := sn

Page 29: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

3.6 Partial Order ReductionUnabhä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 30: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

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 31: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

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 32: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

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 33: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

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 konstruierten Pfad ausgeführt

Page 34: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

4. Symbolisches Model Checking4.1 BDD

YN YNYN Y N

0 4 8 12 16Elemente in Menge

Mengengröße

BDDGröße

Page 35: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Implementation von APPLY

YN

e

b

Y N

f

=

a

c

d

g h

i

af

bg

dY

Y

dY Y

eN

YN

YN Y

N

NN

NN N

A

eN Abg B

B

ch

eN Ni

NNNYNY Y

Y N A

Y A B

Ni Ach Aaf C

C

B A C

O ( |BDD1| |BDD2| )

Page 36: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Model Checking EU

geg: SAT, SATges: SATE(U

Z:= SAT do

ZZ (SAT SATEX Zuntil nothing changes SATE(U:=Z

Berechnen kleinsten Fixpunkt eines monoton wachsendenMengenoperators

Page 37: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Partitionierung der Übergangsrelation

Idee: T ist meistens Konjunktion Teilformeln

T1: x0’ x0 T2: x1’ (¬ x1 x0)T3: x2’ (¬ x2 (x0 x1))

Beispiel:

T T1 T2 T3

Partitionen kleiner als T, günstigenfalls auch in der Summe

mindestens: Eine Partition hängt normalerweise nicht von allen Variablen ab, ist also auf jeden Fall flacher als das BDD von T

Nutzt das?

Page 38: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

4.2 SAT-basiertes Model Checking

Ansatz: Übersetze das Model Checking Problem inein aussagenlogisches Erfüllbarkeitsproblem undlöse dieses.

Inhalt4.2.1 Ein effizienter SAT-Solver4.2.2 Noch ein effizienter SAT-Solver4.2.3 LTL Model Checking als SAT-Problem

Page 39: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

SAT-Solver für CNF

(Suche nach erfüllender Belegung)

Ausgangspunkt: Algorithmus von Davis-Putnam aus den 60ern

(xyz) (¬xy) (¬yz) (¬x¬y¬z)

(y) (¬yz) (¬y¬z) (yz) (¬yz)

x ¬x decide

(z) (¬z) yunit

propagationz

leere Klauselmenge= SAT!

pure literalpropagation

z

()leere Klausel = Konflikt Backtracking zur letzten offenen Entscheidung

Page 40: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Simple Rules

0 (y z)

y/1 z/0

x (0 z)

x/1

x (x z)

x/1

x (y 1)

x/1

x (y 0)

x/¬y

x (y y)

x/1

x (1 z)

x/z

Page 41: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Dilemma rule

12

(x/0) (x/1)

1 2

Ableitung 1 Ableitung 2

= Eine der Subst., falls andere zu Konflikt führt;= diejenigen Subst., die in beiden Zweigen gleich sind, sonst

Zusammenführen derZweige Vermeideredundante Arbeit inverschiedenen Zweigen

Page 42: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

SAT-basiertes Model Checking

Idee: Übersetze Model Checking Problem in ein Erfüllbarkeitsproblem

Ausgangspunkt:

boolesche Kodierung des Zustandsraums, analogzu BDD-basiertem Model Checking

Zustandsüberführungsrelation als boolesche Formel

T(x , x’), ebenfalls analog BDD-Methode

Page 43: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Beschränkte Semantik von LTL

Idee: beschreiben Gegenbeispiel der Länge k

1 k 1l

k

Ziel: Wenn beschränkter Pfad erfüllt, so auch jede unendlicheFortzsetzung

Lassopfade: beschr. Semantik = originale Semantikkreisfrei: k F i k: (i) k-i k G false

die anderen Operatoren so, wie man es sich denkt

Page 44: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Übersetzung der Semantik

I(x(0)) T(x(0),x(1)) ... T(x(k-1),x(k)) 0k

pik := p(x(i))

ik := i

k ik ¬ i

k := ¬ ik

G ik := false

F ik := j=i

k jk

X ik := falls i < k, dann i+1

k sonst false

U ik := j=i

k ( jk n=j

knk)

kreisfrei:

Page 45: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Prinzipskizze

Inf. StateModell

Formel

ABSTRAKTION Fin. StateModell

Fin. StateModel Checker

+

Gegenbeispiel

-

Analyse

Abstraktions-verfeinerung

-

Infinite State Model Checker

Page 46: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

5. Real-Time Systeme

aus ein hell kaputtklickklick

klickklick

Uhren c1, c2 Uhrenmenge C

lineare Constraints: ci k oder ci - cj k (k in Nat, in {=,<,>,,,} können boolesch verknüpft sein)

c1>3c1 3 c2>10000

Invarianten (gleiche Syntax)

c2 20000

Resets = Uhren, die auf 0 gesetzt werden

c1 c2

Page 47: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Pfade in Timed Automata

Problem: Zeitkonvergente Pfade “Zeno-Verhalten”

d1 d2 d3 d4 ....

1/2 1/4 1/8 1/16

Def: Nur die zeitdivergenten Pfade bilden die Semantik von Timed Automata

(Annahme analog zu Fairness)

Page 48: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Regionen

c2

c10

1

2

1 2 3

Page 49: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Regionengraphb) Zeitverlauf

{0} < ......... < {c2,c42,c200} {0,c2,c42,200} < ........{0,c2,c42,c200} < ....... {0} < {c2,c42,c200} < .......

Page 50: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Zonen

Problem des Regionengraphs: Zu viele Regionen neue Idee: größere Einheiten

Zone = Menge von Uhrenstellungen, die durch eine Konjunktionvon Uhrenconstraints (ci k oder ci - cj k, in {=,<,>,,,}) beschreibbar ist

Vereinfachende Annahmen: Constraints und Invarianten imTimed Automaton seien nur per Konjunktion verknüpft sind ihreserseits Zonen

Page 51: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

geometrische Veranschaulichung

0 c1

c2

c1>2

c2 – c1 0

c1 – c2 < 4

c2 > 1

c2 3

c1 4

Page 52: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Berechnung engerer Constraints

c1

c1 – c2 < 4

0 - c2 < -1c1 – 0 4

c1 – c2 < 3

c1 – 0 4+ 0 - c2 < -1 c1 – c2 < 3

Page 53: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

6 Abstraktion

geg: 2 Systeme C und A

Verbindung wird über eine Relation hergestellt

rot

gelb

grün

Gas

Bremse

Page 54: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Simulation

ist Simulationsrelation, wenn für alle c,a,c’:

Wenn c a und c c’ in C, so ex. ein a’ mit c’ a’ und a a’ in A

C

A

Page 55: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Simulation und Computation Tree

rot

gelb

grün

Gas

Bremse

Page 56: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Bewahrung von ACTL*

Fazit: Berechnungsbaum von C findet sich “als Teilbaum”des Berechnungsbaums von A wieder

ACTL* quantifiziert nuruniversell über Pfade

Satz: Wenn C A simuliert, so gilt jede ACTL*-Eigenschaft von A auch in C

Page 57: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Konstruktion von Abstraktionen

geg: Konkretes System C = [S,E], Menge A von abstrakten Zuständen, Relation vonC in Ages: E’, so daß Simulationsrelation zwischen C und A wird

Lösung: a a’ gdw. es gibt c,c’ mit c a und c’ a’ undc c’

“Existential Abstraction”

Page 58: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Bisimulation

Wenn sowohl als auch -1 Simulationsrelationen sind,heißen C und A bisimilar, und heißt Bisimulationsrelation

“bisimilar” ist schärfer als “A simuliert C und C simuliert A”!

Page 59: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Bisimulation und CTL(*)

Satz 1: Wenn A und C bisimilar sind, so erfüllen sie diegleichen CTL*-Formeln

Satz 2: Wenn A und C die gleichen CTL-Formeln erfüllen,so sind sie bisimilar

Das heißt: Wenn es eine CTL*-Formel gibt, die A und C unterscheidet, so gibt es bereits eine CTL-Formel.

Page 60: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

7 Abstraktionsverfeinerung7.1 allgemeine Verfeinerung

geg.: simulierende Abstraktionsrelation z.B. Zonengraph

ges.: mögl. grobe Verfeinerung, die zus. Bedingungen erfüllt. z.B. Bisimulation oder Vererbung von ACTL* in die andere Richtung oder Bewahrung weiterer Elementaraussagen

Mittel: Spaltung von abstrakten Zuständen

Page 61: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Propagierung

Spaltung eines abstrakten Zustandes kann weitereSpaltungen notwendig machen Propagation nachrückwärts...

... bis sich nix mehr ändert

Page 62: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

7.2 Gegenbeispielgesteuerte AV

dead end state = erreichbar von einem konkreten Zustand imersten abstrakten Zustandbad state = hat Nachfolger

Verfeinerung = trenne dead end und bad states

erfüllbare Pfadformel

nicht erfüllbare Pfadformel

Page 63: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

8. Softwareverifikation

1. komplexe Datentypen und Expressions

2. Pointer und dynamische Datenstrukturen

3. Prozeduren und Rekursion

4. Bibliotheken

Page 64: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

PredicateAbstraction

typedef struct cell{ int val; struct cell* next;} * list;

list partition(list *l, int v) { list curr, prev, newl, nextCurr;

curr = * l; prev = NULL; newl = NULL; while( curr != NULL) { nextCurr = curr -> next; if(curr -> val > v) { if(prev != NULL) { prev -> next = nextCurr; } if(curr == *l) { *l = nextCurr; } curr -> next = newl;L: newl = curr; } else { prev = curr; } curr = nextCurr; } return newl;}

void partition() {bool b1,b2,b3,b4;

b1 = unknown();b3 = unknown();b2 = true;b4 = unknown();skip;while(*) { assume(!b1); skip; if(*) { assume(b3) if(*) { assume(!b2); skip; } if(*) { skip; } skip;L: skip; } else { assume(!b3); b2 = b1; b4 = b3; } b1 = unknown(); b3 = unknown(); } assume(b1);}

b1: curr==NULLb2: prev==NULLb3: curr->val>vb4: prev->val>v

AG(@L curr!=NULL AND curr->val>v AND (prev->val<=v OR prev=NULL))AG(@L !b1 AND b2 AND (!b3 OR b4))

Page 65: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Abstract Interpretation

, und “kleinster Fixpunkt” = unendliche Vereinigung

= Rechnen auf vollständigem Verband

[M, , ] ist Verband, falls – beide Operationen komm., ass. - Absorption

ggf. neutrale Elemente

vollständig = abgeschlossen geg. unendliche Vereinigung

Verband induziert Halbordnung: x y gdw. x y = x (gdw. x y = y)

ist gr. untere Schranke, ist kl. obere Schranke von

Page 66: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

“passend” = Galois-Verbindung

Konkret: [C,,] Abstrakt: [A,,]

Abstraktionsfunktion : C AKonkretisierungsfunktion : A C

() ist Galoisverbindung, wenn (x) Y gdw. x (Y)

Insbesondere: z ((z)) (x := z, Y := (z) ) ((Z)) Z (x := (Z)), Y := Z )

– “präziseste Abstraktion” – “liberalste Interpretation”

Page 67: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Fixpunktberechnung

nutzt nur etwas, wenn sie in endlich vielen Schrittenterminiert

Variante 1: endlicher abstrakter Verband

Variante 2: Terminierung forcieren Widening

Page 68: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Shape-Analysis

Insert in Liste:

x : nichtleere Liste x

malloc(y) xy

y -> n = x xy

x = y xy

Coarsening xy

Page 69: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Slicing

1 read(n);2 i := 1;3 sum := 0;4 product := 1;5 while i <= n do6 sum := sum + 1;7 product := product * i;8 i := i + 1; end9 write(sum);10 write(product);

(product,10)

1 read(n);2 i := 1;

4 product := 1;5 while i <= n do

7 product := product * i;8 i := i + 1; end

10 write(product);

Page 70: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

9.1 Hybride Systeme

hybrid = kontinuierliche + diskrete Variablen

Hybrider Automat:

Einlaufen Auslaufen

h>= max

h <= minh’ [ -0.5,0.7]h’ [ -0.8,0.9]

(Der hier ist ein linearer Automat: x’ [c1,c2])

Page 71: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

9.2 Kompositionale Verifikation

System in Komponenten zerlegen

Komponenten verifizieren

Eigenschaft des Gesamtsystems schlußfolgern

Assume-Guarantee-Reasoning

Page 72: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Induktion

A gilt für System mit 0 oder 1 Komponente Model Checking

I) Wenn für System mit max. k Komponenten, so auch mit k+1 Komponenten

kompliziert. Meist manuell.z.B.:Versuche, 2 oder mehr Komponenten derart zu abstrahieren,daß sich Resultat wie 1 Komponente verhält

.... .....

Page 73: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Small Model Properties

Viele Logiken, auch temporale, haben Eigenschaftender Form

Wenn in irgendeinem Modellgilt, so gibt es auch ein Modell der Größe k, wo gilt.

k z.B. Anzahl der freien Variablen in

Parametrisiertes Problem kann auf endlich viele Model Checking Probleme reduziert werden

Page 74: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

9.4 Security-Protokolle

Betrachten nicht: Verschlüsselung/Entschlüsselung,

sondern vor allem: Verbindungsaufbau, Authentifizierung,...

“Perfekte Verschlüsselung”= Inhalt einer verschlüsselten Nachricht ist ohne Schlüssel nicht verfügbar

“Begrenzter Zufall”= Wenn eine Zufallszahl (“Nonce”) Bestandteil einer verschlüsselten Nachricht ist, gibt es keine Möglichkeit, den Wert dieser Zahl zu ermitteln, als die Nachricht zu entschlüsseln.

Beide Annahmen falsch, aber sinnvoll.

Page 75: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

9.5 Worst-Case-Execution-Time-Analyse

geg: Programm, Prozessor, Taktfrequenz

ges: max. Abarbeitungszeit T: jede Ausführung braucht garantiert nicht länger als T T möglichst klein

Probleme im Low-Level und im High-Level-Bereich

Page 76: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

System

Spezifikation Formalisierung log. Formel

Abstraktion Modell

Model Checker

Gegenbeispiel

-

Verfeinerung

Transitionssystem

guarded commandsnextstate

enabledverteilt

CTL*LTLCTLACTLPfad, ,

Computation Tree

SicherheitLebendigkeit

Fairnessexplizites MC:-Tiefensuche-CTL-Algorithmus-LTL-Algorithmus (Büchi-Automat)-Symmetrie-Partial Order Reduction-Fairness

symbolisches MC:-BDD-basiert-Fixpunktoperationen Widening/Narrowing-Fairness-SAT-basiert-SAT-Checker

symbolische BeschreibungenSAT-basiertes MC,Abstraktionsverfeinerungallgemein (Bismulation)

zenoTimed AutomataHybrid Automata

gegenbeispielgesteuert(dead end/bad states)

SimulationBisimulationAbstract InterpretationExistential AbstractionPredicate AbstractionPolyhedral Abstraction (Zonen)

Regionen SymmetrieSlicingShapes

HardwareProtokolleReal-TimeHybridSoftwareSecurity

kompositionaleVerifikationparametrisierteSystemeInduktionAssume/GuaranteeSmall Model Props

Page 77: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Model Checking aus Anwendersicht

-Wahl der richtigen Tools/Methoden für den konkreten Anwendungsfall

verteilt? (ja Partial Order Reduction explizites MC)komplexe Daten? (ja symbolisch, predicate abstraction oder abstract interpretation)Zeit? Vielleicht nur Timeouts (ja Fairnessannahme, sonst RT)kont. Anteile hybrid oder diskrete AbstraktionRegelmäßige Struktur Symmetrie oder parametrisiertVermeidung schwieriger Operationen (z.B. Mult. bei BDD)Bewußte, saubere Abstraktion

-Realistische Erwartungshaltung für Resultate (Laufzeit, Platz, Lösungsgüte)

- Krisenmanagement (z.B. Weitere Abstraktion)

Page 78: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Model Checking aus Theoriesicht

-Logiken und ihre Eigenschaften small model prop, Gegenbeispielstruktur, Entscheidbarkeit, Komplexität

-Automatentheorie

-Beziehungen zwischen Systemen Simulation/Bisimulation/Abstraktion

-Rechtfertigung von Algorithmen (Korrektheit/Vollständigkeit) z.B. Partial Order Reduction, Bounded Semantics,

Page 79: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Model Checking aus Entwicklersicht

-vielseitig verwendbare Datenstrukturen/Algorithmen - Graphen, SZK, Automorphismen - BDD und Fixpunktoperationen - Automaten - Constraints und Linaer Programming/Constraint Programming - Aussagenlogik und SAT-Checking

-Prinzipien zur Effizienzsteigerung - dynamisches Programmieren (z.B. im expliziten CTL-Alg.) - Lerntechniken, Heuristiken (z.B. beim SAT-Checking) - Das “Low Hanging Fruit” Prinzip - domainspezifische Annahmen - teile und herrsche (z.B. explizite Fairness) ....

Page 80: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Austausch mit anderen Disziplinen

Model Checking

Komplexitätstheorie(Rechtfertigung “unsauberer”Verfahren)

Prozeßalgebra(Simulation, Bisimulation,Partial Order Reduction, Fairness, Systembeschreibungssprachen)

Graphtheorie(SZK, Automorphismen)

Schaltkreisentwurf(BDD)

Lineare Optimierung/Constraint Programming(Lösung von Constraint-Problemen)

Static Analysis(Abstract Interpretation,Alias-Analyse, Shape-Analysis,Slicing)

Theorembeweisen(Software-Verifikation, Predicate Abstraction, Entscheidungsprobleme - SAT - Bitvektor - Pressburger, .... )

Logik(Syntax, Semantik, Expressivität, Entscheidbarkeit)

Automatentheorie(Komposition, Minimierung, Expressivität)

usw usf

Page 81: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:

Letzte Folie

Erfolg = solide theoretische Basis + Interdisziplinäres Herangehen + gesunder Prgmatismus

Page 82: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation: