Praktikum Spezifikation und Verifikation
Prof. Tobias Nipkow
Gertrud Bauer
Markus Wenzel
|
Wollten Sie schon immer verstehen, was Ihr Programm eigentlich macht? Dann sind Sie hier richtig! |
So sollten Sie z.B. ein rekursives funktionales Programm schreiben können, das die natürlichen Zahlen 1, ..., n aufsummiert. Der Begriff der vollständigen Induktion sollte kein Fremdwort sein, und der Beweis, daß der von obigem Algorithmus berechnete Wert gleich n(n+1)/2 ist, keine fundamentalen Schwierigkeiten bereiten.
Die Korrektheit von sicherheitskritischen Hard- und Softwaresystemen zu gewährleisten, ist immer noch ein ernstes Problem. Die zentralen Ziele dieses Praktikums sind das Erlernen
Konkret werden einige Anwendungsbeispiele behandelt, wobei wir aus Zeitgründen von vielen Details abstrahieren. Vorgesehen sind u.a.
An jedem dieser Beispiele werden spezifische Modellierungs- und Beweistechniken geübt. Die Spezifikation und Verifikation erfolgt in Isabelle/HOL.
In einer das Praktikum speziell begleitenden Vorlesungsreihe werden die Grundlagen zu Isabelle/HOL vermittelt:
In der ersten Hälfte des Semesters findet eine Vorlesung statt, in der die nötigen Isabelle/HOL Kenntnisse vermittelt werden. Die Aufgaben sind jeweils innerhalb von 1-3 Wochen zu bearbeiten und bei der Praktikumsleitung zu präsentieren (Termin nach Vereinbarung). Ferner bieten wir zu den folgenden Zeiten im Raum 1533 eine Beratung durch studentische Mitarbeiter an:
| Montag | 12:30 Uhr - 14:00 Uhr | Johannes Pfeifroth |
| Montag | 16:00 Uhr - 18:00 Uhr | Sebastian Nanz |
| Donnerstag | 13:30 Uhr - 16:00 Uhr | Johannes Pfeifroth |
| Donnerstag | 16:00 Uhr - 18:00 Uhr | Sebastian Nanz |
Alle Praktikumsteilnehmer und Betreuer sind unter psv@mailbroy.in.tum.de erreichbar. Hier können auch allgemeine Fragen zu Isabelle gestellt und beantwortet (!) werden.
Als Arbeitsumgebung stehen am Lehrstuhl üblichen Sparc/Solaris und x86/Linux Plattformen zur Verfügung. Die Isabelle Distribution wird außerdem als Source und Binär-Pakete zum Download angeboten. Achtung: Verwenden Sie nur Isabelle_09-May-2000, oder eine neuere Version!
| Stefan Baptist, Roger Rosette | 19. Juli | 15:30 Uhr - 15:55 Uhr | Raum 1575 |
| Sebastian Nanz | 26. Juli | 13:30 Uhr - 13:55 Uhr | Raum 1546 |
| Andreas Bauer, Jan-Thomas Czornack | 26. Juli | 14:00 Uhr - 14:25 Uhr | Raum 1546 |
| Matthias Kramm, Martin Okrslar, Christina Stan | 26. Juli | 14:30 Uhr - 14:55 Uhr | Raum 1546 |
| Carmen Barth, Mark Kiwitz | 26. Juli | 15:00 Uhr - 15:25 Uhr | Raum 1546 |
| Tobias Erlacher, Hanspeter Hagg | 26. Juli | 15:30 Uhr - 15:55 Uhr | Raum 1546 |
| Axel Ruder, Phillip Zerelles | 26. Juli | 16:00 Uhr - 16:25 Uhr | Raum 1546 |
Im Anschluß daran (26. Juli, ca. 17 Uhr) sind alle Praktikumsteilnehmer herzlich ins Park Cafe eingeladen!
Wie wir jetzt festgestellt haben, kann das neue Verhalten leicht zu Komplikationen führen, insbesondere können verschiedene Zahl-Darstellungen plötzlich gemischt auftauchen: z.B. eine 'gewöhnliche' 1 = Suc 0 vs. eine #1 in Binärdarstellung.
Folgender ML-code deaktiviert die neuen Prozeduren in der aktuellen Theorie:
ML_setup {*
Delsimprocs Nat_Numeral_Simprocs.cancel_numerals;
Delsimprocs [Nat_Numeral_Simprocs.combine_numerals];
*};
Dadurch kann man sich einige Verwirrung ersparen.
Weitere Hinweise zur Installation der einzelnen Komponenten befinden sich am Anfang des Isabelle/Isar Reference Manual.
Auf den sunbroy und sunhalle Rechnern läßt sich Isabelle (zusammen mit der Proof General Benutzeroberfläche) wie folgt starten:
/usr/proj/isabelle/bin/Isabelle
Unter KDE kann man sich auch ein Application Desktop-Objekt zum Anklicken erzeugen:
/usr/proj/isabelle/bin/isatool install -k
Für zügiges Arbeiten mit Isabelle sollte man eine relativ robuste Maschine verwenden, am Lehrstuhl etwa die sunbroy60, sunbroy61, sunbroy1, oder einen sunhalle Rechner.