Hauptinhalt

Dieser Eintrag ist aus dem Sommersemester 2018 und möglicherweise veraltet. Es konnte kein aktuelles Äquivalent gefunden werden.

CS 524 — Programmverifikation und -synthese
(engl. Program Verification and Synthesis)

Niveaustufe, Verpflichtungsgrad Vertiefungsmodul, Wahlpflichtmodul
Lehr- und Lernformen,
Arbeitsaufwand
Vorlesung (4 SWS), Übung (2 SWS),
270 Stunden (90 Std. Präsenzzeit, 180 Std. Selbststudium)
Leistungspunkte,
Voraussetzungen zum Erwerb
9 LP
Studienleistung(en): Erreichen von mindestens 50 Prozent der Punkte aus den wöchentlich zu bearbeitenden Übungsaufgaben und mündliche Präsentation der Lösung von mindestens zwei der Übungsaufgaben.
Prüfungsleistung: Klausur oder mündliche Prüfung
Sprache,
Benotung
Deutsch,
Die Benotung erfolgt mit 0 bis 15 Punkten gemäß der Prüfungsordnung für den Studiengang M.Sc. Informatik.
Dauer des Moduls,
Häufigkeit
Ein Semester,
Alle 3-4 Semester
Modulverantwortliche(r) Prof. Dr. H.-Peter Gumm

Inhalt

Praktische Verifikation und Synthese von Scala-Programmen mit „Leon“

und deren Theoretische Hintergründe:

  • Hoare Kalkül, Verifikationsbedingungen, weakest preconditions
  • Entscheidungsverfahren ( Lineare Arithmetik, Abstrakte Datentypen, Quantorenelimination)
  • Kombination von Entscheidungsverfahren

(Satisfiability modulo theories und Z3)

  • Lambda Kalkül und Kombinatorische Logik
  • Lambda Ausdrücke in Scala und Java 8
  • Prädikatenlogik höherer Stufe (Higher Order Logik)
  • Modellierung und Verifikation funktionaler Sprachen (Leon)
  • Programmsynthese aus Spezifikationen

Qualifikationsziele

  • Einsatz und Anwendung aktueller Forschungswerkzeuge,
  • selbstständige Erkundung neuer Einsatzgebiete,
  • Kenntnisse in der Verifikation und Synthese von Software,
  • Erarbeitung der theoretischen Hintergründe,
  • Kenntnisse in Anwendung und Grenzen von Entscheidungsverfahren,
  • Kenntnisse in Theorie und Anwendung des Lambda-Kalküls,
  • Umgang mit Logik höherer Stufe.

Voraussetzungen

Keine. Empfohlen werden die Kompetenzen, die in den Modulen Logik, Objektorientierte Programmierung, Algorithmen und Datenstrukturen vermittelt werden, sowie Grundkenntnisse im funktionalen Programmieren (z.B. in Scala, Haskell oder Python).


Verwendbarkeit

Das Modul kann im FB12 verwendet werden im Studiengang bzw. in den Studiengängen

  • B.Sc. Informatik
  • M.Sc. Informatik
  • M.Sc. Mathematik
  • M.Sc. Wirtschaftsmathematik

Im Studiengang M.Sc. Informatik kann das Modul im Studienbereich Vertiefungsbereich Informatik absolviert werden.

Das Modul kann auch in anderen Studiengängen absolviert werden (Exportmodul).

Die Wahlmöglichkeit des Moduls ist dadurch beschränkt, dass es der Theoretischen Informatik zugeordnet ist.


Literatur

  • N. Bjørner et. al.: Program Verification as Satisfiability Modulo Theories
  • R. Blanc et al.: An Overview of the Leon Verification System
  • M. Gordon: Programming Language Theory and its Implementation. Prentice Hall
  • H.P. Gumm: Generating algebraic laws from Imperative Programs TCS 217 (1999).
  • S. Hetzl: Higher-Order Logic (logic.at/staff/hetzl/teaching/hol_2013.pdf)
  • V. Kuncak et al.: Leon Dokumentation: leon.epfl.ch/doc/
  • MicroSoft Research: Z3-guide (rise4fun.com/Z3/tutorial/guide)
  • P. Suter et al.: Satisfiability modulo recursive programs



Bitte beachten Sie:

Diese Seite beschreibt ein Modul gemäß dem im Sommersemester 2018 aktuellsten gültigen Modulhandbuch. Die meisten für ein Modul gültigen Regeln werden nicht durch die Prüfungsordnung festgelegt, und können daher von Semester zu Semester aktualisiert werden. Folgende Versionen liegen im Online-Modulhandbuch vor:

Das Modulhandbuch enthält alle Module, unabhängig vom aktuellen Veranstaltungsangebot, vergleichen Sie dazu bitte das aktuelle Vorlesungsverzeichnis in Marvin.

Die Angaben im Online-Modulhandbuch wurden automatisch erstellt. Rechtsverbindlich sind die Angaben der Prüfungsordnung. Wenn Ihnen Unstimmigkeiten oder Fehler auffallen, sind wir für Hinweise dankbar.