Wir wissen, dass die Beta-Gleichheit von einfach getippten Lambda-Begriffen entscheidend ist. gegebenem M, N: σ → τ entscheidbar, ob für alle X: σ MX NX?
10
Wir wissen, dass die Beta-Gleichheit von einfach getippten Lambda-Begriffen entscheidend ist. gegebenem M, N: σ → τ entscheidbar, ob für alle X: σ MX NX?
Antworten:
Wie ich in meinem Kommentar sagte, lautet die Antwort im Allgemeinen nein.
Der wichtige Punkt, den man verstehen muss (ich sage dies für Viclib, der scheinbar etwas über diese Dinge lernt), ist, dass eine Programmiersprache / ein Satz von Maschinen, in denen alle Programme / Berechnungen enden, keineswegs die Funktionsgleichheit impliziert (dh ob zwei Programme / Maschinen berechnen die gleiche Funktion) ist entscheidbar. Ein einfaches Beispiel: Nehmen Sie den Satz polynomisch getakteter Turing-Maschinen. Per Definition enden alle diese Maschinen an allen Eingängen. Nun gibt es für jede Turing-Maschine eine Turing-Maschine , die bei Eingabe der Zeichenfolge simuliert Schritte der Berechnung von an einer festen Eingabe (z. B. der leeren Zeichenfolge) und akzeptiert, wenn höchstens endetM M0 x |x| M M |x| Schritte oder lehnt anders ab. Wenn eine Turing-Maschine ist, die immer sofort ablehnt, sind und beide (offensichtlich) polynomisch getaktet, und wenn wir dennoch entscheiden könnten, ob und dieselbe Funktion berechnen (oder in diesem Fall dieselbe Sprache entscheiden), Wir könnten entscheiden, ob (das, wie Sie sich erinnern, eine beliebige Turing-Maschine ist) auf der leeren Zeichenfolge endet.N M0 N M0 N M
Im Fall des einfach typisierten Kalküls (STLC) funktioniert ein ähnliches Argument, außer dass die Messung der Ausdruckskraft des STLC nicht so trivial ist wie im obigen Fall. Als ich meinen Kommentar schrieb, dachte ich an einige Artikel von Hillebrand, Kanellakis und Mairson aus den frühen 90er Jahren, die zeigen, dass man durch die Verwendung komplexerer Typen als der üblichen Art von Church-Ganzzahlen im STLC ausreichend komplex codieren kann Berechnungen für das obige Argument funktionieren. Eigentlich sehe ich jetzt, dass das benötigte Material bereits in Mairsons vereinfachtem Beweis von Statmans Theorem enthalten ist:λ
Harry G. Mairson, Ein einfacher Beweis für einen Satz von Statman. Theoretical Computer Science, 103 (2): 387-394, 1992. ( hier online verfügbar ).
In diesem Artikel zeigt Mairson, dass es bei jeder Turing-Maschine einen einfachen Typ und einen -term , der die Übergangsfunktion von codiert . (Dies ist a priori nicht offensichtlich, wenn man die äußerst schlechte Ausdruckskraft des STLC für kirchliche Ganzzahlen im Auge hat. In der Tat ist Mairsons Kodierung nicht unmittelbar). Daraus ist es nicht schwer, einen Begriff zu konstruierenM σ λ δM:σ→σ M
(wobei die Instanziierung der Art von Ganzzahlen der Kirche auf ), so dass auf reduziert wird, wenn in höchstens Schritten endet, wenn fütterte die leere Zeichenfolge oder reduzierte sich ansonsten auf . Wenn wir wie oben entscheiden könnten, dass die durch Funktion die konstante -Funktion ist, hätten wir die Beendigung von für die leere Zeichenfolge entschieden.nat[σ] σ tMn–– 1– M n 0– tM 0– M
quelle