Formale Systeme Logik: Verifikation von Aussagen über Algorithmen. Ana Sokolova statt Robert Elsässer

Ähnliche Dokumente
4.3 Verifikation von Aussagen über Algorithmen

WS 05/06 mod Verifikation

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

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

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

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

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

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

Korrektheit imperativer Algorithmen

Verifizierende Testverfahren

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

Problem: Gegeben Spezifikation (P,Q) und Implementierung S Gesucht formaler (automatisierbarer?) Beweis, dass S (P,Q) erfüllt.

Informatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 -

Einführung in die Programmierung

Beispiel 1 zur Verifikation eines bedingten Anweisung. Hoare-Regel für die bedingte Anweisung. else

Einführung in die Programmiertechnik

Beispiel 1 zur Verifikation eines bedingten Anweisung. Hoare-Regel für die bedingte Anweisung. Beispiel 2 zur Verifikation eines bedingten Anweisung

Verifikation von Programmen

Abschnitt 11: Korrektheit von imperativen Programmen

Partielle Korrektheit von Programmen. Beispiele an der Tafel

Verifikation von Algorithmen. OOPM, Ralf Lämmel

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

5.3 Korrektheit und Verifikation

5.3 Korrektheit und Verifikation

Kapitel 4: Formale Verifikation

Statische Codeanalyse

Algorithmen und Datenstrukturen Korrektheit von Algorithmen

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

4 Spezifikation und Verifikation

Verschiedene Fehlerarten. Verifikation. Arten der Qualitätssicherung. Verifikation. Zusicherungen (Assertions) Beispiel für Zusicherungen

Übung zur Vorlesung Programmierung

Formale Verifikation. KV Software Engineering Prof. Dr. Martin Glinz. Kapitel 4. Universität Zürich Institut für Informatik

Tutoraufgabe 1 (Verifikation):

Einführung in die Theoretische Informatik

1. Teilklausur. Name:... Vorname:... Matrikel-Nummer:...

Übung zu Grundbegriffe der Informatik. Simon Wacker. 15. November 2013

Ein Beispielbeweis zur Verifikation des Programms zur Division mit Rest auf der Basis der Hoare-Regeln

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Grundbegriffe der Informatik

Kurs 1612 Konzepte imperativer Programmierung Musterlösung zur Nachklausur am

Mathematische Beweise und Symbolische Tests

7.1 Spezifikation mit Vor- und Nachbedingungen

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Grundlagen der Theoretischen Informatik

Teil X. Programmverifikation. Spezifikation eines Algorithmus einer Funktion einer Prozedur. Vorbedingungen Parameter Wertebereiche

Definition der Hilfsprädikate

Vor- und Nachbedingungen in imperativen Programmen OOPM, Ralf Lämmel

9.1 Grundsätzliches Fehlertoleranz vs. Fehlerintoleranz. Testen vs. Verifikation Testen. Verifikation und Test in der SW-Entwicklung

Tutoraufgabe 1 (Hoare-Kalkül):

Informatik II - Tutorium

Verhalten. Def. und Nutzen von Verhalten. Pseudocode Schreibtischtest. Algorithmen

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

Was bisher geschah Modellierung von Daten durch Mengen Beziehungen (Zusammenhänge und Eigenschaften) durch Relationen, Graphen und Funktionen

7 Axiomatische Semantik

Logik. Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block Aussage

Werkzeuge zur Programmentwicklung

einseitige Selektion zweiseitige Selektion

Übungsblatt 5. Thema: Algorithmen: Rekursion vs Iteration, O-Notation, Korrektheit

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Informatik II, SS 2014

Zentralübung: Schleifeninvarianten

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Software Entwicklung 2. Formale Verifikation

Präzedenz von Operatoren

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Formale Programmverifikation. Referentin: Kirsten Hradek

Algorithmen und Datenstrukturen (für ET/IT)

Grundbegriffe der Informatik

Was ist mathematische Logik?

Tutoraufgabe 1 (Casting): Programmierung WS17/18 Übungsblatt 2 (Abgabe ) Allgemeine Hinweise:

Übersicht Formale Semantik. Übersicht Axiomatische Semantik. Inhaltsübersicht HPS WS 2003/04. Vorlesung Höhere Programmiersprachen,

Sequentielle Programme, Hoare-Logik und Dynamische Logik

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen

Einführung in die Theoretische Informatik

Grundlagen der Informatik I (Studiengang Medieninformatik)

Informatik II, SS 2018

Funktionale Spezifikation

Semantik von Programmiersprachen SS 2012

Einfache Bedingte Ausführung

5 D E R B E G R I F F D E S A L G O R I T H M U S

Algorithmen. Beispiele: Beispiele: Algorithmen zum Test auf Primzahl. Programmieren - Java I WS 2001

2. Algorithmenbegriff

Logik Vorlesung 4: Horn-Logik und Kompaktheit

Technische Universität München SoSe 2015 Institut für Informatik I Mai 2015 Dr. Tobias Lasser. Aufgabe 1 Rechnen mit Landau-Symbolen

Grundlagen der Programmierung

Übung Informatik I - Programmierung - Blatt 3

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe

Tutoraufgabe 1 (Typcasting):

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Prof. Dr. Michael Philippsen / Prof. Dr. Herbert Stoyan

Informatik Algorithmen und Programme

Grundbegriffe der Informatik

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

Transkript:

Formale Systeme Logik: Verifikation von Aussagen über Algorithmen 20.12.2012 Ana Sokolova statt Robert Elsässer

Verifikation von Aussagen über Algorithmen Hoaresche Logik: Kalkül zum Beweisen von Aussagen über Algorithmen und Programme, Programm-Verifikation [C.A.R. Hoare, 1969] Statische Aussagen über Zustände (Werte von Variablen), die der Algorithmus (das Programm) an bestimmten Stellen annehmen kann, z. B.... {pegel < max} pegel := pegel +1;... {0 < i i < 10} a[i] := 42;...;... Aussagen müssen beweisbar für alle Ausführungen des Algorithmus gelten. Im Gegensatz zum dynamischen Testen: Ausführen des Algorithmus für bestimmte Eingaben.

Verifikation von Aussagen über Algorithmen Schlussregeln für Anweisungformen erlauben logische Schlüsse über Anweisungen hinweg: {pegel+1 max} pegel := pegel + 1; {pegel max} wegen Schlussregel für Zuweisungen Verifikation beweist, dass - an einer bestimmten Programmstelle eine Aussage über Zustände gilt - vor und nach der Ausführung eines Programmstückes eine Invariante gilt - ein Algorithmus aus jeder zulässigen Eingabe die geforderte Ausgabe berechnet z.b. {a, b N} Euklidischer Algorithmus {x = ggt von a, b} - eine Schleife terminiert Ein Algorithmus und die Aussagen dazu sollen zusammen konstruiert werden.

Vorschau auf Konzepte Aussagen charakterisieren Zustände der Ausführung Algorithmen in informeller Notation Schlussregeln für Anweisungsformen anwenden Invariante von Schleifen (und anderen Konstrukten) Schlussketten über Anweisungen hinweg verifizieren Aussagen Nachweis der Terminierung von Schleifen

Beispiel zur Vorschau: Verifikation des Algorithmus ggt Vorbedingung: x, y N, sei G größter gemeinsame Teiler von x und y Nachbedingung: a = G Algorithmus mit a := x; b:= y; solange a b wiederhole falls a > b : a := a - b; sonst b := b - a; {Aussagen über Variable}: {INV: G ist ggt von a und b a>0 b>0} {INV a b} {G ist ggt von a und b a>0 b>0 a>b} {G ist ggt von a-b und b a-b>0 b>0} {INV} {G ist ggt von a und b a>0 b>0 b>a} {G ist ggt von a und b-a a>0 b-a>0} {INV a=b} {a = G} Terminierung

Notation von Algorithmenelementen Anweisungsform Sequenz Zuweisung Alternative bedingte Anweisung Unteralgorithmus Schleife Notation Anweisung1; Anweisung2 Variable := Ausdruck falls Bedingung : Anweisung1 sonst Anweisung2 falls Bedingung : Anweisung ua() solange Bedingung wiederhole Anweisung Beispiel a := x; b := y a := x falls a > b : a := a-b sonst b := b-a falls a > b : a := a-b ggt() solange a b w-rhole falls a > b :...

Vor- und Nachbedingung von Anweisungen {P} A1 {Q} A2 {R} Vorbedingung von A1 Zur Verifikation eines Algorithmus muss für jede Anweisung A ein Nachweis gefürt werden {P} A {Q} Nachbedingung von A1 Vorbedingung von A2 Nachbedingung von A2 Wenn vor der Ausfürung die Anweisung A die Aussage P gilt, dann gilt Q nach der Ausfürung von A, falls A terminiert Die Aussagen werden entsprechend der Struktur von A verknüpft Für jede Anweisungsform, eine Schlussregel Eine Spezifikation liefert eine Vorbedingung und eine Nachbedingung des gesamtes Algorithmus {Vorbedingung} Algorithmus {Nachbedingung}

Zuweisungsregel {P[x/e]} x := e {P} Substitution - x ist durch e substituiert Wenn man zeigen will, dass nach der Zuweisung eine Aussage P für x gilt, muss man zeigen, dass vor der Zuweisung dieselbe Aussage P für e gilt

Sequenzregel {P} A1 {Q} {Q} A2 {R} {P} A1;A2 {R} Wenn {P} A1 {Q} und {Q} A2 {R} korrekte Schlüsse sind, dann ist auch {P} A1;A2 {R} ein korrekter Schluss

Konsequenzregeln {P} A {R} R Q P R {R} A {Q} {P} A {Q} {P} A {Q} Abschwächung der Nachbedingung Verschärfung der Vorbedingung

Regel für Alternative {P B} A1 {Q} {P B} A2 {Q} {P} Falls B: A1 sonst A2 {Q} Aus der gemeinsamen Vorbedingung P führen beide Zweige auf dieselbe Nachbedingung Q

Regel für bedingte Anweisung {P B} A1 {Q} {P B} {Q} {P} Falls B: A1 {Q} Aus der gemeinsamen Vorbedingung P führen die Anweisung und die Implikation auf dieselbe Nachbedingung Q

Aufrufregel {P} UA() {Q} Der Unteralgorithmus UA habe keine Parameter und liefere kein Ergebniss. Seine wirkung auf globale Variable sei spezifiziert durch die Vorbedingung P und die Nachbedingung Q. Dann gilt Ohne Parameter und Ergebniss ist diese Regel nur von sehr begrenztem Nutzen

Schleifenregel {INV B} S {INV} {INV} solange B wiederhole S {INV B} INV ist eine Schleifeninvariante, sie gilt an folgenden Stellen: vor der Schleife, vor und nach jeder Ausfrung von S und nach der Schleife

Terminierung von Schleifen Die terminierung einer Schleife solange B wiederhole S muss separat nachgewiesen werden 1. Gib einen ganzzahligen Ausdruck E an über Variablen, die in der Schleife vorkommen, und zeige, dass E bei jeder Iteration durch S verkleinert wird 2. Zeige dass E nach unten begrenzt ist, z.b. dass E 0 eine Konsequenz einer Invariante der Schleife ist. es kann auch eine andere Grenze als 0 gewählt werden, E kann auch vergrösert werden und nach oben begrenzt sein Nichtterminierung wird bewiesen, in dem man zeigt, 1. dass R B Vor- und Nachbedingung von S ist 2. dass es eine Eingabe gibt, so dass R B vor der Schleife gilt R kann einen speziellen Zustand charakterisieren in dem die Schleife nicht anhält Es gibt Schleifen, für die man nicht entscheiden kann, ob sie für jede Vorbedingung terminieren.

Denksportaufgabe zu Invarianten In einem Topf seien s schwarze und w weisse Kugeln und s + w > 0 (s 0, w 0) solange mindestens 2 Kugeln im Topf sind nimm zwei beliebige Kugeln heraus falls sie gleiche Farbe haben: wirf beide weg und lege eine neue schwarze Kugel in den Topf sonst lege die weisse Kugel zurück in den Topf und wirf die schwarze Kugel weg Welche Farbe hat die lätzte Kugel? Finden Sie Invarianten, die die Frage beantworten