Wypróbuj ładniejszy dowód z animacjami. A ponieważ odpowiedzi powinny zawierać coś więcej niż link do strony, oto odpowiedź na twoje pytanie.
Po pierwsze, przypomnijmy sobie, jak działa dowód nieistnienia wyroczni w Halting. Udowadniamy, że biorąc pod uwagę każdego kandydata Hna wyrocznię z Stopu, istnieje program Pi dane wejściowe, adla których Hnie można poprawnie przewidzieć, co P(a)się stanie.
Twierdzenie: Niech Hbędzie dowolnym programem, który pobiera dwa dane wejściowe i zawsze zwraca albo haltalbo loop. Istnieje program Qi dane wejściowe a, które Q(a)zatrzymują się, jeśli i tylko jeśli H(Q,a)powróci loop.
Dowód. Rozważ program
program P(y):
if H(y,y) = halt then
loop forever
else:
return
Niech Q = Pi a = P. Albo H(Q,a) = haltalbo H(Q,a) = loop:
- jeśli
H(Q,a) = haltwtedy Q(a)(co jest sprawiedliwe P(P)) działa wiecznie zgodnie z definicją P.
- jeśli
H(Q,a) = loopnastępnie Q(a)zatrzymają się z definitywnością P.
CO BYŁO DO OKAZANIA
Zapytałeś, dlaczego rozważamy H(P,P)zamiast H(P,X)jakiegoś innego X. Oczywista odpowiedź brzmi „ponieważ H(P,P)to sprawia, że dowód działa”! Jeśli użyjesz H(P,X)jakiegoś arbitralnego X, utkniesz. Rzeczywiście, dowód wyglądałby następująco:
Złamany dowód. Rozważ program
program P(y):
if H(y,y) = halt then
loop forever
else:
return
Niech Q = Pi a = Xdla niektórych dowolnych X. Albo H(Q,X) = haltalbo H(Q,X) = loop:
- załóżmy,
H(Q,X) = haltże nie możemy powiedzieć, co P(X)robi, ponieważ to, czy P(X)zatrzymanie zależy od tego, co H(X,X)powróci. Utknęliśmy. Gdybyśmy jednak wiedzieli o tym P(X)i byli X(X)tacy sami, moglibyśmy poczynić postępy. (Więc naprawdę powinniśmy wziąć X = P).
- jeśli
H(Q,a) = loopwtedy utkniemy ponownie, i utknęlibyśmy, gdyby X = P.
Brak QED.
Mam nadzieję, że to pokazuje, że musimy rozważyć H(P,P), aby nasz pomysł zadziałał.