Tantangan
Tulis program P, tanpa masukan, sehingga proposisi “eksekusi P akhirnya berakhir” tidak tergantung pada aritmetika Peano .
Aturan formal
(Jika Anda seorang ahli logika matematika yang menganggap uraian di atas terlalu informal.)
Seseorang dapat, pada prinsipnya, mengubah beberapa mesin U Universal Turing (misalnya bahasa pemrograman favorit Anda) menjadi rumus aritmatika Peano HALT di atas variabel p , di mana HALT ( p ) menyandikan proposisi “ U mengakhiri pada program (Di -encode oleh Gödel oleh) p ”. Tantangannya adalah menemukan p sedemikian rupa sehingga HALT ( p ) atau HHALT ( p ) tidak dapat dibuktikan dalam aritmatika Peano.
Anda dapat menganggap program Anda berjalan pada mesin yang ideal dengan memori tidak terbatas dan integer / pointer yang cukup besar untuk mengaksesnya.
Contoh
Untuk melihat bahwa program-program semacam itu ada, salah satu contohnya adalah sebuah program yang secara mendalam mencari bukti aritmetika Peano dari 0 = 1. Aritmatika Peano membuktikan bahwa program ini berhenti jika dan hanya jika aritmatika Peano tidak konsisten. Karena aritmatika Peano konsisten tetapi tidak dapat membuktikan konsistensinya sendiri , ia tidak dapat memutuskan apakah program ini berhenti.
Namun, ada banyak proposisi lain yang tidak bergantung pada aritmatika Peano di mana Anda dapat mendasarkan program Anda.
Motivasi
Tantangan ini diilhami oleh sebuah makalah baru oleh Yedidia dan Aaronson (2016) yang memamerkan mesin Turing yang terdiri dari 7.918 negara bagian yang nonterminasi-nya tidak tergantung pada ZFC , sistem yang jauh lebih kuat daripada aritmatika Peano. Anda mungkin tertarik pada kutipannya [22]. Untuk tantangan ini, tentu saja, Anda dapat menggunakan bahasa pemrograman pilihan Anda sebagai pengganti mesin Turing yang sebenarnya.
x = 1.0; while (x) { x = x / 2.0; }
sebenarnya akan berhenti sangat cepat.Jawaban:
Haskell, 838 byte
"Jika kamu ingin sesuatu dilakukan, ..."
Penjelasan
Program ini secara langsung mencari bukti aritmatika Peano dari 0 = 1. Karena PA konsisten, program ini tidak pernah berakhir; tetapi karena PA tidak dapat membuktikan konsistensinya sendiri, nonterminasi program ini tidak tergantung pada PA.
T
adalah jenis ekspresi dan proposisi:A P
mewakili proposisi ∀ x [ P ( x )].(V 1 :$ P) :$ Q
mewakili proposisi P → Q .V 2 :$ P
mewakili proposisi ¬ P .(V 3 :$ x) :$ y
mewakili proposisi x = y .(V 4 :$ x) :$ y
mewakili x + y alami .(V 5 :$ x) :$ y
mewakili x alami ⋅ y .V 6 :$ x
mewakili S alami ( x ) = x +1.V 7
mewakili alam 0.Dalam lingkungan dengan variabel bebas i , kami menyandikan ekspresi, proposisi, dan bukti sebagai matriks bilangan bulat 2 × 2 [1, 0; a , b ], sebagai berikut:
Aksioma yang tersisa dikodekan secara numerik dan termasuk dalam lingkungan awal Γ :
Bukti dengan matriks [1, 0; a , b ] dapat diperiksa diberikan hanya sudut kiri bawah sebuah (atau nilai kongruen lain untuk a modulo b ); nilai-nilai lain ada untuk memungkinkan komposisi bukti.
Sebagai contoh, berikut adalah bukti bahwa penambahan bersifat komutatif.
Anda dapat memverifikasinya dengan program sebagai berikut:
Jika buktinya tidak valid, Anda akan mendapatkan daftar kosong sebagai gantinya.
sumber