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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 Teil X Programmverifikation STRUKTURIERTES PROGRAMMIEREN Vorlesung im Wintersemester 2018 Prof. E.G. Schukat-Talamazzini Stand: 1. August 2018 Robert W Floyd Sir Charles Antony Richard Hoare *1934 Spezifikation eines Algorithmus einer Funktion einer Prozedur Vorbedingungen Parameter Wertebereiche START Bindungen Verletzung? garbage in garbage out Ausnahme/Abbruch Nachbedingungen Resultate (Neben-) ZIEL wirkungen Terminierung? Ziel wird unbedingt erreicht Ziel wird ggf. erfüllt reellwertige Quadratwurzel ganzzahlige Quadratwurzel Vorbedingung x IR, x 0 x Z, x 0 Nachbedingung r 2 = x, r 0 r 2 x < (r + 1) 2 Diese VB/NB sind effektiv überprüfbar!

2 Zusicherungen und ihre Gültigkeit Logische wenn/dann-beschreibung für Zustandsübergänge Definition Ist S eine Anweisung und sind B und C boolesche Ausdrücke, so heißt B S C eine Zusicherung für S mit der Vorbedingung B und der Nachbedingung C. Die Zusicherung heißt gültig, wenn für alle Belegungen β mit definiertem Nachfolgezustand β = I [S] (β) gilt: { Bedingung B gilt vor S I β [B] = L I β [C] = L { Bedingung C gilt nach S "vorher" Vor/Nachbedingungen und Zustandsmengen Logische Äquivalenz: B {β I β [B] = L 2 4 β 5 Z β Zusicherung als Zustandsraumbeschreibung Die Nachbedingung C ist im Bild als Menge von Zuständen dargestellt. Für C sind die folgenden Mengen (Prädikate) gültige Vorbedingungen: {β 2, β 3, β 4, {β 1, β 2, β 3, β 4, {β 1, β 5, { ungültige Vorbedingungen: {β 1, β 2, β 3, β 4, β 5, β 6 gültige und terminierende Vorbedingungen: {β 2, β 3, β 5, {β 2 C Z "nachher" Partielle und totale Korrektheit Eigenschaft einer Anweisung relativ zur Spezifikation Definition Es seien S eine Programmanweisung und B V, B N die Vor- bzw. Nachbedingungen der Spezifikation. Dann heißt S partiell korrekt für die Spezifikation, wenn die Zusicherung B V S B N gültig ist. S heißt total korrekt, wenn zusätzlich gilt: I β [B V ] = L I [S] (β) Partiell K. Ergebnis NB richtig Total K. VB richtig Ergebnis Geschäftsmodell: Verkaufe nichtterminierende Programme!

3 Klassischer Korrektheitstest Aufgabenstellung y = f (x 1,..., x n ) mit Programmcode S und Spezifikation B V S B N Algorithmus 1 ARGUMENTKONFIGURATION Erzeuge nächste Argumentliste (ξ 1,..., ξ n ) 2 VORBEDINGUNGSTEST Wenn B V false, so 1 3 BERECHNUNG Berechne y = f (ξ 1,..., ξ n ) durch S-Ausführung 4 TERMINIERUNGSTEST Wenn y, so 1 5 NACHBEDINGUNGSTEST Wenn B N true, so 1 6 TESTENDE Melde Programm S ist nicht partiell korrekt Algorithmus Terminierung Mit Garantie nur bei endlichem Aufgabenbereich Falsifizierer Andernfalls Beendigung nur mit negativem Bescheid Totaler Test In Schritt 4 nach Schritt 6 statt 1 gehen Vom Test zur Verifikation Fakt Ist der Argumentebereich unendlich oder astronomisch groß, so muss die Korrektheit bewiesen statt getestet werden. Floydsche Methode Verifikation einfacher Laufschleifen Nachweis lediglich der partiellen Korrektheit Erweiterung auf einfache Flussdiagramme Definition (Schleifeninvariante) Ein Prädikat J heißt Schleifeninvariante der Wiederholungsanweisung while (B) S, wenn die Zusicherung J B S J gültig ist. Folgerung (Schleifenzusicherung) Es gilt dann auch die Zusicherung J while(b) S J B. Ganzzahlige Quadratwurzelberechnung Vorbedingung x 0 Nachbedingung r 2 x < (r + 1) 2 code int wurzel (int x) { int r = 0; int y = 1; int z = 1; while (y <= x) { r += 1; z += 2; y += z; return r; Schleifenverifikation Vor der Schleife J(x, 0, 1, 1) gilt, da 0 2 x aus B V folgt. Während der Schleife J B S J Aus J(x, r, y, z) und y x folgt J(x, r, y, z ) Nach der Schleife J B r 2 x < y = (r + 1) {{ 2 z = 2r + 1 B Schleifeninvariante J(x, r, y, z) (r 2 x) (y = (r + 1) 2 ) (z = 2r + 1) J Beweis der Schleifeninvariante Iterationsidee Erzeuge Tupel (r, y) mit y = (r + 1) 2 für alle r IN bis irgendwann einmal y > x gilt. Für den Nachfolger y von y gilt y = (r + 1) 2 = ((r + 1) + 1) 2 = y + 2 (r + 1) + 1, {{ z denn mit der Bezeichnung z = 2r + 1 gilt z = 2r + 1 = 2 (r + 1) + 1 = z + 2 Beweis. Zu zeigen: J(x, r, y, z ) (r 2 x ) {{ J 1 (y = (r + 1) 2 ) {{ J 2 J 1: Wegen (r + 1) 2 = y x (nach J 2 und B) gilt r 2 x. (z = 2r + 1) {{ J 3 J 2: y = y + z = y + z + 2 = (r + 1) 2 + (2r + 1) + 2 = (r + 2) 2 = (r + 1) 2 J 3: z = z + 2 = (2r + 1) + 2 = 2(r + 1) + 1 = 2r + 1

4 Zusicherungskalkül Von der kreativen Kopfarbeit zum automatischen Beweis Floyd-Beweis Verifikation beruht auf dem Erlassen von Zusicherungen und dem Beweis ihrer Gültigkeit diese ist jedoch durch eine Allaussage über Programmzustände definiert! Hoare-Kalkül Statt komplizierter semantischer Gültigkeitsbeweise werden syntaktische Regeln gecheckt diese Arbeit kann uns auch eine Maschine abnehmen. Hoares Methode Automatischer Gültigkeitsbeweis für eingestreute Zusicherungen Zusicherungsaxiome für elementare Anweisungen Ableitungsregeln für komplexe Anweisungen Abschwächungsregeln für Sequenzmontage Kalkül hilft nicht beim Auffinden geeigneter Zusicherungen! Zusicherungsaxiome Leere Anweisung nichtterminierende Anweisung Zuweisung Rechenregeln für Zusicherungen I Fallhöhenanpassung bei der Montage sukzessiver Zusicherungen LEERAKTION B { B ABBRUCH B throw err; false ZUWEISUNG B[E/x] x = E; B Zustandserhaltung Es ist β = I [S] (β) = β und damit gilt I β [B] = I β [B]. Terminiert niemals Es ist stets β = und die Implikation ist wegen falscher Prämisse immer trivialerweise erfüllt. Gültig, weil... aus β = β[e/x] auch I β [B[E/x]] = I β [B] folgt. 1: x-a=b y=a; x-y=b 2: x+1=a x=x+1; x=a ABSCHWÄCHUNGSREGEL Die B B, B S C, C C { Vorbedingung darf durch Nachbedingung Auf Grund der Voraussetzungen B S C { stärkere Prämisse schwächere Konsequenz ersetzt werden. Zuweisungsaxiom x 2 = a 2 x = x*x; x = a 2 Implikation I x = a x 2 = a 2 Implikation II x = a 2 x 0 gilt die doppelt abgeschwächte Zusicherungsaussage x = a x = x*x; x 0

5 Hintereinanderausführung zweier Anweisungen Nach der Anweisung ist vor der Anweisung KOMPOSITIONSREGEL B 1 S 1 C und C S 2 B 2 B 1 S 1 S 2 B 2 Anweisung I x + 1 = a x = x+1; x = a Anweisung II 2x = 2a x = 2*x; x = 2a Abschwächung (x = a) (2x = 2a) Anweisungsblöcke erhalten die Zusicherung ihres Innenlebens, falls keine Namenskonflikte auftreten BLOCKBILDUNGSREGEL Falls x nicht in B 1 vorkommt: Positivbeispiel B 1 S B 2 B 1 { type x=e; S B 2 a 0 x = a; y = 2*x; y 0 a 0 { double x; x = a; y = 2*x; y 0 Negativbeispiel Resultat x + 1 = a x = x+1; x = 2*x; x = 2a x 0 y = 2*x; y 0 x 0 { double x=6-9; y = 2*x; y 0 Kontrollverzweigung erhält gemeinsame VB/NB ihrer Anweisungszweige und sogar mehr als das! BEDINGTE ANWEISUNG Falls boolescher Ausdruck C effektiv auswertbar (I β [C] ): C B 1 S 1 B 2 und C B 1 S 2 B 2 B 1 if (C) S 1 else S 2 B 2 Zweig I x > 0 x = a y = +x; x = a y = a Zweig II x 0 x = a y = -x; x = a y = a Satz (Verträglichkeit) Rechenregeln für Zusicherungen II Für jede Anweisung S und alle booleschen Ausdrücke B i, C i gelten die beiden Axiome B 1 S true und false S B 2 sowie die Verträglichkeitsregeln B 1 S C 1 und B 2 S C 2 B 1 B 2 S C 1 C 2 für die logische Konjunktion und Resultat x = a if (x>0) y = +x; else y = -x; x = a y = a für die logische Disjunktion. B 1 S C 1 und B 2 S C 2 B 1 B 2 S C 1 C 2

6 Beweis. Zum Beweis der Konjunktionsformel gehen wir von Zuständen β und β = I [S] (β) aus und setzen die Vorbedingung als wahr voraus: I β [B 1 B 2 ] = L Nach Definition der Interpretationsfunktion folgt daraus I β [B 1 ] = I β [B 2 ] = L und auf Grundlage der gegebenen Zusicherungen des Zählers gilt I β [C 1 ] = I β [C 2 ] = L. Erneute Verwendung des Aufbaus der Interpretation liefert schließlich I β [C 1 C 2 ] = L. Rechenregeln für Zusicherungen III Folgerung (Verstärkungsregeln) Für die Konjunktion gilt und für die Disjunktion gilt Bemerkung Vergleichbare Regeln wie B S C 1 und B S C 2 B S C 1 C 2 B 1 S C und B 2 S C B 1 B 2 S C. (Die Disjunktionsformel wird entsprechend bewiesen.) B S C B S C oder B S C C S B für die Negation sind jedoch keineswegs herleitbar! Zusicherung für die Wiederholungsanweisung Wie bei Floyd nur für die partielle Korrektheit SCHLEIFENREGEL while (x > 0) { x = x-1; y = y+1; J B S J J while (B) S J B (Schleife mit eingestreuten Zusicherungen) // «x+y = a» J // «x+y = a & x > 0» J & B // «x+y = a» Abschwächung // «x+y = a-1» Zuweisungsregel // «x+y = a» Zuweisungsregel // «x+y = a & x <= 0» J & -B (Methode zur ganzzahligen Division) int divide (int x, int y) { // «true» (Vb) // «x/y = x/y + 0» int r = x; // «x/y = r/y + 0» int q = 0; // «x/y = r/y + q» (J) while (r >= y) { // «r >= y & x/y = r/y + q» (B&J) // «r-y >= 0 & x/y = (r-y)/y q» r = r-y; // «r >= 0 & x/y = r/y q» // «r >= 0 & x/y = r/y + q+1» q = q+1; // «r >= 0 & x/y = r/y + q» // «x/y = r/y + q» (J) // «r < y & x/y = r/y + q» (-B&J) // «x/y = 0 + q» // «x/y = q» (Nb) return q;

7 Totale Korrektheit von Wiederholungsanweisungen Terminierungsfragen treten nur in Schleifen & Rekursionen auf Satz (Terminierungsregel) Zur abweisenden Schleife while(b) S existiere eine Schleifeninvariante J, ein ganzzahliger Terminierungsausdruck E sowie ein frischer Bezeichner int i mit: 1. C J 2. E 0 J B 3. E = i + 1 B J S E i J Dann terminiert die Schleifenausführung unter der Vorbedingung C, sofern wenigstens alle S-Anweisungen ebenfalls terminieren. Bemerkung automatisierbares Beweisverfahren für die Terminierungseigenschaft geeignete Invariante geeigneter Terminierungsausdruck Fixpunkttechniken maschinelles Beweisen eine Vorbedingung Eine Frage der richtigen Strategie Vorwärtsanalyse viele viele Vorbedingungen Nachbedingungen Rückwärtsanalyse Verifikationsziel Q: Programm S, VB & NB A: Gültigkeit von B V S B N A: (u.u.: Terminierung) eine Nachbedingung Problematik Zusicherungskalkül arbeitet bottom-up (innen außen) Die schwächste Vorbedingung Logik und Mengenlehre Definiere die Zustandsmengen def = {β I β [B] = L. Dann gilt: Z B B C Z B Z C Homomorphien Z true = Z Z false = Z B = Z \ Z B Z B C = Z B Z C Z B C = Z B Z C Mengen & Formeln bilden boolesche Algebra & Halbordnung { { größer schwächer Je die Menge Z kleiner B, desto die Aussage B. stärker Nicht jede Aussagenmenge besitzt ein schwächstes Element. Definition Der boolesche Ausdruck B aus B S C heißt schwächste Vorbedingung von C für S (kürzer: B = wk (C S)), wenn B S C B B für alle B.

8 : schwächste VB mit/ohne Terminierung Rechenregeln des WP-Kalküls "vorher" C "nachher" Satz Die Abbildung wk ( ) ist monoton bezüglich : C 1 C 2 wk (C 1 S) wk (C 2 S) Die Abbildung wk ( ) ist verträglich mit der Konjunktion : Mit Terminierungsgarantie (I [S]) 1 (C) = {β 2, β 3, β 4, β 5 Ohne Terminierungsgarantie (I [S]) 1 (C { ) = {β 2, β 3, β 4, β 5 {β 1 β 5 Z β Z Existiert wk (S C)? (I [S]) 1 (C) versus {B B S C versus {B B S C wk (C 1 C 2 S) wk (C 1 S) wk (C 2 S) Die Abbildung wk ( ) ist verträglich mit der Disjunktion : wk (C 1 C 2 S) wk (C 1 S) wk (C 2 S) Wunder sind ausgeschlossen jedenfalls sofern S terminiert: wk (false S) false Beweis. Wunder Jede andere VB als B=false besitzt irgendein β mit I β [B] = L, und dessen S-Nachfolgezustand β wird ja kaum der NB C=false genügen. Wenn S unter Umständen nicht terminiert, ist diese Argumentation gegenstandslos. Monotonie Es ist ja wk (C i S) = (I [S]) 1 (C i ). Die größere Menge C 2 wird aber mindestens so viele Urbilder (also Zustände β mit I [S] (β) C 2 ) besitzen wie die kleinere C 1. Konjunktion Die Äquivalenz beider Seiten ergibt sich aus der Hinrichtung plus der Rückrichtung, die ganz einfach aus der Monotonie folgt. Disjunktion (wie Konjunktion, aber nur für deterministische Maschinenmodelle) S = Münze werfen C 1 = Zahl erscheint gilt einerseits C 2 = Kopf erscheint Gegenbeispiel Mit wk (C 1 S) wk (C 2 S) false doch andererseits wk (C 1 C 2 S) wk (true S) true Berechnungsformeln des WP-Kalküls Vollautomatisches Herunterrasseln bei gegebener Nachbedingung LEERAKTION wk (C {) = C ZUWEISUNG wk (C x=e;) = C[E/x] ABBRUCH wk (false throw err) = true KOMPOSITION wk (C S 1 S 2 ) = wk ( wk (C S 2 ) S 1 ) VERZWEIGUNG wk (C if (B) S 1 else S 2 ) = (B wk (C S 1 )) ( B wk (C S 2 )) WIEDERHOLUNG V 0 (C) = C B V k+1 (C) = wk (V k (C) S) (C B) wk (C while (B) S) = k 0 : V k (C)

9 (10) 1. Eine Zusicherung dient der Spezifikation der Funktionsweise einer Anweisung mittels Vor- und Nachbedingungen. 2. Die partielle bzw. totale Korrektheit garantiert die Richtigkeit (und ggf. die Existenz) eines Resultats. 3. Ein Programmtest ersetzt die -verifikation nur bei endlicher Aufgabenstellung oder im Falle eines Misserfolgs. 4. Die Floyd-Invariante dient dem Nachweis partieller Korrektheit von Schleifenkonstrukten. 5. Der Hoare-Kalkül verfügt über Axiome und Regeln für die Zusicherungsprüfung elementarer bzw. komplexer Anweisungen. 6. Grundsätzlich erlaubt Hoare die Verifikation beliebiger imperativer Programme und besitzt eingeschränkte Mechanismen (Halteproblem!) zum Nachweis totaler Korrektheit. 7. Dijkstras Weakest-Precondition-Kalkül berechnet optimale Vorbedingungen zu einer Zielkonfiguration aus Anweisung und Resultatvorgabe. 8. Durch sukzessive Rückwärtsanalyse, beginnend bei der Spezifikations-NB, kann so der Verifikationsprozess automatisiert werden. 9. WP beruht auf der Annahme deterministischer Berechnungsschritte.

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

Teil X. Programmverifikation. Spezifikation eines Algorithmus einer Funktion einer Prozedur. Vorbedingungen Parameter Wertebereiche Teil X Programmverifikation STRUKTURIERTES PROGRAMMIEREN Vorlesung im Wintersemester 2015 Prof. E.G. Schukat-Talamazzini Stand: 24. Juli 2015 Robert W Floyd 1936 2001 Sir Charles Antony Richard Hoare *1934

Mehr

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

Korrektheit und Hoare-Kalkül für Imperative Programme Korrektheit und Hoare-Kalkül für Imperative Programme Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 Ziele Partielle und totale Korrektheit kennen lernen Die Regeln des Hoare-Kalkül

Mehr

Einführung in die Programmiertechnik

Einführung in die Programmiertechnik Einführung in die Programmiertechnik Verifikation 2 Vermeidung von Fehlern Verwendung geeigneter Werkzeuge Auswahl einer dem Problem angemessenen Programmiersprache Verwendung eines zuverlässigen Compilers

Mehr

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

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel Inhalt Hoare-Kalkül Formale Verifizierung Hoare-Kalkül while-sprache Terminierung Partielle / totale Korrektheit 4.0 Hoare-Kalkül entwickelt von C.A.R. (Tony) Hoare (britischer Informatiker), 1969 formales

Mehr

Korrektheit imperativer Algorithmen

Korrektheit imperativer Algorithmen LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Abschnitt 9 Korrektheit imperativer Algorithmen Skript zur Vorlesung Einführung in die Programmierung im Wintersemester

Mehr

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

n 1. Erste Schritte n 2. Einfache Datentypen n 3. Anweisungen und Kontrollstrukturen n 4. Verifikation n 5. Reihungen (Arrays) n 1. Erste Schritte n 2. Einfache Datentypen n 3. Anweisungen und Kontrollstrukturen n 4. Verifikation n 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation n Spezifikation: Angabe, was ein

Mehr

! 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 - ! 1. Erste Schritte! 2. Einfache Datentypen! 3. Anweisungen und Kontrollstrukturen! 4. Verifikation! 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation! Spezifikation: Angabe, was ein Programm

Mehr

WS 05/06 mod Verifikation

WS 05/06 mod Verifikation 3.3 Verifikation WS 05/06 mod 351 Verifikation ist der Beweis der Korrektheit eines Algorithmus relativ zu seiner Spezifikation. Die Aussagen gelten für alle Ausführungen des Algorithmus. Sie werden statisch

Mehr

Abschnitt 11: Korrektheit von imperativen Programmen

Abschnitt 11: Korrektheit von imperativen Programmen Abschnitt 11: Korrektheit von imperativen Programmen 11. Korrektheit von imperativen Programmen 11.1 11.2Testen der Korrektheit in Java Peer Kröger (LMU München) in die Programmierung WS 16/17 931 / 961

Mehr

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

Algorithmen und Programmieren II Programmverifikation {V} P {N} Algorithmen und Programmieren II Programmverifikation {V} P {N} SS 2012 Prof. Dr. Margarita Esponda ALP II: Margarita Esponda, 11. Vorlesung, 22.5.2012 1 Assertions oder Zusicherungen Das Konzept der Zusicherungen

Mehr

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

Informatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 - Informatik I - Programmierung Globalübung 11.11.2003 Hoare-Kalkül Thomas Weiler Fachgruppe Informatik RWTH Aachen T. Weiler, RWTH Aachen - 1 - Ariane 5 Die Ariane 5 ist das jüngste Modell der Trägerrakete

Mehr

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 - 1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation Spezifikation: Angabe, was ein Programm tun

Mehr

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

Formale Systeme Logik: Verifikation von Aussagen über Algorithmen. Ana Sokolova statt Robert Elsässer 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

Mehr

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 - 1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation Spezifikation: Angabe, was ein Programm tun

Mehr

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

Problem: Gegeben Spezifikation (P,Q) und Implementierung S Gesucht formaler (automatisierbarer?) Beweis, dass S (P,Q) erfüllt. Formale Verifikation von Algorithmen 1.3 Verifikation Problem: Gegeben Spezifikation (P,Q) und Implementierung S Gesucht formaler (automatisierbarer?) Beweis, dass S (P,Q) erfüllt. Bisher nicht möglich

Mehr

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

C. A. R. Hoare. An Axiomatic Basis for Computer Programming. Nicolas Schelp. Proseminar Assertions SS 2007 C. A. R. Hoare An Axiomatic Basis for Computer Programming Nicolas Schelp Proseminar Assertions SS 2007 Inhalt Motivation Kurze Biographie Der Hoare-Kalkül Axiome und Inferenzregeln des Hoare-Kalküls Die

Mehr

5.3 Korrektheit und Verifikation

5.3 Korrektheit und Verifikation 5.3 Korrektheit und Verifikation Korrektheit bedeutet, dass ein Algorithmus oder ein Programm das in der Spezifikation beschriebene Problem für beliebige Eingabedaten korrekt löst. Die Korrektheit kann

Mehr

5.3 Korrektheit und Verifikation

5.3 Korrektheit und Verifikation 5.3 Korrektheit und Verifikation Korrektheit bedeutet, dass ein Algorithmus oder ein Programm das in der Spezifikation beschriebene Problem für beliebige Eingabedaten korrekt löst. Die Korrektheit kann

Mehr

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

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 Zusammenfassung Zusammenfassung der letzten LVA Einführung in die Theoretische Informatik Christina Kohl Alexander Maringele Georg Moser Michael Schaper Manuel Schneckenreither Eine Registermaschine (RM)

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität

Mehr

4 Spezifikation und Verifikation

4 Spezifikation und Verifikation 4 Spezifikation und Verifikation Program testing can at best show the presence of errors, but never their absence. Dijkstra, http://www.cs.utexas.edu/users/ewd Beware of bugs in the above code; I have

Mehr

4.3 Verifikation von Aussagen über Algorithmen

4.3 Verifikation von Aussagen über Algorithmen 4.3 Verifikation von Aussagen über Algorithmen Hoaresche Logik: Kalkül zum Beweisen von Aussagen über Algorithmen und Programme, Programm-Verifikation, [C.A.R. Hoare, 1969]. Mod - 4.51 Statische Aussagen

Mehr

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

Beispiel 1 zur Verifikation eines bedingten Anweisung. Hoare-Regel für die bedingte Anweisung. else Hoare-Regel für die bedingte Anweisung I1 : I2 : {B P } S 1 {Q} { nicht B P } {Q} {P } if (B) then S 1 {Q} {B P } S 1 {Q} { nicht B P } S 2 {Q} {P } if (B) then S 1 else S 2 {Q} In der Regel für bedingte

Mehr

Verifikation von Programmen

Verifikation von Programmen http://scam-trap.com/i/stophacking1.gif Verifikation von Programmen OOPM, Ralf Lämmel 380 Was tun? (Mit den Spezifikationen) Dokumentation Überprüfen der Bedingungen zur Laufzeit Verifizieren der Bedingungen

Mehr

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

9.1 Grundsätzliches Fehlertoleranz vs. Fehlerintoleranz. Testen vs. Verifikation Testen. Verifikation und Test in der SW-Entwicklung Verlässliche Systeme Wintersemester 2016/2017 Fehlertoleranz vs. Fehlerintoleranz Verlässliche Systeme Bisher haben wir Ausfälle der Hardware betrachtet Jetzt: Betrachten Software 9. Kapitel Verifikation

Mehr

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

Verschiedene Fehlerarten. Verifikation. Arten der Qualitätssicherung. Verifikation. Zusicherungen (Assertions) Beispiel für Zusicherungen Verifikation Weitere gute Gründe für Verifikation: Juni 1996: Erster Start der Ariane 5 akete Gewinn durch Nichtverifikation eines Codestücks: ein paar $ Verlust durch Selbstzerstörung der akete: ca. $

Mehr

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

Beispiel 1 zur Verifikation eines bedingten Anweisung. Hoare-Regel für die bedingte Anweisung. Beispiel 2 zur Verifikation eines bedingten Anweisung Hoare-Regel für die bedingte Anweisung I1 : I2 : {B und P } S 1 {Q} { nicht B und P } {Q} {P } if (B) then S 1 {Q} {B und P } S 1 {Q} { nicht B und P } S 2 {Q} {P } if (B) then S 1 S 2 {Q} In der Regel

Mehr

Verifikation von Algorithmen. OOPM, Ralf Lämmel

Verifikation von Algorithmen. OOPM, Ralf Lämmel Verifikation von Algorithmen OOPM, Ralf Lämmel Wiederholung: Was tun? (Mit den Spezifikationen) Dokumentation Überprüfen der Bedingungen zur Laufzeit Verifizieren der Bedingungen vor Laufzeit Ableitung

Mehr

Einführung in die Programmierung I Systematisches Programmieren. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I Systematisches Programmieren. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 10.0 Systematisches Programmieren Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013 and Thomas Gross 2016 All rights reserved. Uebersicht

Mehr

Partielle Korrektheit von Programmen. Beispiele an der Tafel

Partielle Korrektheit von Programmen. Beispiele an der Tafel Partielle Korrektheit von Programmen Beispiele an der Tafel ALP II: Margarita Esponda, 12. Vorlesung, 24.5.2012 36 Beispiel: Partielle Korrektheit von Programmen Nehmen wir an, wir möchten beweisen, dass

Mehr

Übung zur Vorlesung Programmierung

Übung zur Vorlesung Programmierung RWTH Aachen Lehrgebiet Theoretische Informatik Frohn Reidl Rossmanith Sánchez Ströder WS 013/14 Übungsblatt 4 18.11.013 Übung zur Vorlesung Programmierung Aufgabe T8 Ein Stack ist eine Datenstruktur, die

Mehr

Informatik II - Tutorium

Informatik II - Tutorium Sommersemester 2008 http://info2tut.blogspot.com 29. April 2007 Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Quellennachweis & Dank an: Joachim Wilke, Susanne Dinkler, Bernhard Müller,

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik 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

Mehr

Algorithmen & Programmierung. Logik

Algorithmen & Programmierung. Logik Algorithmen & Programmierung Logik Aussagenlogik Gegenstand der Untersuchung Es werden Verknüpfungen zwischen Aussagen untersucht. Aussagen Was eine Aussage ist, wird nicht betrachtet, aber jede Aussage

Mehr

Mathematische Beweise und Symbolische Tests

Mathematische Beweise und Symbolische Tests Mathematische Beweise und Symbolische Tests Arne Meier Universität Hannover Institut für praktische Informatik Fachgebiet Software Engineering Seminar Werkzeuggestützte Softwareprüfungen 19. April 2006

Mehr

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

Ein Beispielbeweis zur Verifikation des Programms zur Division mit Rest auf der Basis der Hoare-Regeln Ein Beispielbeweis zur Verifikation des Programms zur Division mit Rest auf der Basis der Hoare-Regeln Ralf Lämmel 24. Dezember 2014 1 Hoare-Regeln Im folgenden müssen wie folgende Hoare-Regeln benutzen:

Mehr

Algorithmen und Datenstrukturen Korrektheit von Algorithmen

Algorithmen und Datenstrukturen Korrektheit von Algorithmen Algorithmen und Datenstrukturen Korrektheit von Algorithmen Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Lernziele der Vorlesung Algorithmen Sortieren,

Mehr

Statische Codeanalyse

Statische Codeanalyse Statische Codeanalyse SQMT WS 17/18 Pierre Kurzer, Serkan Topaloglu, Sebastian Voigt Gliederung Einführung: Was ist Statische Codeanalyse? Was kann alles überprüft werden und wofür? Was konnte Lint? Welche

Mehr

Resolutionskalkül. wird t als eine Menge K t von Klauseln geschrieben, welche die einzelnen Maxterme repräsentieren:

Resolutionskalkül. wird t als eine Menge K t von Klauseln geschrieben, welche die einzelnen Maxterme repräsentieren: Resolutionskalkül Ein Kalkül ist eine Kollektion von syntaktischen Umformungsregeln, die unter gegebenen Voraussetzungen aus bereits vorhandenen Formeln neue Formeln erzeugen. Der Resolutionskalkül besteht

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik FH Wedel Prof. Dr. Sebastian Iwanowski GTI33 Folie 1 Grundlagen der Theoretischen Informatik Sebastian Iwanowski FH Wedel Kap. 3: Verifikationstechniken Teil 3: FH Wedel Prof. Dr. Sebastian Iwanowski GTI33

Mehr

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 Zusammenfassung Zusammenfassung der letzten LVA Einführung in die Theoretische Informatik Wenn das Kind schreit, hat es Hunger Das Kind schreit Also, hat das Kind Hunger Christina Kohl Alexander Maringele

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Sascha Böhme, Lars Noschinski Sommersemester 2011 Lösungsblatt 9 25. Juli 2011 Einführung in die Theoretische Informatik

Mehr

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier Diskrete Strukturen und Logik WiSe 2007/08 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Diskrete Strukturen und Logik Gesamtübersicht Organisatorisches Einführung Logik & Mengenlehre

Mehr

Formale Programmverifikation. Referentin: Kirsten Hradek

Formale Programmverifikation. Referentin: Kirsten Hradek Formale Programmverifikation Referentin: Kirsten Hradek Formale Programmverifikation 2 Formale Programmverifikation Einführung/Motivation 2 Formale Programmverifikation Einführung/Motivation Softwareverifikation

Mehr

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 Zusammenfassung Zusammenfassung der letzten LVA Einführung in die Theoretische Informatik Christina Kohl Alexander Maringele Georg Moser Michael Schaper Manuel Schneckenreither Institut für Informatik

Mehr

Kapitel 4: Formale Verifikation

Kapitel 4: Formale Verifikation Kapitel 4: Formale Verifikation Inhalt 4.1 Grundlagen 4.2 Verifikation auf axiomatischer Basis 4.3 Verifikation einzelner Eigenschaften 4.4 Stärken und Schwächen formaler Verifikation Schlüsselbegriffe

Mehr

Tutorium: Diskrete Mathematik

Tutorium: Diskrete Mathematik Tutorium: Diskrete Mathematik Vorbereitung der Bonusklausur am 01.12.2017 (Teil 1) 22. November 2017 Steven Köhler mathe@stevenkoehler.de mathe.stevenkoehler.de 2 c 2017 Steven Köhler 22. November 2017

Mehr

Zentralübung: Schleifeninvarianten

Zentralübung: Schleifeninvarianten Zentralübung: Schleifeninvarianten zur VL. Funktionale Programmierung und Verifikation (EIDI2) M.Sc. Nico Hartmann 24. November 2017 1/134 Inhalt Warum Schleifeninvarianten? Invarianten wählen Die Besten

Mehr

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

Definition (Modus Ponens) Wenn A, dann B. A gilt Also, gilt B Zusammenfassung der letzten LVA Wenn das Kind schreit, hat es Hunger Das Kind schreit Also, hat das Kind Hunger Fakt Korrektheit dieser Schlussfigur ist unabhängig von den konkreten Aussagen Einführung

Mehr

Tableaukalkül für Aussagenlogik

Tableaukalkül für Aussagenlogik Tableaukalkül für Aussagenlogik Tableau: Test einer Formel auf Widersprüchlichkeit Fallunterscheidung baumförmig organisiert Keine Normalisierung, d.h. alle Formeln sind erlaubt Struktur der Formel wird

Mehr

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte Elementare Schritte Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen Zuweisungsoperation von fundamentaler Bedeutung Zuweisungsoperator In Pascal := In

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag,

Mehr

Definition der Hilfsprädikate

Definition der Hilfsprädikate Denition der Hilfsprädikate fct sorted = (seq nat s) bool: if #s < 2 then true else rst(s) rst(rest(s)) sorted(rest(s)) a s = ( nat k: k#a = k#s) mit k# = 0 k# j s = if k == j then 1+ k#s else k#s 1 Annotierte

Mehr

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

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen? Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 1 Einführung Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Grundlagen von Algorithmen

Mehr

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 1 Einführung 2 Typ-0- und Typ-1-Sprachen 3 Berechnungsmodelle 4 Unentscheidbarkeit 5 Unentscheidbare Probleme 6 Komplexitätstheorie WS 11/12 155 Überblick Zunächst einmal definieren wir formal den Begriff

Mehr

Semantik von Programmiersprachen SS 2017

Semantik von Programmiersprachen SS 2017 Lehrstuhl für Programmierparadigmen Denis Lohner Sebastian Ullrich denis.lohner@kit.edu sebastian.ullrich@kit.edu Semantik von Programmiersprachen SS 2017 http://pp.ipd.kit.edu/lehre/ss2017/semantik Lösungen

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

Kurs 1612 Konzepte imperativer Programmierung Musterlösung zur Nachklausur am

Kurs 1612 Konzepte imperativer Programmierung Musterlösung zur Nachklausur am 1 Aufgabe 1 a) Da Effizienzbetrachtungen bei der Lösung der Aufgabe keine Rolle spielen, wählen wir einen einfachen, aber ineffizienten Algorithmus mit zwei ineinander verschachtelten for-schleifen. Dadiefor-Schleifen

Mehr

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

Theoretische Informatik und Logik Übungsblatt 4 (SS 2017) Lösungen Theoretische Informatik und Logik Übungsblatt 4 (SS 2017) en Aufgabe 4.1 Für jede der folge Formeln ist folges zu tun: Wenn die Formel gültig oder unerfüllbar ist, so beweisen Sie dies mit dem Tableau-Kalkül.

Mehr

Kapitel 4. Kontrollstrukturen

Kapitel 4. Kontrollstrukturen Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen

Mehr

Kapitel 6. Programme mit Schleifen. Wir betrachten jetzt eine einfache imperative Programmiersprache IMP. IMP verfügt

Kapitel 6. Programme mit Schleifen. Wir betrachten jetzt eine einfache imperative Programmiersprache IMP. IMP verfügt Kapitel 6 Programme mit Schleifen Wir betrachten jetzt eine einfache imperative Programmiersprache IMP. IMP verfügt über zuweisbare Variablen, Konditionale und Schleifen, hat aber keine Prozeduren. IMP

Mehr

Formale Methoden II. Gerhard Jäger. SS 2005 Universität Bielefeld. Teil 3, 12. Mai Formale Methoden II p.1/23

Formale Methoden II. Gerhard Jäger. SS 2005 Universität Bielefeld. Teil 3, 12. Mai Formale Methoden II p.1/23 Formale Methoden II SS 2005 Universität Bielefeld Teil 3, 12. Mai 2005 Gerhard Jäger Formale Methoden II p.1/23 Logische Folgerung Definition 6 (Folgerung) Eine Formel ϕ folgt logisch aus einer Menge von

Mehr

Deduktion in der Aussagenlogik. Semantische Folgerungsbeziehung. Zusammenhang zwischen semantischer und syntaktischer Folgerung

Deduktion in der Aussagenlogik. Semantische Folgerungsbeziehung. Zusammenhang zwischen semantischer und syntaktischer Folgerung Deduktion in der Aussagenlogik Menge von Ausdrücken der Aussagenlogik beschreibt einen bestimmten Sachverhalt, eine "Theorie" des Anwendungsbereiches Was folgt logisch aus dieser Theorie? Deduktion: aus

Mehr

Resolutionsalgorithmus

Resolutionsalgorithmus 112 Resolutionskalkül Mit dem Begriff Kalkül bezeichnet man eine Menge von syntaktischen Umformungsregeln, mit denen man semantische Eigenschaften der Eingabeformel herleiten kann. Für den Resolutionskalkül:

Mehr

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

Logik. Logik. Vorkurs Informatik Theoretischer Teil WS 2013/ September Vorkurs Informatik - Theorie - WS2013/14 Logik Logik Vorkurs Informatik Theoretischer Teil WS 2013/14 30. September 2013 Logik > Logik > logische Aussagen Logik Logik > Logik > logische Aussagen Motivation Logik spielt in der Informatik eine

Mehr

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

Logik. Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block Aussage Logik Die Logik ist in der Programmierung sehr wichtig. Sie hilft z.b. bei der systematischen Behandlung von Verzweigungen und Schleifen. z.b. if (X Y und Y>0) then Oder beim Beweis, dass ein Algorithmus

Mehr

Deduktion in der Aussagenlogik

Deduktion in der Aussagenlogik Deduktion in der Aussagenlogik Menge von Ausdrücken der Aussagenlogik beschreibt einen bestimmten Sachverhalt, eine "Theorie" des Anwendungsbereiches. Was folgt logisch aus dieser Theorie? Deduktion: aus

Mehr

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 1 Einführung 2 Typ-0- und Typ-1-Sprachen 3 Berechnungsmodelle 4 Unentscheidbarkeit 5 Unentscheidbare Probleme 6 Komplexitätstheorie 139 Unentscheidbarkeit Überblick Zunächst einmal definieren wir formal

Mehr

Kapitel 4. Kontrollstrukturen

Kapitel 4. Kontrollstrukturen Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen

Mehr

Verifizierende Testverfahren

Verifizierende Testverfahren Spezifikation Um einen Algorithmus zu schreiben, muss das zu lösende Problem genau beschrieben sein. Eine Spezifikation ist Verifizierende Testverfahren vollständig, wenn alle Anforderungen/alle relevanten

Mehr

3. Grundanweisungen in Java

3. Grundanweisungen in Java 3. Grundanweisungen in Java Die Grundanweisungen entsprechen den Prinzipien der strukturierten Programmierung 1. Zuweisung 2. Verzweigungen 3. Wiederholungen 4. Anweisungsfolge (Sequenz) Die Anweisungen

Mehr

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

Formale Verifikation. KV Software Engineering Prof. Dr. Martin Glinz. Kapitel 4. Universität Zürich Institut für Informatik KV Software Engineering Prof. Dr. Martin Glinz Kapitel 4 Formale Verifikation Universität Zürich Institut für Informatik 2004, 2005 by Martin Glinz. Alle Rechte vorbehalten. Reproduktion, Speicherung und

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Einführung in die Theoretische Informatik Woche 4 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Zusammenfassung Zusammenfassung der letzten LV Modus Ponens A B B A MP Axiome für

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 14: Der Begriff des Algorithmus (einige grundlegende Aspekte) Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der

Mehr

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

3. Klausur Einführung in die Theoretische Informatik Seite 1 von Welches der folgenden klassischen Probleme der Informatik ist entscheidbar? 3. Klausur Einführung in die Theoretische Informatik Seite 1 von 14 1. Welches der folgenden klassischen Probleme der Informatik ist entscheidbar? A. Gegeben eine kontextfreie Grammatik G. Gibt es ein

Mehr

3. Der größte gemeinsame Teiler

3. Der größte gemeinsame Teiler Chr.Nelius: Zahlentheorie (SoSe 2016) 18 3. Der größte gemeinsame Teiler (3.1) DEF: a und b seien beliebige ganze Zahlen. a) Eine ganze Zahl t heißt gemeinsamer Teiler von a und b, wenn gilt t a und t

Mehr

Logik Vorlesung 4: Horn-Logik und Kompaktheit

Logik Vorlesung 4: Horn-Logik und Kompaktheit Logik Vorlesung 4: Horn-Logik und Kompaktheit Andreas Maletti 14. November 2014 Überblick Inhalt 1 Motivation und mathematische Grundlagen 2 Aussagenlogik Syntax und Semantik Äquivalenz und Normalformen

Mehr

Grundlagen der Programmierung 2. Operationale Semantik

Grundlagen der Programmierung 2. Operationale Semantik Grundlagen der Programmierung 2 Operationale Semantik Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 29. April 2009 Semantik von Programmiersprachen Semantik = Bedeutung

Mehr

Java Anweisungen und Ablaufsteuerung

Java Anweisungen und Ablaufsteuerung Informatik 1 für Nebenfachstudierende Grundmodul Java Anweisungen und Ablaufsteuerung Kai-Steffen Hielscher Folienversion: 24. Januar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht

Mehr

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

Technische Universität München SoSe 2015 Institut für Informatik I Mai 2015 Dr. Tobias Lasser. Aufgabe 1 Rechnen mit Landau-Symbolen Technische Universität München SoSe 2015 Institut für Informatik I-16 27. Mai 2015 Dr. Tobias Lasser Lösungsvorschläge zur Musterklausur zu Algorithmen und Datenstrukturen Aufgabe 1 Rechnen mit Landau-Symbolen

Mehr

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

Was bisher geschah Modellierung in Logiken: klassische Prädikatenlogik FOL(Σ, X) Spezialfall klassische Aussagenlogik AL(P) Was bisher geschah Modellierung in Logiken: klassische Prädikatenlogik FOL(Σ, X) Spezialfall klassische Aussagenlogik AL(P) Syntax Semantik Signatur, Variablen Terme (induktive Definition, Baumform) Atome

Mehr

Lösungen zu Kapitel 1

Lösungen zu Kapitel 1 Lösungen zu Kapitel 1 Lösung zu Aufgabe 1: Wir müssen zeigen, dass (φ ψ) ψ φ eine Tautologie ist. Dies erkennen wir aus der folgenden Wahrheitstabelle. φ ψ φ ψ ψ (φ ψ) ψ φ (φ ψ) ψ φ f f w w w w w f w w

Mehr

Einführung in die mathematische Logik

Einführung in die mathematische Logik Prof. Dr. H. Brenner Osnabrück SS 2014 Einführung in die mathematische Logik Vorlesung 3 Tautologien In der letzten Vorlesung haben wir erklärt, wie man ausgehend von einer Wahrheitsbelegung λ der Aussagevariablen

Mehr

5. Algorithmen. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

5. Algorithmen. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 5. Algorithmen K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 21. Okt. 2015 1. Berechne 2 n. Zu lösende Probleme 2. Berechne die Fakultät einer nat. Zahl: n! = 1 * 2 *... n 3. Entscheide,

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Dr. Werner Meixner, Dr. Alexander Krauss Sommersemester 2010 Lösungsblatt 11 15. Juli 2010 Einführung in die Theoretische

Mehr

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

Tutoraufgabe 1 (Casting): Programmierung WS17/18 Übungsblatt 2 (Abgabe ) Allgemeine Hinweise: Prof. aa Dr. J. Giesl Programmierung WS17/18 M. Hark, J. Hensel, D. Korzeniewski Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet

Mehr

Turing-Maschinen: Ein abstrakes Maschinenmodell

Turing-Maschinen: Ein abstrakes Maschinenmodell Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar? Intuitiv: Wenn es einen Algorithmus gibt, der sie berechnet! Was heißt, eine Elementaroperation ist maschinell ausführbar? Was verstehen

Mehr

Aussagenlogik: Syntax von Aussagen

Aussagenlogik: Syntax von Aussagen Aussagenlogik: Syntax von Aussagen A ::= X (A A) (A A) ( A) (A A) (A A) 0 1 Prioritätsreihenfolge :,,,,. A B: Konjunktion (Verundung). A B: Disjunktion (Veroderung). A B: Implikation. A B: Äquivalenz.

Mehr

Logik Vorlesung 2: Semantik der Aussagenlogik

Logik Vorlesung 2: Semantik der Aussagenlogik Logik Vorlesung 2: Semantik der Aussagenlogik Andreas Maletti 24. Oktober 2014 Überblick Inhalt 1 Motivation und mathematische Grundlagen 2 Aussagenlogik Syntax und Semantik Äquivalenz und Normalformen

Mehr

Philosophie des Intuitionismus und sein Einfluß auf die Informatik

Philosophie des Intuitionismus und sein Einfluß auf die Informatik Philosophie des Intuitionismus und sein Einfluß auf die Informatik Christoph Kreitz Was ist Intuitionismus? Unterschiede zur klassischen Mathematik Historische Entwicklung Bezüge zur Informatik Ähnlichkeit

Mehr

Logik Vorlesung 2: Semantik der Aussagenlogik

Logik Vorlesung 2: Semantik der Aussagenlogik Logik Vorlesung 2: Semantik der Aussagenlogik Andreas Maletti 24. Oktober 2014 Überblick Inhalt 1 Motivation und mathematische Grundlagen 2 Aussagenlogik Syntax und Semantik Äquivalenz und Normalformen

Mehr

Q.E.D. Algorithmen und Datenstrukturen Wintersemester 2018/2019 Übung#2, Christian Rieck, Arne Schmidt

Q.E.D. Algorithmen und Datenstrukturen Wintersemester 2018/2019 Übung#2, Christian Rieck, Arne Schmidt Institute of Operating Systems and Computer Networks Algorithms Group Q.E.D. Algorithmen und Datenstrukturen Wintersemester 2018/2019 Übung#2, 01.11.2018 Christian Rieck, Arne Schmidt Einführendes Beispiel

Mehr

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

Prof. Dr. Michael Philippsen / Prof. Dr. Herbert Stoyan Algorithmik 1 Prof. Dr. Michael Philippsen / Prof. Dr. Herbert Stoyan Friedrich-Alexander-Universität Erlangen-Nürnberg Informatik 2/8 Programmiersysteme / Künstliche Intelligenz Kapitel 11 - Korrektes

Mehr