Wie genau erfasst die Lambda-Rechnung den intuitiven Begriff der Berechenbarkeit?

12

Ich habe versucht, mich mit dem Was, Warum und Wie von Kalkulus zu beschäftigen, aber ich bin nicht in der Lage, mich mit "Warum funktioniert es?"λ

"Intuitiv" erhalte ich das Rechenmodell von Turing Machines (TM). Aber diese lgr; -Abstraktion lässt mich nur verwirrt.λ

Nehmen wir an, TMs existieren nicht - wie kann man dann "intuitiv" von der Fähigkeit von -calculus überzeugt werden , diesen Begriff der Berechenbarkeit zu erfassen? Wie impliziert es die Berechenbarkeit, über eine Reihe von Funktionen für alles und deren Komposibilität zu verfügen? Was vermisse ich hier? Ich habe die Zeitung von Alonzo Church darüber gelesen, aber ich bin immer noch verwirrt und suche nach einem "heruntergekommenen" Verständnis davon.λ

PhD
quelle
Haben Sie das gleiche Problem mit dem Umschreiben von Systemen und Grammatiken? In der Lambda-Rechnung sind die Grundoperationen recht einfach: Funktionsabstraktion, Funktionsanwendung durch Substitution und Berechnung sind Betanormalisierungen. Mit anderen Worten, ich sehe Ihr Problem nicht darin, dass es ein vernünftiges Rechenmodell ist.
Kaveh,
2
Ich habe niemanden gesehen, der daran zweifelt, dass definierbare Funktionen der Lambda-Rechnung berechenbar sind. In der Vergangenheit stellte sich die Frage, ob dies die einzigen intuitiv berechenbaren Funktionen sind. Dies ist eine völlig andere Frage als die, die Sie anscheinend gestellt haben.
Kaveh,
1
Eine Sache, die ich hilfreich fand, war Raymond M Smullyans Buch "To Mock a Mockingbird", das Funktionen durch Vögel in einem Zauberwald ersetzt (und eine gute Lektüre ist)
dspyz
1
Smullyans Buch handelt von kombinatorischer Logik
Trismegistos

Antworten:

21

Du bist in guter Gesellschaft. Kurt Gödel kritisierteλ

Um eine Vorstellung davon zu bekommen, wie ein Rechenmodell funktioniert, schreiben Sie am besten einige Programme in dieses Modell. Aber Sie müssen es nicht in reinem Kalkül tun, obwohl es Spaß macht (auf die gleiche Weise wie Feuerlaufen). Sie können einen modernen Abkömmling des λ- Kalküls wie Haskell verwenden.λλ

Andrej Bauer
quelle
4
Wenn Feuerlaufen so viel Spaß macht, wie du sagst, dann muss ich es versuchen.
Radu GRIGore
Andrej, kennst du eine Referenz für diese? Gödel nicht Chruch Modell akzeptieren , wie die Erfassung aller umwandelbaren Funktionen, aber ich kann mich nirgendwo erinnern, dass er das Modell viel weiter kritisiert hat. Seine Kritik am Lambada-Kalkül-Modell der Kirche entsprach meines Wissens seiner Kritik an seinen eigenen Godel-Herbrand-allgemeinen rekursiven Funktionen.
Kaveh,
3
Ich denke, Sie möchten K. Godel: "Einige Bemerkungen zu den Unentscheidbarkeitsergebnissen", In Solomon Feferman, John Dawson & Stephen Kleene (Hrsg.), Kurt Gödel: Collected Works Vol. Ii. Oxford University Press. 305-306 (1972). Siehe books.google.si/…
Andrej Bauer
6

Sie programmieren darin! Schauen Sie sich die Kodierungen der Kirche an . Sie können sehen, wie so ziemlich alle Arithmetik ausgeführt werden kann, was Sie wahrscheinlich davon überzeugen dürfte, dass sie äußerst leistungsfähig ist. Ich mag es jedoch, Operationen auf Listen zu betrachten. Sie können fast jede Datenstruktur anhand einer Funktion definieren, die die wichtigste Operation ausführt.

Zum Beispiel ist eine Kodierung einer Liste die Fold-Funktion, die darüber faltet. Beachten Sie, dass dies nicht die Codierung von Church ist, sondern eine, die ich von Percies Typen und Programmiersprachen erhalten habe. Churchs Paarkodierungen geben uns keine Rekursion, wir müssen sie mit einer Art Rekursionskombinator wieder in uns selbst einfügen.

Daher benötigt eine Liste zwei Argumente, eine Funktion zum Falten und einen Anfangswert, um an einem bestimmten Punkt in die Falte eingefügt zu werden.

cons x xs = lam f. lam a. f x (xs f a)
nil       = lam f. lam a. a

Jetzt können wir eine Summation mit einer Additionsfunktion definieren (siehe oben).

sum xs = xs add 0

Wir können mehr tun und eine Kartenfunktion definieren

consApply f x xs = cons (f x) xs
map f xs = xs (consApply f) nil

Wenn Sie immer noch nicht davon überzeugt sind, dass hier eine Berechnung stattfindet, und sicherstellen möchten, dass Sie eine Berechnung durchführen können, überprüfen Sie diese den Festkomma-Kombinator . Es tut mir ein bisschen weh, manchmal darüber nachzudenken, also bin ich mir nicht sicher, ob ich es als intuitiv bezeichnen würde, aber wenn Sie es manuell mit einigen Argumenten auswerten, können Sie sehen, was los ist.

Jake
quelle