Computergest ützte Verifikation

82
Computergestützte Verifikation 5.7.2002

description

Computergest ützte Verifikation. 5.7.2002. Korrektheit. Testen : kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit . (E. Dijkstra). Systematische Entwicklungsprozesse: z.B. ISO 9000. Konstruktion : Erzeugen des Systems aus der Spezifikation. - PowerPoint PPT Presentation

Transcript of Computergest ützte Verifikation

Page 1: Computergest ützte Verifikation

Computergestützte Verifikation

5.7.2002

Page 2: Computergest ützte 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

Was ist Model Checking?

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

Grundproblem: Zustandsexplosion

Page 4: Computergest ützte 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

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

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

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

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

CTL* - Zusammenfassung

CTL*

LTL CTL

nur Pfad-formeln

Nur Zust.-formeln

Page 10: Computergest ützte 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Komplexität des Automorphismenproblems

eng verwandt: Graphisomorphie NP

NPV

P

?

?Ein Graph kann exponentiellviele Automorphismen haben

Page 26: Computergest ützte 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ü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

Prinzipskizze

Inf. StateModell

Formel

ABSTRAKTION Fin. StateModell

Fin. StateModel Checker

+

Gegenbeispiel

-

Analyse

Abstraktions-verfeinerung

-

Infinite State Model Checker

Page 46: Computergest ützte 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

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

Regionen

c2

c10

1

2

1 2 3

Page 49: Computergest ützte Verifikation

Regionengraphb) Zeitverlauf

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

Page 50: Computergest ützte 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

geometrische Veranschaulichung

0 c1

c2

c1>2

c2 – c1 0

c1 – c2 < 4

c2 > 1

c2 3

c1 4

Page 52: Computergest ützte 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

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

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

Simulation und Computation Tree

rot

gelb

grün

Gas

Bremse

Page 56: Computergest ützte 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

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

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

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

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

Propagierung

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

... bis sich nix mehr ändert

Page 62: Computergest ützte 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

8. Softwareverifikation

1. komplexe Datentypen und Expressions

2. Pointer und dynamische Datenstrukturen

3. Prozeduren und Rekursion

4. Bibliotheken

Page 64: Computergest ützte 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

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

“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

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

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

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

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

9.2 Kompositionale Verifikation

System in Komponenten zerlegen

Komponenten verifizieren

Eigenschaft des Gesamtsystems schlußfolgern

Assume-Guarantee-Reasoning

Page 72: Computergest ützte 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

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

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

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

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

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

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

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

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

Letzte Folie

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

Page 82: Computergest ützte Verifikation