Saya menonton " Lima Tahapan Menerima Matematika Konstruktif " oleh Andrej Bauer dan dia mengatakan bahwa ada dua jenis pembuktian dengan kontradiksi (atau dua hal yang oleh para ahli matematika disebut pembuktian oleh kontradiksi):
- Anggap salah ... bla bla bla, kontradiksi. Karena itu P benar.
- Anggap benar ... bla bla bla, kontradiksi. Karena itu P salah.
Yang pertama setara dengan Law of Excluded Middle (LEM) dan yang kedua adalah bagaimana membuktikan negasi.
Bukti ketidakpastian Masalah Hentikan (HP) adalah bukti berdasarkan kontradiksi: anggap ada mesin yang dapat memutuskan HP ... bla bla bla, kontradiksi. Karenanya D tidak ada.
Jadi, biarkan menjadi " D ada dan dapat memutuskan HP". Anggap P benar ... bla bla bla, kontradiksi. Karena itu P salah.
Ini sepertinya adalah jenis bukti kedua berdasarkan kontradiksi, jadi mungkinkah untuk membuktikan ketidakpastian masalah penghentian dalam Coq (tanpa mengasumsikan LEM)?
EDIT: Saya ingin melihat beberapa poin tentang membuktikan ini menggunakan kontradiksi. Saya tahu bahwa ini juga dapat dibuktikan menggunakan diagonalisasi.
sumber
Jawaban:
Anda benar bahwa masalah penghentian adalah contoh dari jenis kedua "bukti oleh kontradiksi" - itu benar-benar hanya pernyataan negatif.
Misalkan
decides_halt(M)
adalah predikat yang mengatakan bahwa mesinM
memutuskan apakah inputnya adalah mesin yang berhenti (yaitu,M
program yang untuk beberapa mesinm
dan inputi
, memutuskan apakahm
berhenti pada inputi
).Lupa sejenak tentang bagaimana membuktikannya, masalah penghentian adalah pernyataan bahwa tidak ada mesin yang memutuskan masalah penghentian. Kami mungkin menyatakan ini dalam Coq sebagai
(exists M, decides_halt M) -> False
, atau mungkin kami lebih suka mengatakan mesin yang diberikan tidak menyelesaikan masalah penghentianforall M, decides_halt M -> False
. Ternyata tanpa aksioma, dua formalisasi ini setara dalam Coq. (Saya sudah menguraikan buktinya sehingga Anda dapat melihat cara kerjanya, tetapifirstorder
akan melakukan semuanya!)Saya pikir kedua pernyataan itu tidak terlalu sulit untuk dibuktikan sebagai argumen diagonalisasi, meskipun memformalkan mesin, komputabilitas, dan penghentian mungkin cukup menantang. Sebagai contoh yang lebih sederhana, tidak terlalu sulit untuk membuktikan teorema diagonalisasi Cantor (lihat https://github.com/bmsherman/finite/blob/master/Iso.v#L277-L291 untuk bukti bahwa
nat -> nat
dannat
bukan isomorfik).Diagonalisasi di atas memberikan contoh bagaimana Anda bisa mendapatkan kontradiksi dari isomorfisme antara
nat -> nat
dannat
. Inilah inti dari bukti yang diuraikan sebagai contoh yang lengkap:Bahkan tanpa melihat perinciannya, kita dapat melihat dari pernyataan bahwa bukti ini mengambil keberadaan belaka dan menunjukkan bahwa itu mustahil. Pertama-tama kita memberi dua sisi nama
seq
dan namaindex
. Kuncinya adalah bahwa perilaku bijih pada urutan khususf := fun n => S (seq n n)
dan indeksnyaindex f
bertentangan. Bukti masalah terputus-putus akan menghasilkan kontradiksi dengan cara yang sama, membuat hipotesis tentang mesin yang menyelesaikan masalah penghentian dengan mesin yang dipilih dengan hati-hati (dan khususnya yang benar-benar tergantung pada mesin yang diasumsikan).sumber