Entscheidungsverfahren mit Anwendungen in der Softwareverifikation
- Typ: Vorlesung / Übung (VÜ)
- Semester: WS 18/19
-
Ort:
Seminarraum 236 (Di), Seminarraum 301 (Mi)
-
Zeit:
Di 11:30 - 13:00 (Übung), Mi 15:45 - 17:15 (Vorlesung)
- Beginn: 17.10.2018
-
Dozent:
Markus Iser
Prof. Dr. Carsten Sinz - SWS: 3
- LVNr.: 2400073
-
Prüfung:
mündlich, Termin nach Vereinbarung
Entscheidungsverfahren sind Algorithmen, die für ein gegebenes Problem immer eine korrekte Ja/Nein-Antwort liefern. Sie spielen in der Softwareverifikation eine entscheidende Rolle, da sich mit ihrer Hilfe eine Vielzahl von Korrektheitseigenschaften (z.B. in Bezug auf Speicherzugriffsfehler, Überläufe oder funktionale Eigenschaften) überprüfen und vollautomatisch beweisen lassen. Die Vorlesung stellt eine Reihe von logischen Entscheidungsverfahren und ihre Anwendung in der automatischen Programmverifikation vor.
Themen sind unter anderem:
- SAT-Solving, DPLL
- DPLL(T)
- Gleichheit mit uninterpretierten Funktionen, Kongruenzabschluß
- Lineare Arithmetik ganzer Zahlen
- Bitvektoren und Machinenarithmetik
- Arrays
- Quantoren, Quantorenelimination
- Software Bounded Model Checking
- Symbolic Execution
- Predicate Abstraction
- Werkzeuge: LLBMC, KLEE, SatAbs
Vorlesungsfolien
- 17.10.2018: Einführung
- 24.10.2018: Algebraische und logische Grundlagen
- 31.10.2018: Aussagenlogische Erfüllbarkeit
- 07.11.2018: Lineare ganzzahlige Arithmetik
- 14.11.2018: Einführung SMT
- 21.11.2018: SMT, DPLL(T)
- 28.11.2018: Uninterpretierte Funktionen (1. Teil)
- 05.12.2018: Uninterpretierte Funktionen (2. Teil)
- 12.12.2018: Bit-Vektoren
- 19.12.2018: Logik der Arrays
- 09.01.2019: Modulare Arithmetik
- 16.01.2019: Kombination von Entscheidungsverfahren
- 23.01.2019: Quantoren-Elimination (1. Teil)
- 30.01.2019: Quantoren-Elimination (2. Teil), Cylindrical Algebraic Decomposition
Übungsblätter
- 07.11.2018: Übungsblatt 1
- 15.11.2018: Übungsblatt 2
- 27.11.2018: Übungsblatt 3
- 20.12.2018: Übungsblatt 4
- 09.01.2019: Übungsblatt 5
- 30.01.2019: Übungsblatt 6