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.β