Teil X. Programmverifikation. Spezifikation eines Algorithmus einer Funktion einer Prozedur. Vorbedingungen Parameter Wertebereiche
|
|
- Philipp Brinkerhoff
- vor 5 Jahren
- Abrufe
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 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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. $
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
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
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
MehrPartielle 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
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
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 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
MehrAlgorithmen & 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
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
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:
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,
MehrStatische 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
MehrResolutionskalkü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
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
MehrZusammenfassung 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
MehrEinfü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
MehrDiskrete 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
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
MehrZusammenfassung 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
MehrKapitel 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
MehrTutorium: 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
MehrZentralü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
MehrDefinition (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
MehrTableaukalkü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
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
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,
MehrDefinition 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
MehrProgramm 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
Mehr1 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
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
MehrAlgorithmen 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
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
MehrTheoretische 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.
MehrKapitel 4. Kontrollstrukturen
Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen
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
MehrFormale 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
MehrDeduktion 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
MehrResolutionsalgorithmus
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:
MehrLogik. 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
MehrLogik. 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
MehrDeduktion 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
Mehr1 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
MehrKapitel 4. Kontrollstrukturen
Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen
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
Mehr3. 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
MehrFormale 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
MehrEinfü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
MehrGrundbegriffe 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
Mehr3. 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
Mehr3. 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
MehrLogik 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
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
MehrJava 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
MehrTechnische 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
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
MehrLö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
MehrEinfü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
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,
MehrEinfü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
MehrTutoraufgabe 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
MehrTuring-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
MehrAussagenlogik: 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.
MehrLogik 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
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
MehrLogik 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
MehrQ.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
MehrProf. 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