ライスの定理の意味


8

ライスの定理の意味を理解するたびに、自分を混乱させる反例を見つけます。多分誰かが私が間違っていると思っているところを教えてくれるかもしれません。

計算可能な関数のセットのいくつかの重要なプロパティを取りましょう。たとえば、。明らかに、可算無限であると計算機能の可算無限の数ではありませんでもあります。L={fNN|fは計算可能な合計関数です}LL

今命令の有限集合のオーバーチューリング完全なプログラミング言語考えることができますと構文的に正しいプログラムのセットと、。私の言語のセマンティクスを好きなように選択できる場合は、プログラムに自由に番号を付けることもできます。そのため、プログラムの一部が計算可能な関数の任意の一部を正確に計算するようなプログラミング言語を設計できるはずです。カーディナリティが一致する限り。たとえば、であり、各プログラムは合計関数を計算します。以降 、そのような言語が存在する必要があります。ΣPΣ|P|=|N|Ppal={wΣ|w 回文です}pPpal|Ppal|=|L|

ただし、は明らかにチューリング計算可能であり、、重要なプロパティを決定するプログラムがあり、ライスの定理によれば不可能です。sPaldroメートルewsPaldroメートルewsTotalwL

控除のエラーはどこにありますか?これは、各パリンドロームプログラム(またはむしろのないプログラミング言語が存在しない意味任意の計算構造)は、正確に合計関数(またはむしろ計算任意の計算可能な関数の集合)は?これは本当に私を困惑させます。


2
あなたのすべてのコメントから、あなたは本当に計算能力が何であるかを理解していないようです。計算可能性の定義を確認してください。ユニバーサルチューリングマシンとは何か、そしてどのように機能するかを必ず理解してください。列挙、特にゲーデル列挙(smnプロパティを使用)の細かい点を必ず理解してください。ライスの定理は、基本が理解されれば非常に単純ですが、ほとんど意味がありません...あなたがしようとしていることは何でも、私の直感です。
ラファエル

回答:


6

忘れているのは、使用するすべてのマッピングが計算可能でなければならないということです。一致するカーディナリティがマッピングの存在を確実にすることを表明すると、それは真実である可能性がありますが、マッピングが計算可能である可能性は低くなります。計算可能性(少なくとも私が知っていること)では、すべてが有限であるか、数え切れないほど無限です。したがって、マッピングの存在は通常問題ではありません。問題は、それが計算可能なものかどうかです。

別の言い方をすれば、パリンドロームの単語と完全に計算可能な関数を正確に関連付けるマッピング(実際には数え切れないほど多くの)があることは確かです。しかし、そのような回文を考えるとw、マッピングが関数に関連付ける fw 実際にそのようなマッピングを使用して適用の結果を取得する方法はありません fwいくつかの議論に。マッピングでは、関数を識別したり、関数を使用して計算したりする方法はありません。言語に計算不可能なセマンティクスがあります。


それは理にかなっています。これは、ライスの定理が計算不可能なセマンティクスを持つ言語に適用できないことを意味するのか、または計算不可能なセマンティクスを持つ言語が一般に「禁止された」概念であるということですか?
Stefan Lutz

1
計算不可能な意味論は私が直感のために作り上げた表現です。セマンティクスは通常、構文(ゲーデル数を読み取る)から値のドメイン(計算可能な関数を読み取る)へのマッピングとして定義されます。関連付けられた関数を計算できるようにゲーデルの番号付けを定義することになっているので、私の表現はちょっとした矛盾です。私はあなたがやっていることを直感的にしようとしていたが、それは実際には間違ったことだった。しかし、そのような「概念」の使用は控えるべきです。はい:あなたが述べる理由のために、それを禁じられた概念として捉えてください。
バブー2015

多分ここで私の誤解があるかもしれませんが、セマンティクスを2つの関数の合成であると考える場合、最初のマッピングプログラム->ゲーデル数と2番目のゲーデル数->あなたがそれを説明した計算可能な関数、そしてゲーデル番号簡単にその定義に従うことができますが、最初のマッピングは、「計算可能なセマンティクス」があれば計算可能です。それはまだ役に立たない概念かもしれませんが、それを定義する問題はありませんか、それともありますか?
Stefan Lutz

どう答えたらいいのかわかりません。あなたの建設は私を不安にさせます。私にとって、ある言語でのプログラムの構文はゲーデル数です。私のテキストはすべて、私のすべての文字が数字と見なされるいくつかの記数法で大きな数として読みました。だから私は単一のマッピングを検討します。逆に、関数の列挙を教えてくれれば、その数字をある種の構文表現として読んでいます。私は違いを生むのを避けようとするだけです。これで、(計算可能な)中間の全単射マッピングをNからNに導入できますが、それほど大きな変化はありません。
バブー2015年

「私はすべての文字が数字と見なされるいくつかの記数法で大きな数としてテキストを読んだだけです」-したがって、プログラムを文字列として入力として受け取り、それを数値に変換します。各プログラムは正確に1つの数値に対応します( =全単射)。また、あなたは「いくつかの列挙方式」を述べているので、それが計算可能である限り、そのエンコーディングが実際にどの程度正確に機能するかは重要ではありませんか?しつこくて申し訳ありませんが、本当にこれを手に入れたいです。
Stefan Lutz

2

また、プログラムに番号を付けることもできます。そのため、カーディナリティが一致する限り、プログラムの一部のサブセットが計算可能な関数の一部の任意のサブセットを正確に計算するプログラミング言語を設計できるはずです。

一部の関数のセットでは、それは機能します。他人のためではない。しかし、新しいプログラミング言語はいくつかのプログラムの新しい番号付けであり、それはライスの定理が話しているものではありません。

ライスの定理のために、すべての部分的な再帰関数のゲーデル列挙のみを考慮し、次に、インデックスセット、つまり、指定されたセットの関数の列挙内のすべてのインデックスのセットについてのみ述べます。

それはすべてのインデックスのセットをカバーするわけではありません。プログラムには決定的な特性がたくさんあるので、それは良いことです。こちらもご覧ください


1
「新しいプログラミング言語は、いくつかのプログラムの新しい番号付けです。」-チューリング完全な言語を考えると、それはすべての計算可能な関数に番号を付けることを意味しないのですか?とにかく、私の誤解は、ゲーデルの番号付けは自分で計算できる必要はないということでした。
Stefan Lutz、

@Skrjibanすべての適切なプログラミング言語、ゲーデルの列挙です。(明確にするために、ゲーデルの番号付け必要に応じ部分的に計算できます。)
ラファエル

2

すべての列挙がプログラムのインデックスからプログラムに関連付けられた関数を効果的に計算できるわけではないため、プログラムのすべての列挙が「受け入れられる」とは限りません。つまり、ユニバーサルマシン(utmプロパティ)はありません。列挙を「受け入れる」ために通常必要とされる2番目のプロパティはsmnプロパティです。プログラムインスタンスのインデックスを均一かつ効果的な方法で計算できる必要があります。

utmとsmnを楽しんでいる列挙のペアが再帰的に同型であること(ロジャーの等価定理)を証明できます。つまり、2つの列挙の間でプログラムを変換する効果的な方法があるということです。これにより、理論は列挙に依存しなくなります。

これはすでに、utmとsmnの関連性を強調するのに十分です。計算可能性への「抽象」アプローチの2つの基本的な定理です。

ロジャーの定理は、彼の著書「再帰関数の理論と効果的な計算能力」(演習2-10、ページ41)で演習(原文!)として提示されています。しかし、証明は確かにそれほど難しいものではありません。


1

とりわけ、私が抱えていた問題に対処するUdi BokerとNachum Dershowitzによるこの興味深い論文を見つけました。序論では、彼らはそれを述べています(私の強調)

「とはどういう意味ですか」f計算可能ですか?」最も可能性が高いのは、チューリングマシンがあることですM、 そのような M 計算する fドメインの文字列表現を使用 D。しかし、許可されている文字列表現は何ですか?明らかに、任意の表現(DΣ)は問題があります–決定関数を「計算可能」にします。たとえば、マシンコードのドメインを並べ替えることにより、停止関数は単純なパリティ関数に変形することができます [...]

そしてさらに

別のアプローチは、「自然な」または「効果的な」表現のみを許可することです。ただし、計算可能性を定義するという文脈では、「自然さ」または「有効性」という漠然とした未定義の概念に頼る必要があり、それによって計算可能性を特徴付けるというまさにその目的を打ち負かすことになります。

これは、「計算可能なセマンティクス」と呼ばれる方法を説明しています。この論文には、Michael Rescorlaからの次の引用も含まれています。

教会の論文を含むとされる概念的な分析は、微妙ながらも取り除けない循環性を生み出すと示唆します。それらは、計算可能性の直観的な概念を呼び出すことにより、計算可能性の直感的な概念を特徴付けます。私は提出します[...]構文エンティティと非構文エンティティ自体の間の意味論的相関が計算可能であることを要求する必要があります。しかし、提案された分析は計算能力を非循環的に明らかにするものではありません。

したがって、著者によると、計算可能な関数の一般的な正式な定義は、計算可能性が何を意味するかについての非公式な直観に依存しています。


1
私があなたに送った最後の2つのコメントで私が説明したものにそれほど近いではありません。計算可能性の定義を提供するのはCTテーゼであり、したがって、証明不可能ではありますが、残りの基礎石であると私は述べました。私はあなたがこれらのコメントに返信することを期待していた。------もう1つのポイントは、これがどのようにあなたの質問に答えられるかはわかりません。あなたの質問はあなたの推論の誤りについてでした、そしてあなたはこの誤りを見つける人ではありませんでした。
バブー2015年

あなたが気分を害した場合は申し訳ありませんが、あなたのコメントは明らかに役に立ちました!言語からの計算可能なコンパイラの存在に対応したかったLL の計算可能なインタープリターの存在と同等でなければなりません L「計算可能な」インタープリターが何であるかについて考えさせられ、それによってゲーデルの番号付けが「計算可能である」可能性について考えさせられ、それが私を上記の論文に導いた。それがすでにあなたの意図したことだったら、どうやら私にはそれを見ることができませんでした。
Stefan Lutz

しかし、あなたが正しい、それが私にそれを明確に理解可能にしたものですが、それは最初の質問に答えません。代わりに、あなたの回答を承認済みとしてマークします。
Stefan Lutz、2015年

さて、あなたはラファエルと私に感謝しました。しかし、ここで人々に感謝する方法は、彼らに投票するか、彼らの答えを受け入れることです。元の質問に対するより良い答えを考え出さない限り、あなたは前向きな貢献に感謝を示すべきです。少なくともそれは私の理解です。個人的には、不注意に反対票を投じた無能な多くの人々への抗議として、反対票を投じることはありません。科学は対話ではなく、投票です。計算可能の定義については、私が送ったコメントを見てください。Church-Turing論文で定義されているため、まさにその概念は扱いにくいものです。幸運を。
バブー2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.