これは言い回しの悪い質問なので、まずそれを理解しましょう。私はそれを計算可能性理論のスタイルでやろうとしています。したがって、文字列の代わりに数字を使用します。ソースコードは、記号の文字列ではなく数字です。本当に問題ではありませんをs t r i nに置き換えてもかまいませんN。以下で gにます。string
ましょう⟨m,n⟩もペアリング機能。
プログラミング言語は次のデータによって与えられる:L=(P,ev)
- 決定可能集合「の有効なプログラム」の、およびP⊆N
- 計算と部分的機能ev:P×N→N。
事実総計算地図ある決定可能な手段であるV L iは、Dは:N → { 0 、1 }ように、V L iは、dは(NPvalid:N→{0,1}。非公式には、特定の文字列が有効なコードであるかどうかを判断できると言っています。関数 e vは、本質的に私たちの言語のインタープリターです: e v (m 、n )は、入力 nでコード mを実行します–結果は未定義かもしれません。valid(n)=1⟺n∈Pevev(m,n)mn
ここでいくつかの用語を紹介できます。
- 言語は、合計場合のすべての合計の関数であり、M ∈ P。n↦ev(m,n)m∈P
- 言語解釈の言語L 2 = (P 2、E 、V 2)が存在する場合、U ∈ P 1、その結果のE V 1(U 、⟨ N 、M ⟩ )≃ のE V 2(N 、M )すべてについてのn ∈ PL1=(P1,ev1) L2=(P2,ev2)u∈P1ev1(u,⟨n,m⟩)≃ev2(n,m)n∈Pと。ここで Uはシミュレータである L 2に実装さ L 1。またとして知られているユニバーサルプログラムのための L 2m∈NuL2L1L2。
「がL 2を解釈する」の他の定義L1L2も可能ですが、ここではこれに触れないようにします。
とL 2と言いますL1L2は、相互に解釈する場合、同等であるます。
そこ「最も強力な」言語である(あなたは「チューリングマシン」と呼ぶ)チューリングマシンのは、ここでのn ∈ Nはチューリングマシンとのエンコーディングであるφ (N 、M )されます「入力mでnによってエンコードされたチューリングマシンを実行する」部分的に計算可能な関数。この言語は、e vを計算可能にする必要があるため、明らかに他のすべての言語と相互作用できます。T=(N,φ)n∈Nφ(n,m)nmev
プログラミング言語の定義は非常にリラックスしています。以下を実行するには、さらに3つの条件が必要です。
- 実装後継機能:ある S U C C ∈ Pその結果のE vは(S 、U 、C 、C 、M )= M + 1のすべてのための M ∈ N、Lsucc∈Pev(succ,m)=m+1m∈N
- 実装対角線機能:そこをさ dをI A G ∈ Pように、EのV (D I G 、M )= ⟨ M 、M ⟩すべてに対して M ∈ N、Ldiag∈Pev(diag,m)=⟨m,m⟩m∈N
- 関数の合成の下で閉じている:場合 Lの実装 Fと G、それはまた、実装 F ∘ G、LLfgf∘g
古典的な結果はこれです:
定理: 言語がそれ自体を解釈できる場合、それは完全ではありません。
証明。仮定合計のlangaugeのための普遍的なプログラムであるLに実装Lすべてのため、すなわち、M ∈ PとN ∈ N、
EのV (U 、⟨ M 、N ⟩ )≃ のE V (M 、N )。
後継、対角線、およびAS のE V (U 、- )に実装されているLので、それらの組成であるK ↦uLLm∈Pn∈N
ev(u,⟨m,n⟩)≃ev(m,n).
ev(u,−)L。存在
nは0 ∈ Pのように
、EのV (nは0、K )≃ のE V (uが、⟨ K 、K ⟩ )+ 1が、その後
のE V (U 、⟨ N 0、N 0 ⟩ )≃ E V (k↦ev(u,⟨k,k⟩)+1n0∈Pev(n0,k)≃ev(u,⟨k,k⟩)+1
ない番号が存在しないように、自身の後継に等しく、その次の
Lが合計ではないか、または
Lは、それ自体を解釈しません。QED。
ev(u,⟨n0,n0⟩)≃ev(n0,n0)≃ev(u,⟨n0,n0⟩)+1
LL
後続のマップを、他の不動点のないマップに置き換えることができることを確認してください。
ここに誤解を一掃するだろうと思う小さな定理があります。
定理: すべての合計言語が別の合計の言語で解釈することができます。
LL′LLevP′={⟨0,n⟩∣n∈P}∪{⟨1,0⟩}ev′
ev′(⟨b,n⟩,m)={ev(n,m)ev(m0,m1)if b=0,if b=1 and m=⟨m0,m1⟩
L′LL′Lu=⟨1,0⟩ev′(u,⟨m,n⟩)≃ev(m,n), as required. QED.
Exercise: [added 2014-06-27] The language L′ constructed above is not closed under composition. Fix the proof of the theorem so that L′ satisfies the extra requirements if L does.
In other words, you never need the full power of Turing machines to interpret a total language L – a slightly more powerful total language L′ suffices. The language L′ is strictly more powerful than L because it interprets L, but L does not interpret itself.