Jest trochę wolności w tym, co uważamy za „tę samą wartość”. Pokażę, że nie ma takiego algorytmu, jeżeli „ta sama wartość” oznacza „równoważne obserwacyjnie”. Użyję fragmentu Rachunku konstrukcji, mianowicie Systemu T Gödela (po prostu wpisanego na nim -calculus, liczby naturalne i prymitywna rekurencja na nich), więc argument dotyczy już znacznie słabszego rachunku różniczkowego.λ
Biorąc pod uwagę liczbę , niech będzie odpowiadającą jej liczbą, tj. aplikacji od do . Biorąc pod uwagę maszynę Turinga , niech będzie kodowaniem w jakiś rozsądny sposób.¯ n n s u c c 0 M ⌈ M ⌉ Mnn¯¯¯nsucc0M⌈M⌉M
Powiedz, że dwa zamknięte terminy są równoważne , zapisane , kiedy dla wszystkich , i oba normalizują się do tej samej cyfry (normalizują się do cyfry, ponieważ mamy silnie normalizujący się claculus). t ≃ u n ∈ N tt,u:nat→natt≃un∈N ytn¯¯¯sn¯¯¯
Załóżmy, że mamy algorytm, który podając dowolny zamknięty termin typu oblicza minimalny równoważny termin. Następnie możemy rozwiązać wyrocznię Halting w następujący sposób.nat→nat
Istnieje termin taki, że dla wszystkich i wszystkich maszyn Turinga ,
normalizuje się do jeśli zatrzymuje się w ciągu kroków, i normalizuje się do przeciwnym razie. Jest to dobrze znane, ponieważ symulacja maszyny Turinga dla ustalonej liczby kroków jest prymitywną rekurencyjną. n ∈ N M S ( ⌈ M ⌉ , ¯ n ) ¯ 1 T n ¯ 0 nS:nat×nat→natn∈NMS(⌈M⌉,n¯¯¯)1¯¯¯Tn0¯¯¯n
Istnieje wiele zamkniętych terminów które są minimalnymi terminami równoważnymi . Nasz algorytm minimalizacji zwraca jeden z nich, gdy dajemy mu , a może nawet być tak, że jest w rzeczywistości tylko taki minimalny termin. Wszystko to nie ma znaczenia, jedyne, co się liczy, to fakt, że istnieje wiele minimalnych terminów, które są równoważne . λ x : n a t .Z1,…,Zkλ x : n a t .λx:nat.0λ x : n a t .λx:nat.0λ x : n a t .λx:nat.0λx:nat.0
Teraz, mając dowolną maszynę , rozważ termin
Jeśli działa wiecznie, to normalizuje się do dla każdego i jest równoważny . Aby zdecydować, czy działa wiecznie, wprowadzamy do naszego algorytmu minimalizacji i sprawdzamy, czy algorytm zwrócił jeden z . Jeśli tak, to działa wiecznie. Jeśli nie, to zatrzymuje się. (Uwaga: algorytm nie musi obliczaću : = λ x : n a t .M
u:=λx:nat.S(⌈M⌉,x)
Mun¯¯¯0¯¯¯nλx:nat.0MuZ1,…,ZkMZ1,…,Zk same w sobie mogą być zapisane na stałe w algorytmie).
Byłoby miło poznać argument, który działa ze słabszym pojęciem równoważności, na przykład po prostu redukowalność.β