Ini adalah pertanyaan yang diutarakan dengan buruk, jadi mari kita pertama-tama memahaminya. Saya akan melakukannya dengan gaya teori komputabilitas. Jadi saya akan menggunakan angka alih-alih string: sepotong kode sumber adalah angka, bukan serangkaian simbol. Tidak masalah, Anda dapat mengganti dengan s t r i n gNstring seluruh bawah.
Mari ⟨m,n⟩ menjadi fungsi pasangan .
Katakanlah bahasa pemrograman L=(P,ev) diberikan oleh data berikut:
- satu set yang dapat ditentukan P⊆N dari "program yang sah", dan
- sebuah komputasi dan parsial fungsi ev:P×N→N .
Fakta bahwa adalah decidable berarti ada total peta yang dapat dihitung v a l i d : N → { 0 , 1 } sedemikian rupa sehingga v a l i d ( n )Pvalid:N→{0,1} . Secara informal, kami mengatakan bahwa adalah mungkin untuk mengetahui apakah string yang diberikan adalah bagian kode yang valid. Fungsi e v sangat penting sebagai juru bahasa kita: e v ( m , n ) menjalankan kode m pada input nvalid(n)=1⟺n∈Pevev(m,n)mn - hasilnya mungkin tidak ditentukan.
Kami sekarang dapat memperkenalkan beberapa terminologi:
- Bahasa adalah total jika adalah fungsi total untuk semua m ∈ Pn↦ev(m,n)m∈P .
- Sebuah bahasa menafsirkan bahasa L 2 = ( P 2 , e v 2 ) jika ada u ∈ P 1 sehingga e v 1 ( u , ⟨ n , m ⟩ ) ≃ e v 2 ( n , m ) untuk semua n ∈ PL1=(P1,ev1) L2=(P2,ev2)u∈P1ev1(u,⟨n,m⟩)≃ev2(n,m)n∈Pdan . Di sini u adalah simulator untuk L 2 diimplementasikan di L 1 . Ia juga dikenal sebagai program universal untuk L 2 .m∈NuL2L1L2
Definisi lain dari " interprets L 2 " dimungkinkan, tetapi saya tidak akan membahasnya sekarang.L1L2
Kami mengatakan bahwa dan L 2 adalah setara jika mereka menginterpretasikan satu sama lain.L1L2
Ada "bahasa yang paling kuat" dari mesin Turing (yang Anda sebut sebagai "mesin Turing") di mana n ∈ N adalah penyandian mesin Turing dan φ ( n , m ) adalah fungsi komputasi sebagian yang "menjalankan mesin Turing yang dikodekan oleh n pada input m ". Bahasa ini dapat memadukan semua bahasa lain, jelas karena kami membutuhkan e vT=(N,φ)n∈Nφ(n,m)nmev menjadi dihitung.
Definisi bahasa pemrograman kami sangat santai. Agar hal-hal berikut dapat dilalui, mari kita membutuhkan tiga kondisi lagi:
- mengimplementasikan fungsi penerus: ada s u c c ∈ P sedemikian sehingga e v ( s u c c , m ) = m + 1 untuk semua m ∈ NLsucc∈Pev(succ,m)=m+1m∈N ,
- mengimplementasikan fungsi diagonal: ada d i a g ∈ P sehingga e v ( d i a g , m ) = ⟨ m , m ⟩ untuk semua m ∈ NLdiag∈Pev(diag,m)=⟨m,m⟩m∈N ,
- ditutup di bawah komposisi fungsi: jika L mengimplementasikan f dan g maka ia juga mengimplementasikan f ∘ g ,LLfgf∘g
Hasil klasiknya adalah ini:
Teorema: Jika suatu bahasa dapat menafsirkan dirinya sendiri maka itu tidak total.
Bukti. Misalkan adalah program universal untuk total langauge L diimplementasikan dalam L , yaitu, untuk semua m ∈ P dan n ∈ N ,
e v ( u , ⟨ m , n ⟩ ) ≃ e v ( m , n ) .
Sebagai penerus, diagonal, dan e v ( u , - ) diimplementasikan dalam L , demikian juga komposisi mereka e vuLLm∈Pn∈N
ev(u,⟨m,n⟩)≃ev(m,n).
ev(u,−)L . Ada ada
n 0 ∈ P sehingga
e v ( n 0 , k ) ≃ e v ( u , ⟨ k , k ⟩ ) + 1 , tapi kemudian
e v ( u , ⟨ n 0 , n 0 ⟩ ) ≃ e v (k↦ev(u,⟨k,k⟩)+1n0∈Pev(n0,k)≃ev(u,⟨k,k⟩)+1
Karena tidak ada nomor sama penggantinya sendiri, berikut bahwa
L tidak total atau bahwa
L tidak menafsirkan sendiri. QED.
ev(u,⟨n0,n0⟩)≃ev(n0,n0)≃ev(u,⟨n0,n0⟩)+1
LL
Perhatikan bahwa kami dapat mengganti peta pengganti dengan peta bebas-fixpoint lainnya.
Berikut adalah teorema kecil yang saya pikir akan membersihkan kesalahpahaman.
Teorema: Setiap bahasa total dapat ditafsirkan oleh bahasa total lainnya.
Bukti. Biarkan menjadi bahasa total. Kami mendapatkan total L ' yang menafsirkan L oleh sebelahnya untuk L nya evaluator e v . Lebih tepatnya, mari P ' = { ⟨ 0 , n ⟩ | n ∈ P } ∪ { ⟨ 1 , 0 ⟩ } dan mendefinisikan e v ' sebagai
e v ' ( ⟨ b , n ⟩ , mLL′LLevP′={⟨0,n⟩∣n∈P}∪{⟨1,0⟩}ev′
Jelas, L ' total karenaLtotal. Untuk melihat bahwa L ' dapat mensimulasikanLhanya mengambilu=⟨1,0
ev′(⟨b,n⟩,m)={ev(n,m)ev(m0,m1)if b=0,if b=1 and m=⟨m0,m1⟩
L′LL′L , sejak itu
eu=⟨1,0⟩ev′(u,⟨m,n⟩)≃ev(m,n) , seperti yang diperlukan. QED.
L′L′L melakukannya.
LL′L′LLL tidak menafsirkan sendiri.