Kapitel 4: Formale Verifikation
|
|
- Richard Kneller
- vor 5 Jahren
- Abrufe
Transkript
1 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 Korrektheitsbeweis, Semantik, (formale) Verifikation Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-1
2 4.1 Grundlagen Begriffe Verifikation ist (1) der Prozess der Beurteilung eines Systems oder einer Komponente mit dem Ziel, festzustellen, ob die Resultate einer gegebenen Entwicklungsphase den Vorgaben für diese Phase entsprechen, (2) der formale Beweis der Korrektheit eines Programms. (IEEE ) Siehe dazu auch Bild 1.2. Mit formaler Verifikation ist die Bedeutung (2) gemeint Formale Verifikation ist der Beweis, dass ein Programm P alle in einem Vorgabedokument S geforderten Eigenschaften aufweist S ist die Spezifikation die Verifikation erfolgt mit den Mitteln der mathematischen Logik formale Verifikation erfordert eine formale Definition von Syntax und Semantik der für P und S verwendeten Sprachen. Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-2
3 4.1.2 Syntax und Semantik von Sprachen Syntax Regelwerk für die Konstruktion orthographisch und grammatisch korrekter Sätze einer Sprache Syntaxdefinition formaler Sprachen konstruktiv durch Übersetzer und gleichzeitig informal mit Text für Benutzer durch formale Definition einer Grammatik (zum Beispiel Backus-Naur-Form (BNF)) für Übersetzer und Benutzer Semantik Festlegung der Bedeutungen der syntaktisch korrekten Sätze einer Sprache Semantikdefinition formaler Sprachen Übersetzersemantik: Bedeutungen durch Übersetzer (Compiler) bestimmt Operationale Semantik: Bedeutungen durch Abläufe in einer abstrakten Maschine (einem Automaten) bestimmt Denotationelle Semantik: Bedeutungen durch Funktion f: E A, definiert, welche den Eingangszustand E auf den Ausgangszustand A abbildet. Axiomatische Semantik: Bedeutungen durch Axiome in Form von Voraussetzungen und Ergebniszusicherungen bestimmt Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-3
4 4.2 Verifikation auf axiomatischer Basis Ansatz Beweise (i) Wenn P terminiert, so transformiert P jeden Zustand, in dem V gilt, in einen Zustand, in dem N gilt Schreibweise: {V} P {N} (ii) P terminiert (Hoare, 1969) P zu verifizierendes Programm {V} Menge der Voraussetzungen (Vorbedingungen, Preconditions), deren Erfüllung vor Ausführung von P garantiert, dass die Ergebniszusicherungen gelten {N} Menge der Ergebniszusicherungen (Nachbedingungen, Postconditions), die nach Ausführung von P gelten N und V sind Ausdrücke der Prädikatenlogik {V} und {N} bilden zusammen die Spezifikation von P Beispiel 4.1 Gegeben sei die Spezifikation V x, y INTEGER x = X, y = Y N x = max (0, Y) Beweise: das Programm P x := y; if x < 0 then x := 0 erfüllt die Spezifikation, d.h. {V} P {N} Hinweis: x = X bedeutet, dass die Variable x den Wert X hat Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-4
5 Beweisidee: Das zu verifizierende Programm wird in Schritte gegliedert und Schritt für Schritt verifiziert: Zu beweisen sei {V} P {N} P bestehe aus einer Folge s 1, s 2,..., s n von Anweisungen. Dann werden Bedingungen Q i bestimmt mit V = Q 0, N = Q n und {Q 0 } s 1 {Q 1 } s 2 {Q 2 } s 3... {Q n-1 } s n {Q n } Nun gilt: Aus {Q i-1 } s i {Q i } für alle 1 i n folgt {V} P {N} Jeder Einzelschritt wird bewiesen, indem man ihn aus der Semantikdefinition der verwendeten Programmiersprache herleitet. Beweise dieser Art setzen eine axiomatische Semantik für die verwendete Programmiersprache voraus. Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-5
6 4.2.2 Axiomatische Semantik von Programmiersprachen Die Semantik wird durch ein Axiom {V} s {N} für jede ausführbare Anweisung s der verwendeten Programmiersprache definiert. (Hoare, 1969) In den Axiomen sollen die Ergebniszusicherungen unter möglichst schwachen Voraussetzungen gelten: Gesucht ist die schwächste Voraussetzung (weakest precondition) V, für die {V} s {N} bewiesen werden kann. Schreibweise: V wp (s, N) Definiere wp(s, N) für jede ausführbare Anweisung der verwendeten Programmiersprache (Dijkstra, 1976; Gries, 1981) Die Semantik ist nur für syntaktisch korrekte Konstrukte definiert. Es wird daher im Folgenden immer vorausgesetzt, dass die zu verifizierenden Programme oder Programmteile syntaktisch korrekt sind. Bei Sprachen mit Typen, z.b. PASCAL oder Java, gehört die Typverträglichkeit aller Ausdrücke und Zuweisungen ebenfalls zur Syntax. Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-6
7 Ausgewählte Axiome für die Sprache PASCAL Wertzuweisung x := E Sei x eine Variable, E ein Ausdruck vom gleichen Typ wie x und Q(x) die Ergebniszusicherung von x := E Dann ist die Semantik von x := E definiert durch wp(x:=e, Q(x)) E ist berechenbar Q(E) In Worten: Wenn E berechnet werden kann, so ergibt sich die schwächste Voraussetzung, indem alle Vorkommen von x in der Ergebniszusicherung durch E ersetzt werden. Hinweis: Situationen, in denen E nicht berechnet werden kann, ergeben sich beispielsweise, wenn E eine Division durch Null enthält. Beispiel 4.2 Seien a, b Zahlen gleichen Typs und seien gegeben Wertzuweisung b := a+1 Ergebniszusicherung b > a wp (b := a+1; b > a) = (a+1 > a) = TRUE Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-7
8 Leere Anweisung ε wp (ε, Q) Q Die leere Anweisung wird u.a. benötigt, um IF-Anweisungen ohne ELSE-Zweig zu verifizieren. Sequenz s1 ; s2 wp (s1;s2, Q) wp (s1, wp (s2, Q)) In Worten: Die schwächste Voraussetzung der zweiten Anweisung ist gleich der Ergebniszusicherung Ns1 der ersten Anweisung. Die schwächste Voraussetzung der Sequenz ist damit die schwächste Bedingung, die bei Ausführung von s1 die Bedingung Ns1 liefert. Beispiel 4.3 Seien x,y Zahlen gleichen Typs und seinen gegeben Anweisungssequenz y := x; x := 0 Ergebniszusicherung y = X x 0 wp (y := x; x := 0, (y = X x 0) ) = wp (y := x, wp (x := 0, (y = X x 0)) ) = wp (y := x, (y = X 0 0) ) = (x = X) Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-8
9 Alternative if b then s1 else s2 wp (if b then s1 else s2, Q) b wp (s1, Q) b wp (s2, Q) In Worten: ist b wahr, so hat die Alternative die Semantik der Anweisung s1, andernfalls diejenige der Anweisung s2. Beispiel 4.4 Seien x,y,z vergleichbare Objekte gleichen Typs und seien gegeben Alternative if x < y then z := y else z := x Ergebniszusicherung z = max (X, Y) wp (if x < y then z := y else z := x, z = max (X, Y) ) = (x < y) wp (z := y, z = max (X,Y)) (x < y) wp (z := x, z = max (X,Y)) = (x < y) (y = max (X, Y)) (x y) (x = max (X, Y)) = (y = Y) (x = X) Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-9
10 Iteration while b do s durch rekursive Definition zurückführbar auf Semantik einer Folge von Anweisungen : while b do s if b then begin s ; while b do s end führt zu Rekursion in der Definition von wp schwierig Besser: Verifikation über eine Schleifeninvariante Eine Schleifeninvariante Inv ist ein logischer Ausdruck, der bei jeder Prüfung der Fortsetzungsbedingung b wahr ist Da Inv bei jeder Prüfung der Fortsetzungsbedingung wahr ist, muss Inv auch nach jedem Schleifendurchlauf, d.h. nach jeder Ausführung von s wahr sein. Folglich gilt: {Inv b} s {Inv} Für den letzten Schleifendurchlauf gilt {Inv b} s {Inv b} Durch geeignete Wahl von Voraussetzungen V und einer Invarianten Inv ist zu beweisen: V Inv sowie (Inv b) N Nach den Regeln für die Zusammensetzung von Bedingungen für eine Folge von Anweisungen (vgl. p. 4-5) ist damit {V} while b do s {N} bewiesen. Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-10
11 Beispiel 4.5 Gegeben sei die Iteration mit der Ergebniszusicherung while i n do begin p := p * s; i := i + 1 end {p = S**N} Die Bedingung p = S**i-1 ist Schleifeninvariante, sofern bei Eintritt in die Schleife die Voraussetzung (p = S) (i = 2) (n > 0) erfüllt ist V Inv ist trivial, weil die Voraussetzung gerade so bestimmt wurde Leite aus der Invariante die Ergebniszusicherung ab (beweise Inv b N): Nach dem letztem Schleifendurchlauf gilt i = n+1: (p = S**i-1 für alle i n+1) i = n+1 (p = S**n) (mit der trivialen Voraussetzung n = N) (p = S**N) Damit ist bewiesen: {(p = S) (i = 2) (n > 0)} while i n do begin p := p * s; i := i + 1 end {p = S**N} Hinweis: Würde man als Schleifeninitialisierung wie üblich i := 1 wählen, wäre die Voraussetzung der Schleife verletzt und damit das Ergebnis nicht mehr garantiert (nicht notwendig falsch, da die Voraussetzung nicht sicher die schwächste ist). Im konkreten Fall wäre das Ergebnis für n= 1 falsch, weil p den Initialwert S hat. Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-11
12 4.2.3 Verifikation des Programms aus Beispiel 4.1 Seien x,y vom Typ INTEGER Beweise: {x = X, y = Y} x := y; if x < 0 then x := 0 {x = max (0, Y)} 1. Bestimme Q 3 = wp (x := 0, (x = max (0, Y)) = (0 = max (0, Y) ) = (Y 0) 2. Bestimme Q 2 = wp (ε, (x = max (0, Y)) = (x = max (0, Y)) 3. Bestimme Q 1 = wp (if x < 0 then x := 0, (x = max (0, Y)) = ( (x < 0) (Y 0) (x 0) (x = max (0, Y)) 4. Bestimme Q 0 = wp (x := y, Q 1 ) = ( (y < 0) (Y 0) (y 0) (y = max (0, Y)) 5. Zeige: (x = X, y = Y) Q 0 y = Y (y < 0) (y = Y) (y 0) (y = Y) (y < 0) (Y 0) (y 0) (y = max (0, Y)) 6. Zeige, dass das Programm terminiert Das Programm enthält weder Schleifen noch Rekursion das Programm terminiert Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-12
13 4.3 Verifikation einzelner Eigenschaften Häufig interessiert man sich nicht nur für den Nachweis einer korrekten Implementierung, sondern für den Beweis anderer wichtiger Eigenschaften, z.b. der Nachweis für eine Spezifikation, dass gefährliche (und daher verbotene) Systemzustände nachweislich nicht erreichbar sind der Nachweis, dass ein Modell verklemmungsfrei ist Solche Nachweise sind möglich, wenn der Untersuchungsgegenstand in einer Sprache vorliegt, die entweder eine vollständig formale Semantik hat oder für welche mindestens die für den Nachweis benötigten Elemente formal definiert sind. Beispiel 4.6: In nachstehendem Petrinetz einer (stark vereinfachten) Liftsteuerung kann die Eigenschaft, dass der Lift niemals bei offener Tür fahren kann, formal bewiesen werden. Lift steht auf Etage Tür zu Tür offen fahrbereit Lift fährt Zielknopf Stockwerksensor Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-13
14 4.4 Stärken und Schwächen formaler Verifikation Stärken: Ein formal verifiziertes Programm erfüllt nachweislich seine Spezifikation ein Test erübrigt sich das Programm liefert für alle Daten korrekte Ergebnisse Fehlfunktionen in nicht vorausgesehenen Fällen gibt es nicht Probleme: Viele Beweise ignorieren reale Randbedingungen: in Beispiel 4.2 wurde bewiesen {a, b sind Zahlen gleichen Typs} b := a+1 {b > a} Sind a und b vom Typ REAL und intern mit einer Mantisse von 24 Bit repräsentiert, so liefert dieses verifizierte Programm für alle a 2 24 das falsche Ergebnis b = a Die Verifikation ist aufwendig, insbesondere das Bestimmen von Schleifeninvarianten Es gibt keine Garantie gegen fehlerhafte Beweise. In der Literatur sind Beispiele fehlerhafter Programmbeweise dokumentiert (z.b. Gerhart und Yelowitz 1976) Der Test wird nicht überflüssig Verifikation hilft nicht gegen Spezifikationsfehler Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-14
15 Fazit Eine generelle formale Verifikation von Software ist mit den heutigen Mitteln weder machbar noch wirtschaftlich Nachträgliches Verifizieren mit seinem immensen Aufwand ist möglicherweise ein Irrweg Neue Ansätze versuchen Vorwärtsverifikation, d.h. korrektes, schrittweises Ableiten eines Programms aus seiner Spezifikation Die Erstellung und Prüfung einer vollständigen formalen Spezifikation bleibt bei großer Software ein ungelöstes Problem Formale Verifikation ist anzezeigt für eher kurze, aber sehr wichtige Algorithmen in Spezialfällen, z.b. für Kommunikationsprotokolle für sicherheitskritische Eigenschaften von Modellen Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-15
16 Aufgaben Aufgabe 4.1 Gegeben sei folgende Anforderung: Der abzugsfähige Betrag A ist der nachgewiesene Betrag B abzüglich des Selbstbehalts S, höchstens aber H. Alle Beträge sind nicht negative ganze Zahlen. a) Formen Sie diese Anforderungen in eine formale Ergebniszusicherung um. b) Ermitteln Sie die schwächste Voraussetzung, mit der folgende Anweisung in PASCAL die Ergebniszusicherung erfüllt: abzugsbetrag, nachgewbetrag, selbstbehalt, maxbetrag: INTEGER;... IF (nachgewbetrag - selbstbehalt) < maxbetrag THEN abzugsbetrag := nachgewbetrag - selbstbehalt ELSE abzugsbetrag := maxbetrag; c) Wie müsste das Programmfragment abgeändert werden, damit die Voraussetzung A S fallengelassen werden kann? Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-16
17 Zitierte Literatur Dijkstra, E.W. (1976). A Discipline of Programming. Englewood Cliffs: Prentice Hall. Gerhart, S.L., L. Yelowitz (1976). Observations on Fallibility in Applications of Modern Programming Methodologies. IEEE Transactions on Software Engineering, SE-2, 3 (Sept. 1976) Gries, D. (1981). The Science of Programming. Berlin, etc.: Springer. Hoare, C.A.R. (1969). An Axiomatic Basis for Computer Programming. Communications of the ACM 12, 10 (Oct. 1969) IEEE (1990). Standard Glossary of Software Engineering Terminology. IEEE Std IEEE Computer Society Press. Software-Qualitätsmanagement Kapitel 4: Formale Verifikation Seite 4-17
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
MehrC. 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{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
MehrAlgorithmen 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
MehrWS 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
MehrKorrektheit 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
MehrVerifizierende 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
Mehr4.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
Mehr1. 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
Mehr1. 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
Mehrn 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
MehrFormale 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 - 4. Verifikation! Spezifikation: Angabe, was ein Programm
Mehr13 Formale Spezifikation von Anforderungen
13 Formale Spezifikation von Anforderungen Mögliche Formalitätsgrade einer Spezifikation 0 Ideen und Vorstellungen der Auftraggeber informale Spezifikation Zeit teilformale Spezifikation 100% formale Spezifikation
MehrKorrektheit 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
MehrProblem: 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
MehrVerifikation 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
Mehr4 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
MehrKV Software Engineering Übungsaufgaben SS 2005
KV Software Engineering Übungsaufgaben SS 2005 Martin Glinz, Silvio Meier, Nancy Merlo-Schett, Katja Gräfenhain Übung 4 Aufgabe 1 (8 Punkte) Programmverifikation Gegeben ist folgendes Programmfragment
MehrAbschnitt 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Übersicht Formale Semantik. Übersicht Axiomatische Semantik. Inhaltsübersicht HPS WS 2003/04. Vorlesung Höhere Programmiersprachen,
Vorlesung Höhere Programmiersprachen, WS 2003/04 Teil 2: Formale Semantik Axiomatische Semantik Inhaltsübersicht - Grundlagen (1,2) - Konzepte imperativer Programmiersprachen (2,3) - Deklarative Programmiersprachen
MehrInformatik 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
MehrVerifikation 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
MehrTheoretische Informatik SS 03 Übung 3
Theoretische Informatik SS 03 Übung 3 Aufgabe 1 a) Sind die folgenden Funktionen f : partiell oder total: f(x, y) = x + y f(x, y) = x y f(x, y) = x y f(x, y) = x DIV y? Hierbei ist x DIV y = x y der ganzzahlige
MehrFormale Programmverifikation. Referentin: Kirsten Hradek
Formale Programmverifikation Referentin: Kirsten Hradek Formale Programmverifikation 2 Formale Programmverifikation Einführung/Motivation 2 Formale Programmverifikation Einführung/Motivation Softwareverifikation
MehrEin Fragment von Pascal
Ein Fragment von Pascal Wir beschreiben einen (allerdings sehr kleinen) Ausschnitt von Pascal durch eine kontextfreie Grammatik. Wir benutzen das Alphabet Σ = {a,..., z, ;, :=, begin, end, while, do} und
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
MehrEin 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:
MehrMathematische 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
MehrWarum Programme Verträge schließen sollten
1 Warum Programme Verträge schließen sollten RALF HINZE Institut für Informatik, Lehrstuhl Softwaretechnik, Universität Freiburg Georges-Köhler-Allee, Gebäude 079, 79110 Freiburg i. Br. Email: ralf@informatik.uni-bonn.de
MehrKapitel 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
Mehrn 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -
n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik n "Informatik" = Kunstwort aus Information
MehrEinfü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
MehrSyntax von Programmiersprachen
Information: ist Rohstoff der Informatik, hat eigenständige Dimension (vgl. Länge, Zeit, elektrische Ladung ist jedoch nicht im SI-System enthalten) läßt sich nicht messen, sie wird berechnet wird durch
MehrEinfü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
MehrKapitel 1. Software-Entwicklung und formale Spezifikation
Seite 1 Kapitel 1 Software-Entwicklung und formale Spezifikation Prof. Dr. Rolf Hennicker 22.04.2010 Ziele Seite 2 Die Grundprinzipien der Software-Entwicklung verstehen. Die Rolle formaler Methoden in
MehrInformatik 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,
MehrEinfü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
MehrEinfü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,
MehrKapitel L:V. V. Erweiterungen und Anwendungen zur Logik
Kapitel L:V V. Erweiterungen und Anwendungen zur Logik Produktionsregelsysteme Inferenz für Produktionsregelsysteme Produktionsregelsysteme mit Negation Nicht-monotones Schließen Logik und abstrakte Algebren
MehrKapitel L:V. V. Erweiterungen und Anwendungen zur Logik
Kapitel L:V V. Erweiterungen und Anwendungen zur Logik Produktionsregelsysteme Inferenz für Produktionsregelsysteme Produktionsregelsysteme mit Negation Regeln mit Konfidenzen Nicht-monotones Schließen
MehrGTI. Hannes Diener. 18. Juni. ENC B-0123,
GTI Hannes Diener ENC B-0123, diener@math.uni-siegen.de 18. Juni 1 / 32 Als Literatur zu diesem Thema empfiehlt sich das Buch Theoretische Informatik kurzgefasst von Uwe Schöning (mittlerweile in der 5.
MehrWas ist mathematische Logik?
Was ist mathematische Logik? Logik untersucht allgemeine Prinzipien korrekten Schließens Mathematische Logik stellt zu diesem Zweck formale Kalküle bereit und analysiert die Beziehung zwischen Syntax und
MehrSemantik von Programmiersprachen SS 2012
Lehrstuhl für Programmierparadigmen Andreas Lochbihler Joachim Breitner andreas.lochbihler@kit.edu breitner@kit.edu Semantik von Programmiersprachen SS 2012 http://pp.info.uni-karlsruhe.de/lehre/ss2012/semantik
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative
MehrZusammenfassung. 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)
MehrBeispiel 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
Mehr9.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
MehrGrundlagen 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
MehrGrundlagen 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
MehrEinfü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
MehrVerschiedene 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. $
MehrKapitel 1: Informationsverarbeitung durch Programme
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2009 Kapitel 1: Informationsverarbeitung
MehrBerechenbarkeit und Komplexität Vorlesung 11
Berechenbarkeit und Komplexität Vorlesung 11 Prof. Dr. Wolfgang Thomas Lehrstuhl Informatik 7 RWTH Aachen 7. Dezember 2014 Wolfgang Thomas, Informatik 7 () Vorlesung Berechenbarkeit und Komplexität 7.
MehrBeispiel 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
MehrSemantik von Programmiersprachen Theorie und Anwendungen (Informatik III, Wintersemester 03/04)
Eidgenossische Technische Hochschule Zurich Ecole polytechnique federale de Zurich Politecnico federale di Zurigo Swiss Federal Institute of Technology Zurich Semantik von Programmiersprachen Theorie und
MehrDaten und Algorithmen
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Kapitel 3 Daten und Algorithmen Skript zur Vorlesung Einführung in die Programmierung g im Wintersemester 2012/13 Ludwig-Maximilians-Universität
MehrVon der Chomsky-Hierarchie
Von der Chomsky-Hierarchie zur Backus-Naur-Form Ein Beitrag der Theoretischen Informatik zum Siegeszug des Computers Referat von Helmut Schnitzspan Im Rahmen des Seminars Von der EDV zu Facebook Alexander
Mehr(Aufgaben zu Wertzuweisungen siehe Vorlesungsbeilage S. 49)
Anweisungen Eine Anweisung ist eine in einer beliebigen Programmiersprache abgefaßte Arbeitsvorschrift für einen Computer. Jedes Programm besteht aus einer bestimmten Anzahl von Anweisungen. Wir unterscheiden
MehrPhilosophie 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
MehrAlgorithmen 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,
MehrSemantik 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
MehrKorrektheit durch modulare Konstruktion. Wie kann man die Korrektheit reaktiver Systeme gewährleisten?
Korrektheit durch modulare Konstruktion Wie kann man die Korrektheit reaktiver Systeme gewährleisten? Ansatz: Durch systematische Konstruktion (Schlagwort: strukturierte Programmierung für parallele Programmiersprachen)
MehrProgrammierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen
Prof. Dr. Wolfgang Effelsberg Universität Mannheim Sommersemester 2005 1-1 Inhalt (1) Teil I: Die Programmiersprache C 2. Datentypen und Deklarationen 3. Operatoren und Ausdrücke 4. Ablaufsteuerung (Kontrollstrukturen)
MehrProgrammierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen
Prof. Dr. Wolfgang Effelsberg Universität Mannheim Sommersemester 2005 1-1 Inhalt (1) Teil I: Die Programmiersprache C 2. Datentypen und Deklarationen 3. Operatoren und Ausdrücke 4. Ablaufsteuerung (Kontrollstrukturen)
MehrWie kann man die Korrektheit reaktiver Systeme gewährleisten?
Korrektheit durch modulare Konstruktion Wie kann man die Korrektheit reaktiver Systeme gewährleisten? Ansatz: Durch systematische Konstruktion (Schlagwort: strukturierte Programmierung für parallele Programmiersprachen)
MehrVor- und Nachbedingungen in imperativen Programmen OOPM, Ralf Lämmel
Wer ist denn das? Vor- und Nachbedingungen in imperativen Programmen OOPM, Ralf Lämmel Programmspezifikation mit Vor- und Nachbedingungen (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau 2 3 Gesprächsprotokoll
MehrKurs 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
Mehr2.2 Syntax, Semantik und Simulation
2.2 Syntax, Semantik und Simulation Ein Java Programm ist eine Folge von Buchstaben. Nicht jede Folge von Buchstaben ist ein korrektes Java Programm! Wie kann man alle korrekten Java Programme beschreiben?
MehrKapitel 1: Informationsverarbeitung durch Programme
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2018 Kapitel 1: Informationsverarbeitung
MehrEinführung in die Informatik. Programming Languages
Einführung in die Informatik Programming Languages Beschreibung von Programmiersprachen Wolfram Burgard Cyrill Stachniss 1/15 Motivation und Einleitung Wir haben in den vorangehenden Kapiteln meistens
MehrLOOP-Programme: Syntaktische Komponenten
LOOP-Programme: Syntaktische Komponenten LOOP-Programme bestehen aus folgenden Zeichen (syntaktischen Komponenten): Variablen: x 0 x 1 x 2... Konstanten: 0 1 2... Operationssymbole: + Trennsymbole: ; :=
Mehr7. Syntax: Grammatiken, EBNF
7. Syntax: Grammatiken, EBNF Teil 1 Sehr schönes Beispiel für Notwendigkeit der Theoretischen Informatik für Belange der Praktischen Informatik Vertiefung in: Einführung in die Theoretische Informatik
MehrEinführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen
Einführung in die Programmierung für NF Rückgabewerte, EBNF, Fallunterscheidung, Schleifen FUNKTIONEN UND PROZEDUREN 3 Rückgabewerte, EBNF, Fallunterscheidung, Schleifen 2 Funk@on und Prozedur Methoden
MehrAbschnitt 4: Daten und Algorithmen
Abschnitt 4: Daten und Algorithmen 4. Daten und Algorithmen 4.1 4.2 Syntaxdefinitionen 4.3 Eigenschaften von Algorithmen 4.4 Paradigmen der Algorithmenentwicklung Peer Kröger (LMU München) Einführung in
Mehr7 Axiomatische Semantik
7 Axiomatische Semantik Operationale und denotationale Semantiken legen die Bedeutung eines Programms direkt fest als Ableitungsbaum, maximale Ableitungsfolge oder partielle Funktion auf den Zuständen.
MehrWerkzeuge zur Programmentwicklung
Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul
Mehr3 Syntax von Programmiersprachen
3 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ) formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmiersprache Festlegung, wie Programme
Mehr2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:
2.4 Schleifen Schleifen beschreiben die Wiederholung einer Anweisung bzw. eines Blocks von Anweisungen (dem Schleifenrumpf) bis eine bestimmte Bedingung (die Abbruchbedingung) eintritt. Schleifen unterscheiden
MehrVorlesung Diskrete Strukturen Die natürlichen Zahlen
Vorlesung Diskrete Strukturen Die natürlichen Zahlen Bernhard Ganter WS 2009/10 Alles ist Zahl? Wenn in der modernen Mathematik alles auf Mengen aufgebaut ist, woher kommen dann die Zahlen? Sind Zahlen
MehrFormale Spezifikation mit Java Modeling Language
Formale Spezifikation mit Java Modeling Language Daniel Bruns Praxis der Software-Entwicklung, 25 November 2010 INSTITUT FÜR THEORETISCHE INFORMATIK KIT Universität des Landes Baden-Württemberg und nationales
MehrSemantik von Programmiersprachen
Semantik von Programmiersprachen Prof. Dr. Manfred Schmidt-Schauß SS 2013 Stand der Folien: 15. April 2013 Semantik von Programmen verschiedene Semantiken: operationale Semantik (Spezifikation eines Interpreters)
Mehr5.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
MehrKapitel 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
MehrInformatik I Übung, Woche 40
Giuseppe Accaputo 1. Oktober, 2015 Plan für heute 1. Nachbesprechung Übung 2 2. Vorbesprechung Übung 3 3. Zusammenfassung der für Übung 3 wichtigen Vorlesungsslides Informatik 1 (D-BAUG) Giuseppe Accaputo
Mehr1 Funktionale vs. Imperative Programmierung
1 Funktionale vs. Imperative Programmierung 1.1 Einführung Programme einer funktionalen Programmiersprache (functional programming language, FPL) bestehen ausschließlich aus Funktionsdefinitionen und Funktionsaufrufen.
MehrKapitel 4. Kontrollstrukturen
Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen
Mehr5. 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,
Mehr9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion
Experiment: Die Türme von Hanoi. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration Links Mitte Rechts Mathematische Rekursion Viele mathematische Funktionen
Mehr1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit
Die Programmiersprache LOOP (i) Syntaktische Komponenten: Variable: x 0, x 1, x 2,... Konstanten: 0, 1, 2,... Trennsymbole: ; := Operationszeichen: + Schlüsselwörter: LOOP DO END (ii) LOOP-Programme: Wertzuweisungen:
MehrWas 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
MehrDank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung
Dank Vorlesung Theoretische Informatik II Bernhard Beckert Institut für Informatik Diese Vorlesungsmaterialien basieren zum Teil auf den Folien zu den Vorlesungen von Katrin Erk (gehalten an der Universität
MehrEinführung in die Programmierung mit VBA
Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen
Mehr