Warum war Schönfinkels Arbeit, „gebundene Variablen“ in der Logik zu eliminieren, so entscheidend?


15

AFAIK, Der erste Beweis für die Verwendung von Funktionen höherer Ordnung geht auf Schönfinkels Arbeit von 1924 zurück: "Auf den Bausteinen der mathematischen Logik" - wo man Funktionen als Argumente an andere Funktionen übergeben durfte.

Das scheint interessant zu sein. Jedoch scheint alles, was ich über seine Arbeit gelesen habe (und Currys im weiteren Sinne), auf die eine oder andere Sache zu verweisen: [Funktionen höherer Ordnung] ... dies beseitigt die Notwendigkeit für gebundene Variablen ...

Was ich nicht in der Lage war, meinen Kopf herumzureißen, ist - was ist die große Sache? Warum kümmerten sich Logik- und Mathematiker dieser Zeit darum? Und kümmern wir uns als Theoretiker heute darum? Warum war es "bahnbrechend", gebundene Variablen loszuwerden, und welchen Einfluss hatte (oder hat) es (theoretisch) auf das Rechnen, wie wir es kennen?

PS: Mir ist bekannt, wie seine Arbeit den Weg für -calculus ebnete und wie sich "es" auf das Rechnen und die funktionale Programmierung im Allgemeinen auswirkt. Meine Frage richtet sich hauptsächlich auf die Zeit "vor" der Entstehung von -calculus und "nach" Schönfinkels Arbeit. Die Tatsache, dass das Curry diese Sparte, die später als "kombinatorische Logik" bezeichnet wurde, eigenständig aufgriff, spielt auch auf die Bedeutung von Schönfinkels Arbeit an.λλλ


2
Schönfinkels Artikel finden Sie hier .
Martin Berger

Antworten:


17

TL; DR. Die Metamathematik der Bindung ist subtil : Sie scheint trivial zu sein, ist es aber nicht - egal, ob Sie sich mit (Logik höherer Ordnung) oder mit 𝜆-Kalkül beschäftigen. Sie sind so subtil, dass verbindliche Darstellungen ein offenes Forschungsfeld bilden, mit einem Wettbewerb ( die POPLmark-Herausforderung ) vor einigen Jahren. Es gibt sogar Witze von Fachleuten über die Komplexität der Bindungsansätze.

Wenn Sie sich also für Metamathematik interessieren (und die meisten Mathematiker nicht), müssen Sie sich mit dem Binden befassen. Aber viele Mathematiker können die Formalisierung der Bindung mit Sicherheit so behandeln, als wäre sie ein "grundlegendes" Problem.

Ein weiterer Punkt ist, dass die Bindung das einzige "neue" Problem in Sprachen mit Funktionen höherer Ordnung war, da die Theorie der Sprachen mit Bindung nur Algebra (für Konstanten) + Bindung ist. Mitchells "Grundlagen der Programmiersprachen" präsentiert die Dinge tatsächlich in dieser Reihenfolge und ist ziemlich aufschlussreich.

Mir ist bekannt, wie seine Arbeit den Weg für λ-Kalkül ebnete und wie sich "es" auf das Rechnen und die funktionale Programmierung im Allgemeinen auswirkt. Meine Frage richtet sich hauptsächlich auf die Zeit "vor" der Erstellung von λ-Kalkül und "nach" Schönfinkels Arbeit.

Ich muss etwas vermissen, aber diese Bemerkung scheint keinen Unterschied zu machen. Das Binden in Logiken höherer Ordnung und das Binden in λ-Kalkül scheinen ebenso schwierig zu sein, so lange sich Menschen um Logiken höherer Ordnung kümmerten, mussten sie sich mit dem Binden befassen. Ich bin voreingenommen, weil ich auf Curry-Howard-Isomorphismus basierende Theorembeweiser verwende, die Logik implementieren, indem ich einfach eine Typentheorie implementiere (wobei Typen Formeln und Programme Beweisbegriffe sind), sodass ich mich nur einmal mit dem Binden befasse.

Andererseits, IIRC, kümmerten sich zu der Zeit tatsächlich nur wenige um Schönfinkels Arbeit - auch wegen der Art und Weise, wie er sie veröffentlichte (nicht). Die Artikel wurden größtenteils von Kollegen verfasst, die auf seinen Recherchen beruhten (siehe hier , Seite 4). ; Curry entdeckte die Theorie dann unabhängig wieder.

Vorsichtsmaßnahme: Ich bin kein Historiker, sondern ein Doktorand in PL, daher ist meine Perspektive eine moderne (und hoffentlich genaue) zu diesem Thema.

BEARBEITEN:

Warum ist das Binden subtiler, etwas konkreter

Das hat zwei Facetten: Erstens ist die Implementierung schwierig. Zweitens ist Metamathematik die Mathematik der Beweismanipulation: Diese Manipulation erfolgt normalerweise automatisch, dh es handelt sich um einen Algorithmus. Sie haben also im Wesentlichen alle Schwierigkeiten bei der Implementierung und müssen Beweise dafür erstellen. Unten gebe ich Beispiele. Die Beispiele haben eine moderne Perspektive - es geht um tatsächlich formalisierte Beweise. Einige der Schwierigkeiten würden sich jedoch auf genaue manuelle Beweise erstrecken - solange Sie nicht an Details herumschummeln.

Dies zeigt, dass Schönfinkel einfach die erste Lösung für dieses Problem gab, aber dies war alles andere als definitiv.

Die Implementierung ist aufgrund von Schatten subtil

Das grundlegende Problem bei der Implementierung ist das Abschatten. Normalerweise verwendet man nicht denselben Namen für verschiedene gebundene Variablen. Aber Sie können es in der Lambda-Rechnung nicht vermeiden, zumindest weil Funktionen (und ihre gebundenen Variablen) dupliziert werden: reduziert sich auf . Dies ist noch kein Problem, aber ausgehend von Sie und dann : Jetzt müssen Sie sich mit Schatten beschäftigen. Sie können dies auf Kosten der Komplikation der Beta-Reduktionsregel vermeiden.( & lgr; x . x ) 1 + ( & lgr; x . x ) 2 ( & lgr; f x . f ( f x ) ) ( & lgr; g y . g y ) z ( & lgr; g y . g y ) ( & lgr;(λf.f 1+f 2)(λx.x)(λx.x) 1+(λx.x) 2(λfx.f(fx)) (λgy.g y) z( λ y . ( λ g y . g y ) y ) z(λgy.g y) (λgy.g y) z(λy.(λgy.g y) y)  z

Sobald Sie verschiedene Variablen mit demselben Namen haben, müssen Sie auch die Erfassung verhindern. Das einfachste Beispiel für die Erfassung ist die Anwendung der Funktion (erstes Argument zurückgeben) zu darf nicht (die Identitätsfunktion), aber (eine konstante Funktion).y λ y . y λ y ' . yλxy.xyλy.yλy.y

Schlimmer ist, dass die Gegenbeispiele zu naiven Algorithmen schwer zu konstruieren sind, wenn Sie das Problem bereits kennen, geschweige denn, wenn Sie es nicht kennen. Fehler in fast korrekten Algorithmen bleiben oft jahrelang unentdeckt. Ich höre, dass selbst gute Schüler normalerweise nicht (von sich aus) die richtige Definition für einfangvermeidende Substitution finden. Tatsächlich sind Doktoranden (ich eingeschlossen) und Professoren nicht von diesem Problem befreit.

Dies ist einer der Gründe, warum einige (einschließlich eines der besten Lehrbücher über Programmiersprachen, Typen und Programmiersprachen von Benjamin Pierce) eine namenlose Darstellung empfehlen (nicht ganz kombinatorische Logik, obwohl sie verwendet wurde, sondern deBrujin-Indizes).

Beweise dafür sind subtil

Es stellt sich heraus, dass Beweise für das Binden nicht einfacher sind als die oben erwähnte Implementierung. Natürlich gibt es korrekte Algorithmen, und es gibt Beweise dafür - aber ohne fortgeschrittene Maschinerie müssen Sie die Beweise für jede Sprache mit Bindung wiederholen, und diese Beweise sind einfach sehr umfangreich und ärgerlich, wenn Sie die Definitionen für das Binden auf Stift und Papier verwenden .

Betrachten Sie zur Veranschaulichung der in der Metamathematik verwendeten Algorithmen den Deduktionssatz in der Logik, der es ermöglicht, einen Beweis für unter der Annahme von und einen Beweis für zu erstellen, um einen Beweis für . Um diesen Satz zu beweisen, zeigen Sie tatsächlich einen Algorithmus, der die Syntax der beiden beteiligten Beweise bearbeitet und die Syntax für einen Beweis von . Dieser Algorithmus muss sich mit dem Binden befassen.A A B BBAABB

Als nächstes schlug ich mein bestes Beispiel vor: "Was läuft falsch, wenn Sie versuchen, die Standarddefinition zu formalisieren?". Russell O'Connor (der sich auf dieser Site befindet) formalisierte den ersten Unvollständigkeitssatz von Gödel in Coq (einem Satzbeweiser der oben genannten Art) - und dieser Satz beinhaltet eine Logik (mit allen relevanten Algorithmen) in einer anderen Logik (mit der Syntax von die erste als Zahlen codierte Logik). Er verwendete die Definitionen, die auf dem Papier verwendet wurden, und formalisierte sie direkt. Suchen Sie nach "Substitution" oder "Variable" und zählen Sie, wie oft sie in Bezug auf Probleme auftreten, um sich einen Eindruck zu verschaffen. http://r6.ca/Goedel/goedel1.html

Ich verwende diese Definitionen nie in meiner Arbeit, aber jeder alternative Ansatz hat einige Nachteile.


Ich bin voreingenommen, weil ich auf Curry-Howard-Isomorphismus basierende Theorembeweiser verwende, sodass ich mich nur einmal mit dem Binden befasse. Könnten Sie bitte erläutern, was Sie meinen?
PhD

3
Du sagst, es ist subtil, aber sagst nie, was genau es ausmacht, und warum interessiert es dich, wenn du ein Metamathetiker bist? Das ist die Perspektive, die ich suche.
PhD

Zu Ihrem ersten Kommentar: Ich habe die Verbindung zu Curry-Howard ausdrücklich erwähnt, aber ich muss Sie auf Wikipedia oder eine andere Frage verweisen. Ich stimme Ihrem zweiten Kommentar zu. Ich werde auf Leute eingehen, die mit Lambda-Kalkül nicht vertraut sind.
Blaisorblade

@PhD: Ich hoffe, dass das, was ich hinzugefügt habe, ein bisschen hilft, obwohl es keinen guten Vortrag über dieses Material ersetzt (und leider wird das Material, auf das ich geschnitten habe, normalerweise unter vielen anderen PPL-bezogenen Materialien verteilt).
Blaisorblade

1
Danke vielmals! Das war in der Tat hilfreich. Dieser Link könnte Sie auch interessieren: home.uchicago.edu/~wwtx/Varfreelogic_revised.pdf - Logik erster Ordnung ohne gebundene Variablen.
PhD
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.