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, abhängig vom importierenden Studiengang
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.
Exportfach, Ursprung Informatik, 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).


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.