Zielstellung
Softwareprodukte sind in den vergangenen Jahren ein integraler Bestandteil unseres alltäglichen Lebens geworden. Anwendungen reichen von Steuerungsmodulen in Alltagsprodukten, e-Commerce, Telephonnetzen, bis hin zu Automobilkonstruktion und Luftfahrtkontrolle. Die wachsende Komplexität und umfassendere Verwendung dieser Produkte macht es erforderlich, Methoden zu entwickeln, welche die Zuverlässigkeit von Software besonders in sicherheitskritischen Anwendungen sicherstellen.
Aus konzeptioneller Sicht ist der Entwurf von Software im Wesentlichen ein logischer Schlussfolgerungsprozess, der Wissen über Algorithmen, deren Anwendungsbereich und Programmiertechniken verwendet und zu einem Grossteil schematisiert werden kann. Durch den Einsatz logisch-formaler Methoden kann die Zuverlässigkeit dieses Prozesses erheblich gesteigert werden.
Im Rahmen der Vorlesung Automatisierte Logik und Programmierung werden die Grundlagen logisch-formaler Programmentwicklung besprochen. Die Formalisierung von Logik, Berechenbarkeit und Datentypen in der intutionistischen Typentheorie bildet das theoretische Fundament. Die Automatisierung logischer Schlüsse wird anhand des interaktiven Beweissystems Nuprl demonstriert.
Aufgrund des Umfangs der Thematik wird die Veranstaltung auf zwei Semester verteilt. Schwerpunkt des ersten Semesters sind das theoretische Fundament. Thema des zweiten Semesters sind Aufbau, Automatisierung und Anwendung von Beweissystemen.
Gliederung
- Formale Kalküle für Mathematik und Programmierung
- Prädikatenlogik
- Lambda-Kalkül
- Datentypen
- Intuitionistische Typentheorie
- Aufbau von Beweissystemen (Sommersemester)
- Architektur und Implementierung interaktiver Beweissysteme
- Beweisautomatisierung (Sommersemester)
- Taktische Beweiser
- Entscheidungsprozeduren
- Automatische Theorembeweiser
- Programmsynthese (Sommersemester)
- Syntheseparadigmen & Strategien
- Wissensbasierte Programmentwicklung