Vorlesung Lambda-Kalkül und Typen

Vorlesung im Sommersemester 2000 im Hauptstudium (PG) 2VL + 2Ü
Veranstalter: Prof. Dr. Reinhold Letz
Dozent:       Dr. Ralph Matthes
Termine: VL Di 11-13, Raum 0.41 Oettingenstraße 67
         Ü Mo 9:00 bis 10:30, Raum 0.41 Oettingenstraße 67
  

Beschreibung

Getypte Lambdakalküle sind besonders einfache, getypte funktionale Programmiersprachen. Das Studium dieser Basisformalismen hat Anwendungen im Bereich des Designs und der Untersuchung von Programmiersprachen und Programmierlogiken sowie in der mathematischen Logik. Die Vorlesung soll in diesen Themenbereich einführen und den Teilnehmer/die Teilnehmerin in die Lage versetzen, sich mit aktuellen Forschungsthemen auseinanderzusetzen. Dies ist in einem solch jugendlich gebliebenen Forschungsgebiet durchaus rasch möglich.

Induktion wird eine zentrale Rolle spielen. Einerseits als Mittel, um über diese Kalküle Aussagen zu beweisen. Andererseits als die treibende Kraft hinter Erweiterungen, die Rekursion über abstrakten Datentypen bereitstellen. Diese sogenannten induktiven Typen werden an vielen Beispielen klargemacht, die z.B. in der Sprache ML auch programmiert werden können. Der reine funktionale Kern ohne Typen steht auch in der Sprache Scheme zur Verfügung, die man als (effiziente) Implementierung des gewöhnlichen ungetypten Lambda-Kalküls auffassen kann. Eine extreme Gegenposition dazu sind konstruktive mathematische Beweise der Existenz von Objekten mit bestimmten Eigenschaften. Inwiefern? Weil sie einen Algorithmus verbergen, dessen Korrektheit sich aus dem Beweis ergibt. Dieser Algorithmus läßt sich aus einem am Computer geführten Beweis auch automatisch extrahieren. Weiß man, daß der Algorithmus automatisch extrahiert wurde, so kann man auch an dessen Korrektheit glauben. Weniger gutgläubige Menschen lassen sich wenigstens einen Teil der Information noch mitgeben: die Typinformation. Aus ihr allein läßt sich in vielen Kalkülen bereits ablesen, ob ein Programm immer terminiert - eine zentrale Fragestellung in der Forschung zu Lambda-Kalkülen, die äquivalent ist zur Frage nach dem Vorhandensein eines allgemeinen Induktionsprinzip für die Terme/Programme.

Kurz gesagt: Es geht um das Verständnis der Grundprinzipien funktionaler Programmierung und die Möglichkeit, sicher korrekte funktionale Programme zu entwerfen.

Material

SML-Beispielprogramm zur Einführung am 2. Mai
Erstes Übungsblatt für den 15. Mai (DVI)
Zweites Übungsblatt für den 22. Mai (DVI)
Drittes Übungsblatt für den 29. Mai (DVI)
Viertes Übungsblatt für den 5. Juni (DVI)
Handout vom 30. Mai (Auszug aus dem Skript)
Fünftes Übungsblatt für den 19. Juni (DVI)
Der Normalisierungsbeweis (Auszug aus dem Skript)
Vorlesung vom 13. Juni (Auszug aus dem Skript)
Sechstes Übungsblatt für den 26. Juni (DVI)
Vorlesungen vom 13. und 20. Juni (Auszug aus dem Skript)
Handout vom 27. Juni (nicht in der Vorlesung vorgeführt; Auszug aus dem Skript)
Siebtes Übungsblatt für den 3. Juli (DVI)
SML-Beispielprogramm zur Vorlesung am 4. Juli
Das Manuskript für die Sommerschule (Stand 8. Juli, ohne induktive Typen!)
Die Übung am 17. Juli vertiefte die Lösungen zu Blatt 7.
Achtes Übungsblatt für den 24. Juli (DVI)
Die Übung am 31. Juli wird als Vorlesung abgehalten.

Ein Skriptum mit dem gesamten Inhalt der Vorlesung wird parallel erstellt und auch verteilt. Reaktionen darauf sind hochwillkommen, da das Manuskript auf einer internationalen Sommerschule als Kursmaterial dienen wird.

Literatur


Ralph Matthes
Last modified: Fri Jul 21 12:39:16 CEST 2000
http://www.tcs.informatik.uni-muenchen.de/lehre/SS00/Lambda/