Einführung in die Theoretische Informatik

Ähnliche Dokumente
Zusammenfassung. Definition. 1 (x i ) 1 i n Sequenz von Registern x i, die natürliche Zahlen beinhalten. 2 P ein Programm. Befehle: 1 x i := x i + 1

Definition (Modus Ponens) Wenn A, dann B. A gilt Also, gilt B

Einführung in die Theoretische Informatik

Zusammenfassung der letzten LVA. Einführung in die Theoretische Informatik. Syntax der Aussagenlogik. Inhalte der Lehrveranstaltung

Zusammenfassung der letzten LVA. Einführung in die Theoretische Informatik. Syntax der Aussagenlogik. Inhalte der Lehrveranstaltung

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik. Inhalte der Lehrveranstaltung. Definition (Boolesche Algebra) Einführung in die Logik

Zusammenfassung. Beispiel. 1 Wir betrachten die folgende Signatur F = {,, +, 0, 1} sodass. 3 Wir betrachten die Identitäten E. 4 Dann gilt E 1 + x = 1

Einführung in die Theoretische Informatik

3. Klausur Einführung in die Theoretische Informatik Seite 1 von Welches der folgenden klassischen Probleme der Informatik ist entscheidbar?

Einführung in die Theoretische Informatik

2. Klausur Einführung in die Theoretische Informatik Seite 1 von Welche der folgenden Aussagen zur Aussagenlogik ist falsch?

3. Klausur Einführung in die Theoretische Informatik Seite 1 von 14

1. Welche der folgenden Aussagen zur Verifikation nach Hoare ist richtig?

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1

Unentscheidbarkeitssätze der Logik

Einführung in die Theoretische Informatik

Logik für Informatiker

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

1. Klausur Einführung in die Theoretische Informatik Seite 1 von 14

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel

Zusammenfassung. Satz. 1 Seien F, G Boolesche Ausdrücke (in den Variablen x 1,..., x n ) 2 Seien f : B n B, g : B n B ihre Booleschen Funktionen

4.1 Motivation. Theorie der Informatik. Theorie der Informatik. 4.1 Motivation. 4.2 Syntax der Prädikatenlogik. 4.3 Semantik der Prädikatenlogik

Grundlagen der Logik

Nichtklassische Logiken

Einführung in die Theoretische Informatik

Formale Grundlagen der Informatik 1 Kapitel 19. Syntax & Semantik

C. A. R. Hoare. An Axiomatic Basis for Computer Programming. Nicolas Schelp. Proseminar Assertions SS 2007

Logik für Informatiker

Übungsblatt 1. Lorenz Leutgeb. 30. März 2015

Falls H die Eingabe verwirft, so wissen wir, dass M bei Eingabe w nicht hält. M hält im verwerfenden Haltezustand. Beweis:

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

Logik Vorlesung 7: Grundlagen Prädikatenlogik

Algorithmen und Programmieren II Programmverifikation {V} P {N}

Einführung in die Theoretische Informatik

Korrektheit und Hoare-Kalkül für Imperative Programme

Was bisher geschah Modellierung in Logiken: klassische Prädikatenlogik FOL(Σ, X) Spezialfall klassische Aussagenlogik AL(P)

Aussagenlogik. Übersicht: 1 Teil 1: Syntax und Semantik. 2 Teil 2: Modellierung und Beweise. Aussagenlogik H. Kleine Büning 1/25

Alphabet der Prädikatenlogik

Kurseinheit 1 Einführung und mathematische Grundlagen Aussagenlogik

Logik Vorlesung 4: Horn-Logik und Kompaktheit

Einführung in die Logik (Vorkurs)

Einführung in die Theoretische Informatik. Woche 1. Harald Zankl. Institut für UIBK Wintersemester 2014/2015.

Einführung in die Theoretische Informatik

LOOP-Programme: Syntaktische Komponenten

Logik für Informatiker

Kapitel 1. Aussagenlogik

Dank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung

Logik. Logik. Vorkurs Informatik Theoretischer Teil WS 2013/ September Vorkurs Informatik - Theorie - WS2013/14

Logik Vorlesung 3: Äquivalenz und Normalformen

Lösung zur Klausur. Grundlagen der Theoretischen Informatik im WiSe 2003/2004

Motivation und Geschichte. Geschichte der Logik Logik und Informatik

Theoretische Grundlagen der Informatik

Allgemeingültige Aussagen

WS06/07 Referentin: Katharina Blinova. Formale Sprachen. Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven

Berechenbarkeit und Komplexität Vorlesung 11

Formale Grundlagen der Informatik 1 Kapitel 17. Syntax & Semantik

Diskrete Strukturen. Sebastian Thomas RWTH Aachen Mathematische Logik

Abschnitt 11: Korrektheit von imperativen Programmen

Turing-Maschinen: Ein abstrakes Maschinenmodell

Was ist Logik? Was ist Logik? Aussagenlogik. Wahrheitstabellen. Geschichte der Logik eng verknüpft mit Philosophie

n 1. Erste Schritte n 2. Einfache Datentypen n 3. Anweisungen und Kontrollstrukturen n 4. Verifikation n 5. Reihungen (Arrays)

Die Prädikatenlogik erster Stufe: Syntax und Semantik

Einführung in die Logik

Motivation. Formale Grundlagen der Informatik 1 Kapitel 17. Syntax & Semantik. Motivation - Beispiel. Motivation - Beispiel

Syntax der Prädikatenlogik: Komplexe Formeln

THEORETISCHE INFORMATIK UND LOGIK

THEORETISCHE INFORMATIK UND LOGIK

Theorie der Informatik. Theorie der Informatik. 6.1 Einführung. 6.2 Alphabete und formale Sprachen. 6.3 Grammatiken. 6.4 Chomsky-Hierarchie

WS 05/06 mod Verifikation

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

Berechenbarkeitstheorie 14. Vorlesung

Logik für Informatiker

Akzeptierende Turing-Maschine

Sequentielle Programme, Hoare-Logik und Dynamische Logik

Informatik III. Christian Schindelhauer Wintersemester 2006/ Vorlesung

Mächtigkeit von WHILE-Programmen

Turing Maschine. Thorsten Timmer. SS 2005 Proseminar Beschreibungskomplexität bei Prof. D. Wotschke. Turing Maschine SS 2005 p.

! 1. Erste Schritte! 2. Einfache Datentypen! 3. Anweisungen und Kontrollstrukturen! 4. Verifikation! 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -

Logik für Informatiker

Informatik 3 Theoretische Informatik WS 2015/16

Logic in a Nutshell. Christian Liguda

Einige Grundlagen der Komplexitätstheorie

Einführung in die Theoretische Informatik Tutorium IX

TU7 Aussagenlogik II und Prädikatenlogik

Grundbegriffe der Informatik

Grundlagen der Programmierung (Vorlesung 24)

De Morgan sche Regeln

Logische und funktionale Programmierung

Klausur Formale Systeme Fakultät für Informatik WS 2015/2016

Logik. Studiengang. Informatik und. Technoinformatik SS 02. Prof. Dr. Madlener Universität Kaiserslautern. Vorlesung: Mi

Aussagenlogik. (MAF2) MAF(I, t) = t und MAF(I, f ) = f. Die Semantik aussagenlogischer Formeln ist durch die Funktion

Logik (Prof. Dr. Wagner FB AI)

Motivation. Formale Grundlagen der Informatik 1 Kapitel 19. Syntax & Semantik. Motivation - Beispiel. Motivation - Beispiel

Logik für Informatiker

Theoretische Informatik und Logik Übungsblatt 4 (SS 2017) Lösungen

Logik Vorlesung 2: Semantik der Aussagenlogik

THEORETISCHE INFORMATIK UND LOGIK

Transkript:

Einführung in die Theoretische Informatik Maximilian Haslbeck Fabian Mitterwallner Georg Moser David Obwaller cbr.uibk.ac.at

Zusammenfassung der letzten LVA Definition Eine Registermaschine (RM) R ist ein Paar R = ((x i ) 1 i n, P) sodass 1 (x i ) 1 i n Sequenz von Registern x i, die natürliche Zahlen beinhalten 2 P ein Programm Befehle: 1 x i := x i + 1 2 x i := x i 1 3 while x i 0 do P 1 end Satz Jede partielle Funktion f : N k N, die berechenbar auf einer RM ist, ist auf einer TM berechenbar und umgekehrt 1

Inhalte der Lehrveranstaltung Einführung in die Logik Syntax & Semantik der Aussagenlogik, Formales Beweisen, Konjunktive und Disjunktive Normalformen Einführung in die Algebra Boolesche Algebra, Universelle Algebra, Logische Schaltkreise Einführung in die Theorie der Formalen Sprachen Grammatiken und Formale Sprachen, Reguläre Sprachen, Kontextfreie Sprachen Einführung in die Berechenbarkeitstheorie Algorithmisch unlösbare Probleme, Turing Maschinen, Registermaschinen Einführung in die Programmverifikation Prinzipien der Analyse von Programmen, Verifikation nach Hoare 2

Inhalte der Lehrveranstaltung Einführung in die Logik Syntax & Semantik der Aussagenlogik, Formales Beweisen, Konjunktive und Disjunktive Normalformen Einführung in die Algebra Boolesche Algebra, Universelle Algebra, Logische Schaltkreise Einführung in die Theorie der Formalen Sprachen Grammatiken und Formale Sprachen, Reguläre Sprachen, Kontextfreie Sprachen Einführung in die Berechenbarkeitstheorie Algorithmisch unlösbare Probleme, Turing Maschinen, Registermaschinen Einführung in die Programmverifikation Prinzipien der Analyse von Programmen, Verifikation nach Hoare 2

Satz Sei Σ ein Alphabet und L Σ rekursiv; dann ist L rekursiv 3

Satz Sei Σ ein Alphabet und L Σ rekursiv; dann ist L rekursiv Beweis. Da L rekursiv ist, gibt es eine totale TM M mit L = L(M). Wir definieren eine TM M, wobei der akzeptierende und der verwerfende Zustand von M vertauscht werden. Weil M total ist, ist auch M total. Somit akzeptiert M ein Wort genau dann, wenn M es verwirft und es folgt L = L(M ), d.h. L ist rekursiv. 3

Satz Sei Σ ein Alphabet und L Σ rekursiv; dann ist L rekursiv Beweis. Da L rekursiv ist, gibt es eine totale TM M mit L = L(M). Wir definieren eine TM M, wobei der akzeptierende und der verwerfende Zustand von M vertauscht werden. Weil M total ist, ist auch M total. Somit akzeptiert M ein Wort genau dann, wenn M es verwirft und es folgt L = L(M ), d.h. L ist rekursiv. Satz Jede rekursive Menge ist rekursiv aufzählbar. Andererseits ist nicht jede rekursiv aufzählbare Menge rekursiv. 3

Satz Sei Σ ein Alphabet und L Σ rekursiv; dann ist L rekursiv Beweis. Da L rekursiv ist, gibt es eine totale TM M mit L = L(M). Wir definieren eine TM M, wobei der akzeptierende und der verwerfende Zustand von M vertauscht werden. Weil M total ist, ist auch M total. Somit akzeptiert M ein Wort genau dann, wenn M es verwirft und es folgt L = L(M ), d.h. L ist rekursiv. Satz Jede rekursive Menge ist rekursiv aufzählbar. Andererseits ist nicht jede rekursiv aufzählbare Menge rekursiv. Beweis. Der erste Teil des Satzes ist eine Konsequenz der Definitionen; den zweiten Teil holen wir nach 3

Satz Wenn L und L rekursiv aufzählbar sind, dann ist L rekursiv. 4

Satz Wenn L und L rekursiv aufzählbar sind, dann ist L rekursiv. Beweis. TM M 1, M 2 mit L = L(M 1 ) und (L) = L(M 2 ) 4

Satz Wenn L und L rekursiv aufzählbar sind, dann ist L rekursiv. Beweis. TM M 1, M 2 mit L = L(M 1 ) und (L) = L(M 2 ) definiere TM M, sodass das Band zwei Hälften hat b ˆb a b a a a a b a a a c c c d d d c ĉ d c d c 4

Satz Wenn L und L rekursiv aufzählbar sind, dann ist L rekursiv. Beweis. TM M 1, M 2 mit L = L(M 1 ) und (L) = L(M 2 ) definiere TM M, sodass das Band zwei Hälften hat b ˆb a b a a a a b a a a c c c d d d c ĉ d c d c M 1 wird auf der oberen und M 2 auf der unteren Hälfte simuliert 4

Satz Wenn L und L rekursiv aufzählbar sind, dann ist L rekursiv. Beweis. TM M 1, M 2 mit L = L(M 1 ) und (L) = L(M 2 ) definiere TM M, sodass das Band zwei Hälften hat b ˆb a b a a a a b a a a c c c d d d c ĉ d c d c M 1 wird auf der oberen und M 2 auf der unteren Hälfte simuliert wenn M 1 x akzeptiert, M akzeptiert x wenn M 2 x akzeptiert, M verwirft x 4

Satz Wenn L und L rekursiv aufzählbar sind, dann ist L rekursiv. Beweis. TM M 1, M 2 mit L = L(M 1 ) und (L) = L(M 2 ) definiere TM M, sodass das Band zwei Hälften hat b ˆb a b a a a a b a a a c c c d d d c ĉ d c d c M 1 wird auf der oberen und M 2 auf der unteren Hälfte simuliert wenn M 1 x akzeptiert, M akzeptiert x wenn M 2 x akzeptiert, M verwirft x 4

Definition (informell) Erweiterung um mehrere Bänder und Lese/Schreibköpfe: b a a a b b b b a a a b a b b a b a Q mehrfacher Lese/Schreibkopf 5

Definition (informell) Erweiterung um mehrere Bänder und Lese/Schreibköpfe: b a a a b b b b a a a b a b b a b a Q mehrfacher Lese/Schreibkopf 5

Definition (informell) Erweiterung um mehrere Bänder und Lese/Schreibköpfe: b a a a b b b b a a a b a b b a b a Q mehrfacher Lese/Schreibkopf Definition δ : Q Γ 3 Q Γ 3 {L, R} 3 5

Satz Sei M eine k-bändige TM. Dann existiert eine (einbändige) TM M, sodass L(M) = L(M ) 6

Satz Sei M eine k-bändige TM. Dann existiert eine (einbändige) TM M, sodass L(M) = L(M ) Beweisskizze. 6

Satz Sei M eine k-bändige TM. Dann existiert eine (einbändige) TM M, sodass L(M) = L(M ) Beweisskizze. wir simulieren die Bänder übereinander, obda sei k = 2 6

Satz Sei M eine k-bändige TM. Dann existiert eine (einbändige) TM M, sodass L(M) = L(M ) Beweisskizze. wir simulieren die Bänder übereinander, obda sei k = 2 wir erweitern das Alphabet von M a c â c a ĉ â ĉ 6

Satz Sei M eine k-bändige TM. Dann existiert eine (einbändige) TM M, sodass L(M) = L(M ) Beweisskizze. wir simulieren die Bänder übereinander, obda sei k = 2 wir erweitern das Alphabet von M a c â c a ĉ â ĉ Band von M kann folgende Gestalt haben: b ˆb a b a a a a b a a a c c c d d d c ĉ d c d c 6

Satz Sei M eine k-bändige TM. Dann existiert eine (einbändige) TM M, sodass L(M) = L(M ) Beweisskizze. wir simulieren die Bänder übereinander, obda sei k = 2 wir erweitern das Alphabet von M a c â c a ĉ â ĉ Band von M kann folgende Gestalt haben: b ˆb a b a a a a b a a a c c c d d d c ĉ d c d c alle Bänder von M sind nun repräsentiert und die Leseköpfe werden durch die Zusatzmarkierung ˆ ausgedrückt 6

Satz Sei M eine k-bändige TM. Dann existiert eine (einbändige) TM M, sodass L(M) = L(M ) Beweisskizze. wir simulieren die Bänder übereinander, obda sei k = 2 wir erweitern das Alphabet von M a c â c a ĉ â ĉ Band von M kann folgende Gestalt haben: b ˆb a b a a a a b a a a c c c d d d c ĉ d c d c alle Bänder von M sind nun repräsentiert und die Leseköpfe werden durch die Zusatzmarkierung ˆ ausgedrückt 6

Wozu Programmverifikation 7

Wozu Programmverifikation Ariane-5 Fehler in der Datenkonvertierung USD 370 Millionen 7

Wozu Programmverifikation Ariane-5 Fehler in der Datenkonvertierung USD 370 Millionen Intel Pentium FDIV-Bug Falsche Berechnungen USD 475 Millionen 7

Wozu Programmverifikation Ariane-5 Fehler in der Datenkonvertierung USD 370 Millionen Intel Pentium FDIV-Bug Falsche Berechnungen USD 475 Millionen Gepäckverteilung (Denver) Desaster USD 560 Millionen 7

Wozu Programmverifikation Ariane-5 Fehler in der Datenkonvertierung USD 370 Millionen Intel Pentium FDIV-Bug Falsche Berechnungen USD 475 Millionen Gepäckverteilung (Denver) Desaster USD 560 Millionen Blue Screen of Death ziemlich lästig 7

Begutachtung Der Code wird von ähnlich qualifizierten Programmierern kontrolliert subtile Fehler werden leicht übersehen 8

Begutachtung Der Code wird von ähnlich qualifizierten Programmierern kontrolliert subtile Fehler werden leicht übersehen Testen dynamische Technik, bei der das Programm ausgeführt wird Wie wird die richtige Testumgebung geschaffen? 8

Begutachtung Der Code wird von ähnlich qualifizierten Programmierern kontrolliert subtile Fehler werden leicht übersehen Testen dynamische Technik, bei der das Programm ausgeführt wird Wie wird die richtige Testumgebung geschaffen? Formal Methoden erlauben die frühe Integration der Verifikation in die Softwareentwicklung sind effizienter als andere Methoden (höhere Erkennensrate von Fehlern) sind (im Besonderen wenn automatisierbar) schneller anwendbar 8

Verifikation nach Hoare Prädikatenlogik (informell) Die Prädikatenlogik ist eine Logik, deren Ausdruckskraft über die der Aussagenlogik weit hinausgeht Die wichtigste Erweiterung sind Prädikatensymbole Prädikatensymbole erlauben es uns, über Elemente einer Menge Aussagen zu treffen 9

Verifikation nach Hoare Prädikatenlogik (informell) Die Prädikatenlogik ist eine Logik, deren Ausdruckskraft über die der Aussagenlogik weit hinausgeht Die wichtigste Erweiterung sind Prädikatensymbole Prädikatensymbole erlauben es uns, über Elemente einer Menge Aussagen zu treffen Sprache einer Prädikatenlogik Eine Prädikatenlogik durch eine Sprache beschrieben, diese Sprache enthält: 1 Funktionssymbole und Prädikatensymbole; Variablen 2 = }{{} Gleichheit,,,,,, }{{} Junktoren }{{} Quantoren 9

Beispiel Sei 7 eine Konstante und ist_prim ein Prädikatensymbol Wir schreiben ist_prim(7), um auszudrücken, dass 7 eine Primzahl 10

Beispiel Sei 7 eine Konstante und ist_prim ein Prädikatensymbol Wir schreiben ist_prim(7), um auszudrücken, dass 7 eine Primzahl Definition Ein Ausdruck der mit Hilfe von Variablen und Funktionssymbolen gebildet wird, heißt Term 10

Beispiel Sei 7 eine Konstante und ist_prim ein Prädikatensymbol Wir schreiben ist_prim(7), um auszudrücken, dass 7 eine Primzahl Definition Ein Ausdruck der mit Hilfe von Variablen und Funktionssymbolen gebildet wird, heißt Term Definition 1 Sei P ein Prädikatensymbol 2 Seien t 1,..., t n Terme 10

Beispiel Sei 7 eine Konstante und ist_prim ein Prädikatensymbol Wir schreiben ist_prim(7), um auszudrücken, dass 7 eine Primzahl Definition Ein Ausdruck der mit Hilfe von Variablen und Funktionssymbolen gebildet wird, heißt Term Definition 1 Sei P ein Prädikatensymbol 2 Seien t 1,..., t n Terme Dann nennen wir die Ausdrücke P(t 1,..., t n ) und t 1 = t 2 Atome oder atomare Formel 10

Definition (Zusicherungen) Wir definieren Zusicherungen induktiv: 1 Atome sind Zusicherungen 2 Wenn A und B Zusicherungen sind, dann sind auch die folgenden Ausdrücke, Zusicherungen: A (A B) (A B) (A B) 11

Definition (Zusicherungen) Wir definieren Zusicherungen induktiv: 1 Atome sind Zusicherungen 2 Wenn A und B Zusicherungen sind, dann sind auch die folgenden Ausdrücke, Zusicherungen: A (A B) (A B) (A B) Konvention Zusicherungen werden Formeln genannt 11

Definition (Zusicherungen) Wir definieren Zusicherungen induktiv: 1 Atome sind Zusicherungen 2 Wenn A und B Zusicherungen sind, dann sind auch die folgenden Ausdrücke, Zusicherungen: A (A B) (A B) (A B) Konvention Zusicherungen werden Formeln genannt Definition Interpretationen I werden verwendet, um den Ausdrücken der Prädikatenlogik eine Bedeutung zu geben 11

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 12

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 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 12

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 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 Beispiel Die Formel ist_prim(x) x = 7 bedeutet, dass x die Primzahl 7 ist 12

Definition Sei I eine Interpretation und F eine Formel, wir schreiben I = F, wenn die Formel F in der Interpretation I wahr ist 13

Definition Sei I eine Interpretation und F eine Formel, wir schreiben I = F, wenn die Formel F in der Interpretation I wahr ist Beispiel Wenn x die Primzahl 7 ist, dann gilt I = ist_prim(x) x = 7 13

Definition Sei I eine Interpretation und F eine Formel, wir schreiben I = F, wenn die Formel F in der Interpretation I wahr ist Beispiel Wenn x die Primzahl 7 ist, dann gilt I = ist_prim(x) x = 7 Definition Die Konsequenzrelation A = B gilt, gdw. für alle Interpretationen I: I = A impliziert I = B 13

Definition Sei I eine Interpretation und F eine Formel, wir schreiben I = F, wenn die Formel F in der Interpretation I wahr ist Beispiel Wenn x die Primzahl 7 ist, dann gilt I = ist_prim(x) x = 7 Definition Die Konsequenzrelation A = B gilt, gdw. für alle Interpretationen I: I = A impliziert I = B Beispiel Seien x 1 > 4 und x 1 + 1 > 5 Atome, es gilt: x 1 > 4 = x 1 + 1 > 5 13

Hoare-Tripel Definition Sei P ein while-programm (ein Programm einer Registermaschine) Seien Q und R Zusicherungen Ein Hoare-Tripel ist wie folgt definiert: {Q} P {R} Q wird Vorbedingung R wird Nachbedingung genannt 14

Hoare-Tripel Definition Sei P ein while-programm (ein Programm einer Registermaschine) Seien Q und R Zusicherungen Ein Hoare-Tripel ist wie folgt definiert: {Q} P {R} Q wird Vorbedingung R wird Nachbedingung genannt Beispiel Seien x 1 > 4, x 1 > 5 Zusicherungen und x 1 := x 1 + 1 ein Programm, dann ist {x 1 > 4} x 1 := x 1 + 1 {x 1 > 5} ein Hoare-Tripel 14

Definition 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 15

Definition 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 Wenn {Q} P {R} wahr, dann ist P korrekt in Bezug auf Q und R Dann sagen wir auch P ist partiell korrekt 15

Definition 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 Wenn {Q} P {R} wahr, dann ist P korrekt in Bezug auf Q und R Dann sagen wir auch P ist partiell korrekt Das Programm P ist total korrekt, wenn es partiell korrekt ist und terminiert 15

Definition 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 Wenn {Q} P {R} wahr, dann ist P korrekt in Bezug auf Q und R Dann sagen wir auch P ist partiell korrekt Das Programm P ist total korrekt, wenn es partiell korrekt ist und terminiert Beispiel Die folgenden Hoare-Tripel {x 1 > 4} x 1 := x 1 + 1 {x 1 > 5} {x 2 = 0} x 2 := x 2 1 {x 2 = 0} sind wahr und die jeweiligen Programme total korrekt 15

Hoare-Kalkül Definition Die Regeln des Hoare-Kalkül sind wie folgt definiert: 16

Hoare-Kalkül Definition Die Regeln des Hoare-Kalkül sind wie folgt definiert: [z] {Q{x t}} x := t {Q} 16

Hoare-Kalkül Definition Die Regeln des Hoare-Kalkül sind wie folgt definiert: {Q } P {R } [z] {Q{x t}} x := t {Q} [a] {Q} P {R} Q = Q, R = R 16

Hoare-Kalkül Definition Die Regeln des Hoare-Kalkül sind wie folgt definiert: {Q } P {R } [z] {Q{x t}} x := t {Q} [a] {Q} P {R} Q = Q, R = R [s] {Q} P 1 {R} {R} P 2 {S} {Q} P 1 ; P 2 {S} 16

Hoare-Kalkül Definition Die Regeln des Hoare-Kalkül sind wie folgt definiert: {Q } P {R } [z] {Q{x t}} x := t {Q} [a] {Q} P {R} Q = Q, R = R [s] {Q} P 1 {R} {R} P 2 {S} {Q} P 1 ; P 2 {S} [w] {I B} P {I} {I} while B do P end {I B} 16

Hoare-Kalkül Definition Die Regeln des Hoare-Kalkül sind wie folgt definiert: {Q } P {R } [z] {Q{x t}} x := t {Q} [a] {Q} P {R} Q = Q, R = R [s] {Q} P 1 {R} {R} P 2 {S} {Q} P 1 ; P 2 {S} [w] {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 16

Hoare-Kalkül Definition Die Regeln des Hoare-Kalkül sind wie folgt definiert: {Q } P {R } [z] {Q{x t}} x := t {Q} [a] {Q} P {R} Q = Q, R = R [s] {Q} P 1 {R} {R} P 2 {S} {Q} P 1 ; P 2 {S} [w] {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 Beispiel {x 1 + 1 > 5} x 1 := x 1 + 1 {x 1 > 5} [z] [a], x 1 > 4 = x 1 + 1 > 5 {x 1 > 4} x 1 := x 1 + 1 {x 1 > 5} 16

Beispiel Wir betrachten das folgende einfache while-programm P: while x i 0 do x i := x i 1 end 17

Beispiel Wir betrachten das folgende einfache while-programm P: und zeigen {x i 0} P {x i = 0} while x i 0 do end x i := x i 1 17

Beispiel Wir betrachten das folgende einfache while-programm P: while x i 0 do x i := x i 1 end und zeigen {x i 0} P {x i = 0} {x i 1 0} x i := x i 1 {x i 0} [z] {x i 0 x i 0} x i := x i 1 {x i 0} [a] {x i 0} P {x i 0 x i = 0} [a] {x i 0} P {x i = 0} [w] 17

Beispiel Wir betrachten das folgende einfache while-programm P: while x i 0 do x i := x i 1 end und zeigen {x i 0} P {x i = 0} {x i 1 0} x i := x i 1 {x i 0} [z] {x i 0 x i 0} x i := x i 1 {x i 0} [a] {x i 0} P {x i 0 x i = 0} [a] {x i 0} P {x i = 0} wir verwenden: 1 x i 0 x i = 0 = x i = 0 2 die Schleifeninvariante x i 0 3 x i 0 x i 0 = x i 1 0 [w] 17

Beispiel Wir betrachten das folgende einfache while-programm P: while x i 0 do x i := x i 1 end und zeigen {x i 0} P {x i = 0} {x i 1 0} x i := x i 1 {x i 0} [z] {x i 0 x i 0} x i := x i 1 {x i 0} [a] {x i 0} P {x i 0 x i = 0} [a] {x i 0} P {x i = 0} wir verwenden: 1 x i 0 x i = 0 = x i = 0 2 die Schleifeninvariante x i 0 3 x i 0 x i 0 = x i 1 0 [w] 17

Beispiel Wir betrachten das folgende einfache while-programm P: while x i 0 do x i := x i 1 end und zeigen {x i 0} P {x i = 0} {x i 1 0} x i := x i 1 {x i 0} [z] {x i 0 x i 0} x i := x i 1 {x i 0} [a] {x i 0} P {x i 0 x i = 0} [a] {x i 0} P {x i = 0} wir verwenden: 1 x i 0 x i = 0 = x i = 0 2 die Schleifeninvariante x i 0 3 x i 0 x i 0 = x i 1 0 [w] 17

Beispiel Wir betrachten das folgende einfache while-programm P: while x i 0 do x i := x i 1 end und zeigen {x i 0} P {x i = 0} {x i 1 0} x i := x i 1 {x i 0} [z] {x i 0 x i 0} x i := x i 1 {x i 0} [a] {x i 0} P {x i 0 x i = 0} [a] {x i 0} P {x i = 0} wir verwenden: 1 x i 0 x i = 0 = x i = 0 2 die Schleifeninvariante x i 0 3 x i 0 x i 0 = x i 1 0 [w] 17