Es gibt ein bisschen Freiheit in dem, was wir als "den gleichen Wert" betrachten. Lassen Sie mich zeigen, dass es keinen solchen Algorithmus gibt, wenn "der gleiche Wert" "beobachtungsäquivalent" bedeutet. Ich werde ein Fragment des Konstruktionskalküls verwenden, nämlich Gödels System T (einfach Kalkül, natürliche Zahlen und primitive Rekursion), daher gilt das Argument bereits für einen viel schwächeren Kalkül.λ
Bei einer Anzahl , lassen ¯ n das entsprechende Bezugszeichen repräsentiert es, das heißt, n - Anwendungen von s u c c auf 0 . Bei einem Turing-Mahcin M sei ⌈ M ⌉ die Zifferncodierung M in einer vernünftigen Weise.nn¯¯¯ns u c c0M⌈M⌉M
Sagen , dass zwei geschlossene Begriffe sind äquivalent , geschrieben t ≃ u , wenn für alle n ∈ N , tt,u:nat→natt≃un∈N undstn¯¯¯ normalisieren sich beide auf dieselbe Ziffer (sie normalisieren sich auf eine Ziffer, weil wir uns in einem stark normalisierenden Claculus befinden).sn¯¯¯
Angenommen, wir hätten einen Algorithmus, der bei jedem geschlossenen Term vom Typ einen minimalen äquivalenten Term berechnet. Dann können wir das Halting-Orakel wie folgt lösen.nat→nat
Es ist ein Begriff , , so dass für alle n ∈ N und alle Turingmaschinen M ,
S ( ⌈ M ⌉ , ¯ n ) normalisiert auf ¯ 1 , wenn T stoppt in n Schritten und es normalisiert auf ¯ 0 sonst. Dies ist bekannt, da die Simulation einer Turingmaschine für eine feste Anzahl von Schritten n primitiv rekursiv ist.S:nat×nat→natn∈NMS(⌈M⌉,n¯¯¯)1¯¯¯Tn0¯¯¯n
Es gibt endlich viele geschlossene Terme die minimale Terme sind, die λ x : n a t entsprechen .Z1,…,Zk . Unser Minimierungsalgorithmus gibt einen von ihnen zurück, wenn wir ihm λ x : n a t geben .λx:nat.0 , und es kann sogar der Fall sein, dass λ x : n a t .λx:nat.0 ist in der Tat der einzige solche minimale Term. All dies spielt keine Rolle, das einzige, was zählt, ist, dass es endlich viele minimale Terme gibt, die λ x : n a t entsprechen .λx:nat.0 .λx:nat.0
Betrachten Sie nun bei jeder Maschine den Term
u : = λ x : n a t .M
Wenn M für immer läuft,normalisiert sich u ¯ n für jedes n auf ¯ 0 und entspricht λ x : n a t .
u:=λx:nat.S(⌈M⌉,x)
Mun¯¯¯0¯¯¯n . Um zu entscheiden, ob
M für immer läuft, geben wir
u in unseren Minimierungsalgorithmus ein und prüfen, ob der Algorithmus einen von
Z 1 , … , Z k zurückgegeben hat . Wenn ja, dannläuft
M für immer. Wenn dies nicht der Fall ist, wird es angehalten. (Hinweis: Der Algorithmus muss
Z 1 , … , Z k nicht selbst berechnen, diese können fest in den Algorithmus codiert werden.)
λx:nat.0MuZ1,…,ZkMZ1,…,Zk
Es wäre schön, ein Argument zu kennen, das mit einem schwächeren Begriff der Äquivalenz funktioniert, zum Beispiel nur mit Reduzierbarkeit.β
In diesem Sinne ist bekannt, wie untypisierte Begriffe auf optimale Weise reduziert werden können, um das Teilen so weit wie möglich zu reduzieren. Dies wird hier erklärt: /programming//a/41737550/2059388 und das relevante Zitat ist J. Lampings Ein Algorithmus zur optimalen Reduzierung des Lambda-Kalküls . Es besteht kaum ein Zweifel, dass der Satz für den untypisierten Kalkül auf den CIC ausgedehnt werden kann.
Eine andere relevante Frage ist die Menge an Typinformationen, die bei der Typkonvertierung gelöscht werden können, oder wie eine effiziente Konvertierung durchgeführt werden kann, die ein aktives Forschungsfeld darstellt, siehe z. B. Mishra-Linger-These .
quelle
Lassen Sie mich auf dem Standpunkt bestehen, der von Codys Antwort berührt wird.
Dieselbe Syntax kann verwendet werden, um zu beweisen, dass die Antwort auf die obige Frage im Gegensatz zur naiven Intuition tatsächlich Ja lautet: Die Anzahl der Schritte ganz links zur Normalform ist ein angemessenes Kostenmaß, selbst wenn die Größe explodiert, weil Es gibt tatsächlich eine andere Möglichkeit, dieselbe Berechnung (unter Verwendung linearer expliziter Substitutionen) darzustellen, bei der:
Dies alles wird in Accattolis und Dal Lagos Artikel "Beta-Reduktion ist in der Tat unveränderlich" (LICS 2014 und dann denke ich, dass es eine neuere Journalversion gibt) erklärt.
quelle