Was ist λ-Kalkül im Wesentlichen?


11

Ich habe eine philosophische Frage zum λ-Kalkül.

Wenn Sie λ-Kalkül erforschen, werden Sie überrascht sein, all die Dinge zu sehen, die Sie dort tun können. Sie können Ganzzahlen, arithmetische Operationen, Boolesche Werte, Wenn-Dann-Sonst-Anweisungen, Schleifen, rekursive Funktionen usw. definieren. Ich glaube, dies hat sich als rechnerisch vollständig erwiesen.

Wenn Sie jedoch überlegen, was Sie mit Funktionen in λ-Kalkül tun können, erkennen Sie, dass Sie ihm nur eine Funktion zuführen können und eine andere Funktion zurückgeben. Und dieser Prozess endet nie.

Wie können Sie also ein Ergebnis aus einer Berechnung extrahieren?

Angenommen, das Ergebnis eines Ausdrucks ist eine Funktion f. Sie möchten überprüfen, ob fSie das erwartet haben. Sie können es testen, eine Funktion übernehmen, die Sie kennen, sich darauf bewerben fund empfangen g. Um zu überprüfen, ob dies gkorrekt ist, müssen Sie jetzt überprüfen, was gfunktioniert. Und du fängst von vorne an. Wie können Sie also etwas darüber erzählen f?

Es scheint mir, dass Sie alle Funktionen im λ-Kalkül durch eine einzige Funktion, die Identitätsfunktion I = λx.x, ersetzen können , und alles funktioniert immer noch wie im λ-Kalkül beschrieben. Die Kirchennummer, 3wenn sie gegeben ist fund xzurückkehrt f(f(f(x))). Aber da fund xkann nur sein I, kehrt es zurück I. Iangewendet auf Iund Ikehrt auch zurück I. So Ierfüllt die Definition 3. Die "Booleschen Werte" (λxy.x)und (λxy.y)benötigen 2 Argumente, Iund Ibeide Booleschen Werte werden zurückgegeben I. Jedes entspricht der Identität, obwohl sie sich genau nach ihren Definitionen verhalten.

Wie machen Sie den Unterschied? Wie zeigen Sie, dass λ-Kalkül mehr als nur eine einzelne Funktion behandelt?

Gibt es ein Identitätskonzept? Können Sie eine Funktion sofort identifizieren, ohne sie zu bewerten? Ich glaube, es wurde bewiesen, dass es keine Möglichkeit gibt, zwei Funktionen auf Gleichheit zu testen.

Oder geht es beim λ-Kalkül nicht um Funktionen, sondern um die formale Beschreibung dessen, was sie tun? Das würde bedeuten, dass λ-Ausdrücke nicht nur definieren, was die Funktionen tun, sondern auch die Daten sind, die die Funktionen manipulieren. Wenn Sie also schreiben A B, wenden Sie sich nicht Aan B, sondern wenden die durch die Zeichenfolge beschriebene Funktion Aauf die formale Definition einer Funktion an, die in der BRückgabe einer anderen formalen Definition enthalten ist.

Was ist eigentlich in der λ-Rechnung los? Mit welchen mathematischen Objekten handelt es sich?


Nachverfolgen:

OK, aus der Antwort unten geht hervor, dass es bei der λ-Berechnung nicht so sehr um Funktionen im mathematischen Sinne geht, sondern um die Teilmenge von Funktionen, die als λ-Ausdrücke ausgedrückt werden können. Oder noch mehr über die Manipulation von λ-Ausdrücken.


2
Könnten Sie die letzte Frage in etwas weniger meinungsorientiertes umformulieren? Hierfür sollte es eine solide, nicht meinungsgebundene Antwort geben.
Telastyn

Nach meiner Ausbildung existiert λ-Kalkül nur, um mein Gehirn zu verletzen. Ich bin mir immer noch nicht sicher, wie ich es intakt durch diese Klasse geschafft habe.

Antworten:


9

Es ist in der Tat unmöglich, die semantische Äquivalenz von Lambda-Kalkül-Begriffen zu bestimmen. Dies ist eine Anwendung des Satzes von Rice. Es ist jedoch einfach, Begriffe syntaktisch zu vergleichen, dh zu testen, ob sie genau dieselbe Struktur haben (äquivalent, wenn ihre "Zeichenfolgendarstellung" dieselbe ist). Das ist wirklich alles, was Sie brauchen, um Ergebnisse zu erzielen.

Um beispielsweise Funktionen n = f(i)von den Naturalen zu den Naturalen zu berechnen , geben Sie die Kirchencodierung ials Parameter für Ihre Lambda- Kalkülfunktion an , wenden Reduktionsregeln an, bis Sie zum Stillstand kommen, und überprüfen den resultierenden Begriff. Wenn es mit der Struktur der Kirchennummern übereinstimmt, extrahieren Sie die Nummer, ndie es codiert. Das ist dein Ergebnis. Wenn der resultierende Begriff nicht wie eine Kirchenzahl aussieht oder die Reduzierung nicht anhält, ist die Funktion bei nicht definiert i.

Begriffe ziehen effektiv doppelte Pflicht als "Code" und "Daten". Das ist nichts Besonderes: Das Band einer Turing-Maschine (eine Zeichenfolge über einem Alphabet) kann - und wird häufig - als Codierung einer Turing-Maschine oder eines Aspekts davon interpretiert werden. Ebenso können die Bits im Hauptspeicher einer von Neumann-Maschine entweder eine Codierung eines Programms oder eine Codierung von etwas anderem sein. Oder sogar beides gleichzeitig. Es ist nur die "Standardperspektive", die sich unterscheidet.


Wird der Ausdruck des Ergebnisses einer Berechnung mit Kirchenzahlen immer in die kanonische Form wie (λfx.f (f (fx))) aufgelöst? Oder können Sie verschiedene äquivalente Ausdrücke derselben Ziffer erhalten?
Florian F

@FlorianF Ich bin mir fast sicher, dass es solche nicht-kanonischen Begriffe (bis zur Alpha-Äquivalenz) gibt, aber wenn ja, können sie durch sorgfältige Erstellung des Programms vermieden werden.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.