Coba bukti yang lebih cantik dengan animasi. Dan karena ansewrs harus mengandung lebih dari sekadar tautan ke situs, inilah jawaban untuk pertanyaan Anda.
Pertama, mari kita ingat bagaimana bukti tidak adanya oracle Menghentikan bekerja. Kami membuktikan bahwa dengan memberikan kandidat Huntuk Menghentikan oracle, ada program Pdan input ayang Hgagal memprediksi dengan benar apa yang P(a)dilakukan.
Teorema: Biarkan Hprogram apa pun yang mengambil dua input dan selalu mengembalikan salah satu haltatau loop. Lalu ada program Qdan input ayang Q(a)berhenti jika, dan hanya jika, H(Q,a)kembali loop.
Bukti. Pertimbangkan programnya
program P(y):
if H(y,y) = halt then
loop forever
else:
return
Biarkan Q = Pdan a = P. Salah satu H(Q,a) = haltatau H(Q,a) = loop:
- jika
H(Q,a) = haltkemudian Q(a)(yang adil P(P)) berjalan selamanya dengan definisi P.
- jika
H(Q,a) = loop kemudian Q(a)dihentikan oleh definitoin dari P.
QED
Anda bertanya mengapa kami mempertimbangkan H(P,P)alih-alih H(P,X)untuk yang lain X. Jawaban yang jelas adalah "karena H(P,P)apa yang membuat buktinya bekerja"! Jika Anda menggunakanH(P,X) untuk beberapa sewenang-wenang X, maka Anda akan terjebak. Memang, buktinya akan terlihat seperti ini:
Bukti rusak.Pertimbangkan programnya
program P(y):
if H(y,y) = halt then
loop forever
else:
return
Biarkan Q = Pdan a = Xuntuk beberapa sewenang-wenang X. AntaraH(Q,X) = halt atau H(Q,X) = loop:
- misalkan
H(Q,X) = haltkita tidak bisa mengatakan apa yang P(X)terjadi, karena apakah P(X)penghentian tergantung pada apa yang H(X,X)kembali. Kami terjebak. Namun, jika kita tahu ituP(X) dan X(X)sama, kita bisa membuat kemajuan. (Jadi, kita harus mengambilnya X = P).
- jika
H(Q,a) = loop kemudian kita terjebak lagi, dan kita akan macet jika X = P.
Tidak QED.
Saya harap ini menunjukkan bahwa kita harus mempertimbangkan H(P,P)untuk membuat ide kita berfungsi.