Formale Methoden und Werkzeuge

Wahlvorlesung im Bachelorstudium Informatik

Lernziele

Wesentliche Methoden und Werkzeuge zum exakten Formulieren und Nachweisen von Eigenschaften von Softwaresystemen kennen, verstehen, auswählen, anwenden.

Den Zusammenhang zu den zugrundeliegenden fundamentalen Ideen verstehen, die bereits aus anderen Vorlesungen bekannt sind (VL Modellierung: Logik, VL Automaten und formale Sprachen: Automaten, VL (Fortgeschrittene) Programmierung: Termersetzung, Lambda-Kalkül, Typsysteme).

Lehrinhalte

  • SAT-Solver und BDDs als aussagenlogische Werkzeuge
    • Beschreibung des Systemverhaltens durch aussagenlogische Formeln (bounded model checking)
    • Werkzeuge zur programmatischen Herstellung solcher Formeln (Bsp: ersatz)
    • Werkzeuge zu effizienten Bestimmung eines Modells (SAT-Solver, Bsp: kissat)
    • Werkzeuge zur Darstellung und effizienten Verarbeitung von Modellmengen als Boolesche Entscheidungsdiagramme (BDD),
  • Model Checking mit endlichen Automaten
    • Beschreibung des Systemverhaltens durch eingeschränkte prädikatenlogische Formeln
    • effiziente Operationen auf endlichen Automaten, die Modellmengen darstellen
  • Programmierwerkzeuge für präzise Typisierung
    • die Curry-Howard-Isomorphie (Typ = Aussage, Programm = Beweis)
    • Programmiersprachen mit dependent types (Bsp: Agda)
    • interaktive Beweis-Systeme (Bsp: Mimer für Agda)

Literatur

Software (Auswahl)

Organisatorisches

  • Vorlesung mit Übung
  • Prüfungszulassung: regelmäßiges und erfolgreiches Bearbeiten von Übungsaufgaben
  • Prüfung: Klausur