Einführung in die Theoretische Informatik Zusammenfassung der

Werbung
Zusammenfassung
Zusammenfassung der letzten LVA
Definition
Eine Registermaschine (RM) R ist ein Paar R = ((xi )16i6n , P) sodass
Einführung in die Theoretische Informatik
Christina Kohl
Alexander Maringele
Georg Moser
Michael Schaper
Manuel Schneckenreither
1
(xi )16i6n Sequenz von Registern xi , die natürliche Zahlen beinhalten
2
P ein Programm
Befehle:
Institut für Informatik @ UIBK
Wintersemester 2015
1
xi := xi + 1
2
xi := xi − 1
3
while xi 6= 0 do P1 end
Satz
Jede partielle Funktion f : Nk → N, die berechenbar auf einer RM ist, ist
auf einer TM berechenbar und umgekehrt
GM (IFI)
Übersicht
Einführung in die Theoretische Informatik
194/1
Prinzipien der Analyse von Programmen
Inhalte der Lehrveranstaltung
Wozu Programmverifikation
Einführung in die Logik
• Ariane-5
Syntax & Semantik der Aussagenlogik, Formales Beweisen, Konjunktive
und Disjunktive Normalformen
• Fehler in der
Datenkonvertierung
Einführung in die Algebra
Boolesche Algebra, Universelle Algebra, Logische Schaltkreise
• Intel Pentium
FDIV-Bug
• Falsche
Berechnungen
• USD 370
• USD 475
Millionen
Millionen
Einführung in die Theorie der Formalen Sprachen
Grammatiken und Formale Sprachen, Reguläre Sprachen, Kontextfreie
Sprachen
• Gepäckverteilung
(Denver)
Einführung in die Berechenbarkeitstheorie
• Desaster
Algorithmisch unlösbare Probleme, Turing Maschinen, Registermaschinen
• USD 560
Millionen
Einführung in die Programmverifikation
• Blue Screen of
Death
• ziemlich lästig
Prinzipien der Analyse von Programmen, Verifikation nach Hoare
GM (IFI)
Einführung in die Theoretische Informatik
195/1
GM (IFI)
Einführung in die Theoretische Informatik
196/1
Prinzipien der Analyse von Programmen
Verifikation nach Hoare
Prinzipien der Analyse von Programmen
Verifikation nach Hoare
Prädikatenlogik (informell)
Begutachtung
• Der Code wird von ähnlich qualifizierten Programmierern kontrolliert
• Die Prädikatenlogik ist eine Logik, deren Ausdruckskraft über die
der Aussagenlogik weit hinausgeht
• subtile Fehler werden leicht übersehen
• Die wichtigste Erweiterung sind Prädikatensymbole
Testen
• Prädikatensymbole erlauben es uns, über Elemente einer Menge
Aussagen zu treffen
• dynamische Technik, bei der das Programm ausgeführt wird
• Wie wird die richtige Testumgebung geschaffen?
Sprache einer Prädikatenlogik
Im Allgemeinen wird eine Prädikatenlogik durch eine Sprache beschrieben,
diese Sprache enthält:
Formal Methoden
• erlauben die frühe Integration der Verifikation in die
Softwareentwicklung
• sind effizienter als andere Methoden (höhere Erkennensrate von
Fehlern)
1
Funktionssymbole und Prädikatensymbole
2
Variablen
3
• sind (im Besonderen wenn automatisierbar) schneller anwendbar
GM (IFI)
Einführung in die Theoretische Informatik
= , ¬, ∧, ∨, →,
|{z}
| {z }
Gleichheit
197/1
Verifikation nach Hoare
Junktoren
GM (IFI)
∀, ∃
|{z}
Quantoren
Einführung in die Theoretische Informatik
Verifikation nach Hoare
Zusicherungen
Beispiel
• Sei 7 eine Konstante und ist prim ein Prädikatensymbol
Definition
• Wir schreiben ist prim(7), um auszudrücken, dass 7 eine Primzahl
Wir definieren Zusicherungen induktiv:
Definition
1
Atome sind Zusicherungen
2
Wenn A und B Zusicherungen sind, dann sind auch die folgenden
Ausdrücke, Zusicherungen:
Ein Ausdruck der mit Hilfe von Variablen und Funktionssymbolen
gebildet wird, heißt Term
¬A (A ∧ B)
(A ∨ B)
(A → B)
Konvention
Definition
1
Sei P ein Prädikatensymbol
2
Seien t1 , . . . , tn Terme
Zusicherungen werden Formeln genannt
Definition
Dann nennen wir die Ausdrücke P(t1 , . . . , tn ) und t1 = t2 Atome oder
atomare Formel
GM (IFI)
198/1
Einführung in die Theoretische Informatik
Interpretationen I werden verwendet, um den Ausdrücken der
Prädikatenlogik eine Bedeutung zu geben
199/1
GM (IFI)
Einführung in die Theoretische Informatik
200/1
Verifikation nach Hoare
Verifikation nach Hoare
Definition
Wahrheit einer Zusicherung
Sei I eine Interpretation und F eine Formel, wir schreiben I |= F , wenn
die Formel F in der Interpretation I wahr ist
Beispiel
• Wir betrachten die Konstante 7 und das Prädikat ist prim
• Interpretation I legt fest, dass 7 als die Zahl sieben zu verstehen ist
• I legt fest, dass das Atom ist prim(n) genau dann wahr ist, wenn n
eine Primzahl
Beobachtung
Beispiel
Wenn x die Primzahl 7 ist, dann gilt I |= ist prim(x) ∧ x = 7
Definition
1
Mit Hilfe von Interpretationen wird der Wahrheitsgehalt von Atomen
bestimmt
2
Ist die Wahrheit von Atomen in I definiert, wird die Wahrheit einer
beliebigen Formel durch die Bedeutung der Junktoren bestimmt
Die Konsequenzrelation A |= B gilt, gdw. für alle Interpretationen I:
I |= A impliziert I |= B
Beispiel
Seien x1 > 4 und x1 + 1 > 5 Atome, es gilt:
x1 > 4 |= x1 + 1 > 5
Beispiel
Die Formel ist prim(x) ∧ x = 7 bedeutet, dass x die Primzahl 7 ist
GM (IFI)
Einführung in die Theoretische Informatik
201/1
Verifikation nach Hoare
GM (IFI)
Einführung in die Theoretische Informatik
202/1
Verifikation nach Hoare
Hoare-Tripel
Definition
• Seien Q und R Zusicherungen
• Ein Hoare-Tripel {Q} P {R} ist wahr, wenn
1 Q vor der Ausführung von P gilt
2 R nach der Ausführung von P gilt
3 unter der Voraussetzung, dass P terminiert
• Ein Hoare-Tripel ist wie folgt definiert:
• Wenn {Q} P {R} wahr, dann ist P korrekt in Bezug auf Q und R
Definition
• Sei P ein while-Programm (ein Programm einer Registermaschine)
• Dann sagen wir auch P ist partiell korrekt
{Q} P {R}
• Das Programm P ist total korrekt, wenn es partiell korrekt ist und
terminiert
• Q wird Vorbedingung
• R wird Nachbedingung genannt
Beispiel
Die folgenden Hoare-Tripel
Beispiel
{x1 > 4} x1 := x1 + 1 {x1 > 5}
Seien x1 > 4, x1 > 5 Zusicherungen und x1 := x1 + 1 ein Programm,
dann ist {x1 > 4} x1 := x1 + 1 {x1 > 5} ein Hoare-Tripel
GM (IFI)
Einführung in die Theoretische Informatik
{x2 = 0} x2 := x2 − 1 {x2 = 0}
sind wahr und die jeweiligen Programme total korrekt
203/1
GM (IFI)
Einführung in die Theoretische Informatik
204/1
Verifikation nach Hoare
Verifikation nach Hoare
Hoare-Kalkül
Beispiel
Wir betrachten das folgende einfache while-Programm P:
Definition
Die Regeln des Hoare-Kalkül sind wie folgt definiert:
{Q{x 7→ t}} x := t {Q}
[z]
[s]
[a]
{Q} P1 {R} {R} P2 {S}
{Q} P1 ; P2 {S}
[w]
{Q 0 } P {R 0 }
Q |= Q 0 , R 0 |= R
{Q} P {R}
while xi 6= 0 do
xi := xi − 1
end
und zeigen {xi > 0} P {xi = 0}
[z]
{xi − 1 > 0} xi := xi − 1 {xi > 0}
[a]
{xi > 0 ∧ xi 6= 0} xi := xi − 1 {xi > 0}
[w]
{xi > 0} P {xi > 0 ∧ xi = 0}
[a]
{xi > 0} P {xi = 0}
{I ∧ B} P {I }
{I } while B do P end {I ∧ ¬B}
Ist ein Hoare-Tripel in diesem Kalkül ableitbar, dann ist es wahr
wir verwenden:
Beispiel
[z]
{x1 + 1 > 5} x1 := x1 + 1 {x1 > 5}
[a], x1 > 4 |= x1 + 1 > 5
{x1 > 4} x1 := x1 + 1 {x1 > 5}
GM (IFI)
Einführung in die Theoretische Informatik
205/1
Automatisierung
1
xi > 0 ∧ xi = 0 |= xi = 0
2
die Schleifeninvariante xi > 0
3
xi > 0 ∧ xi 6= 0 |= xi − 1 > 0
GM (IFI)
Einführung in die Theoretische Informatik
206/1
Automatisierung
Automatisierung von Verifikationstechniken
Bemerkung
Frage
Kann Verifikation vollständig automatisiert werden?
Termination von imperativen Programmen kann etwa von folgenden Tools
gezeigt werden
Antwort
Nein
• ein total korrektes Programm muss als terminierend nachgewiesen
werden
AProVE, COSTA, Julia, SPEED, Terminator, TTT2, . . .
Bemerkung
• Termination ist ein unentscheidbares Problem
Neben der Termination können auch andere (unentscheidbare)
Eigenschaften von Programmen automatisch verifiziert werden, etwa der Speicherbedarf, die Laufzeitkomplexität, etc.
Frage
Was tun?
AProVE, COSTA, LOOPUS, RaML, SPEED, TCT, . . .
Antwort
• Entweder wird Termination vorausgesetzt und muss per Hand
bewiesen werden
NB: diese Tools müssen unvollständig sein
• Oder der Verifikator für Termination ist partiell
GM (IFI)
Einführung in die Theoretische Informatik
207/1
GM (IFI)
Einführung in die Theoretische Informatik
208/1
Automatisierung
Vielen Dank für die
Aufmerksamkeit!
GM (IFI)
Einführung in die Theoretische Informatik
209/1
Herunterladen