![Page 1: Computergestützte Verifikation 5.7.2002. Testen: kann nur die Anwesenheit von Fehlern feststellen, nicht ihre Abwesenheit. (E. Dijkstra) Verifikation:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/1.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/2.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/3.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/4.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/5.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/6.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/7.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/8.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/9.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/10.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/11.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/12.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/13.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/14.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/15.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/16.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/17.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/18.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/19.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/20.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/21.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/22.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/23.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/24.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/25.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/26.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/27.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/28.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/29.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/30.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/31.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/32.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/33.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/34.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/35.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/36.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/37.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/38.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/39.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/40.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/41.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/42.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/43.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/44.jpg)
Ü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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/45.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/46.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/47.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/48.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/49.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/50.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/51.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/52.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/53.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/54.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/55.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/56.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/57.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/58.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/59.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/60.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/61.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/62.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/63.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/64.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/65.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/66.jpg)
“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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/67.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/68.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/69.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/70.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/71.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/72.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/73.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/74.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/75.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/76.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/77.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/78.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/79.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/80.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/81.jpg)
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:](https://reader037.vdocuments.pub/reader037/viewer/2022102813/55204d6449795902118b9f81/html5/thumbnails/82.jpg)