Lambda-Kalkül

Der Lambda-Kalkül ist eine formale Sprache zur Untersuchung von Funktionen.

Inhaltsverzeichnis

Geschichte

Der Lambda-Kalkül wurde von Alonzo Church und Stephen Kleene in den 1930er Jahren eingeführt. Church benutzte den Lambda-Kalkül, um 1936 eine negative Antwort auf das Entscheidungsproblem zu geben. Mittels des Kalküls kann man klar definieren, was eine berechenbare Funktion ist. Die Frage, ob zwei Lambda-Ausdrücke (s.u.) äquivalent sind, kann i.Allg. nicht algorithmisch entschieden werden. Der Lambda-Kalkül hat die Entwicklung funktionaler Programmiersprachen, insbesondere LISPs, wesentlich beeinflusst.

Die übliche Notation einer mathematischen Funktion wie im Beispiel

f(x) = x2 + 2x + 10

ist in dem Sinne doppeldeutig, dass nicht klar ist, ob man die ganze Funktion mit all ihren Funktionswerten meint oder nur die Funktion an der Stelle x.

Um dies eindeutig anzugeben, wird die so genannte Lambda-Notation (griechischer kleiner Buchstabe L) verwendet

λx.x2 + 2x + 10

Alonzo Church hat 1941 diese Notation eingeführt.

Gemeinsam mit weiteren Syntax- und Umformungsregeln bildet diese Notation den Lambda-Kalkül: ein vollständiges System zur Beschreibung und Ausführung mathematischer Berechnungen und Verfahren, das im Sinne des Konzepts der Berechenbarkeit ebenso mächtig ist wie beispielsweise die modernen Programmiersprachen oder die Turing-Maschine.

Konrad Zuse hat Ideen aus dem Lambda-Kalkül 1942-1946 in seinen Plankalkül einfließen lassen. John McCarthy hat sie Ende der fünfziger Jahre verwendet und damit die minimalen Funktionen der Programmiersprache LISP definiert.

Um die oft erwähnte schlichte Eleganz des Lambda-Kalküls zu verdeutlichen, wird hier kurz auf die Grundlagen eingegangen. Man beachte, dass diese Beschreibung schon ein Turing-vollständiges System ist.

In Anlehnung an den Lambda-Kalkül wurde für die Beschreibung nebenläufiger Prozesse der Pi-Kalkül von Robin Milner entwickelt.

Untypisierter Lambda-Kalkül

In seiner einfachsten, dennoch vollständigen Form gibt es im Lambdakalkül drei Sorten von Termen (T), hier in Backus-Naur-Form:

T ::= a (Atom) | (T T) (Applikation) | λa.T (Lambda, auch Abstraktion genannt)

wobei a für ein beliebiges Symbol aus einer mindestens abzählbar-unendlichen Menge steht, sowie zwei Umformungsregeln:

Wenn durch β> ein Lambda in ein anderes eingesetzt wird, die sich beide auf dasselbe Atom beziehen, muss mit einem von beiden Lambdas vor der Operation α= durchgeführt werden.

Anmerkungen

Beispiele

Siehe auch

Weblinks

See also: Lambda-Kalkül, 1930er, 1941, 1942, 1946, Abzählbarkeit, Alonzo Church, Backus-Naur-Form, Berechenbarkeit, Berechenbarkeitstheorie