(勉強中)パラドックスがいっぱい

続き

 

uso-800-plus-alpha.hatenablog.com

 

菊池誠さんの『不完全性定理』p.281を参考にすると、

  K("x") < n 

というのは、「n桁未満のプログラムで、出力が"x"になるものが存在する」ということを意味していて(なので Σ_1論理式)、

  n ≦ K("x")

の場合だと、「n桁未満のプログラムに、出力が"x"になるものが存在しない」ということを意味する(なので Π_1論理式)のだそうです。

※前の記事で適当な用語法を使ったせいで、原文とは記号が微妙に違います。そのせいで間違ってたらごめんなさい。

 

で、

理論TをPAの拡大(とかの例の条件を満たす)理論としたときに、

或るbが存在して、自然数 a について、T ⊬ b ≦ K(a) である。

を、Chaitinの不完全性定理と呼びます。

 

前の記事で、K(x)の値は頭打ちにはならないと言っておいてこの仕打ちです。

 

証明は、定理生成プログラムを準備するという方法で行われます。

ここも『不完全性定理』を見ながらやってみます。

 

Ruby上で、証明を簡単な順から並べるプログラムを組んだとします。

  f(0) = 0x303d30 (0=0※公理のため1行で証明終了)

  f(1) = 0x313d31 (1=1※上に同じ)

  ・・・

 

で、「証明の16進コード n が与えられたとき、その証明の結論がb ≦ K(a) 型の定理だったかどうか判定する述語」が定義できたとして、それを b_Ka?(n) と書くことにします。

 

  def g(n) 

    b_ka?(f(n)) ? a : g(n+1) 

  end

 

  $><<g(1)

※いままでの用語法だと、ここで16進数表記→文字列表記に変換すべきだが、端折る。

 

bを大幅に圧縮できる数として選んでやると、全体のプログラムの桁数をb未満に抑えることが可能となる。このとき、b桁未満のプログラムからaが出力されているため、

   K(a) < b

であり、また、b_Ka?(n)がtrueを返しているので、fのプログラムにバグが無ければ、

  b ≦ K(a)

である。

 

~完~

 

これが「ベリーのパラドックスっぽいよね」という話があるそうです。

b ≦ K(a) は、「aがb文字未満で定義できない」と言っているように見えます。それに基づいて、K(a) < b、つまり「aがb文字未満で定義できる」ことになってしまうというノリは、「"30文字未満で定義できない最小の自然数"って"30文字未満で定義できてる"よね」と比較して、確かにそれっぽいです。

 

 

ここから、抜き打ちテストのパラドックスに話を飛ばします。

上で書き忘れていましたが、理論Tには、無矛盾であるという前提があります。

その上で、T ⊬ b ≦ K(a) です。

 

この b について、b桁以下となるプログラムの数はいくつでしょうか?

前の記事の感じでは、 16^b個あることになります。

 

同じく前の記事の感じでは、 0 ≦ x ≦ 16^bの中に、どう頑張っても b ≦ K(x) となってしまう x が存在します。

そのため、b ≦ K(x) となる x の数 m は、 1 ≦ m ≦ 16^bの範囲に含まれることが分かります。

 

まず、m=1としてみましょう。

この場合、 0 ≦ x ≦ 16^bの中の1個だけが b ≦ K(x) を満たし、残りが K(x) < b を満たすということです。

実は、K(x) < b を満たすときには、これを証明することが可能です。b桁までのプログラムを調べて、出力が x になるものを探せばいいという理屈のようです。

 

ということは、

b ≦ K(x) を満たす、証明できないはずの1個を除いて、全て K(x) < b であることが証明されてしまうということになります。

つまり、消去法で b ≦ K(x) を満たす x が特定されてしまいます。

 

これではいけません。

したがって、 2 ≦ m ≦ 16^bであることが分かりました。

正確に言うと、

理論Tが無矛盾ならば、 2 ≦ m ≦ 16^bです。

 

では、m=2でしょうか?

この場合も同様に、K(x) < b ではなさそうな2個を残して、すべてK(x) < bであることが判明してしまいます。さらに、m=1である可能性が上記の議論で潰れているので、(1つなんだけどどちらか分からないという可能性は無く)残った2つとも b ≦ K(x) を満たすことが確定してしまいます。

 

これではいけません。

したがって、 3 ≦ m ≦ 16^bであることが分かりました。

正確に言うと、

理論Tが無矛盾ならば、 3 ≦ m ≦ 16^bです。

 

では、m=3でしょうか?

・・・

 

では、m=4でしょうか?

・・・

 

・・・

・・・

・・・

では、m= 16^bでしょうか?

おそらく、ここまでに圧縮可能なものが少なくとも一つはあったでしょう。

したがって、m= 16^bもあり得ません。

 

mは、1~ 16^bの中のどこかにあるはずです。

しかし、そのどれでもないという結果になってしまいました。

 

もしも、理論Tの無矛盾性が(T内で)証明できたとしましょう。そのときには、この議論が前件抜きで成立するため、そのまま矛盾が発生します。

・・・つまり、理論Tの無矛盾性が(T内で)証明できないということです。

 

~完~

 

まず、m=1か?→違う

じゃあm=2か?→違う

じゃあ・・・

・・・

???

というノリが、抜き打ちテストのパラドックス

まず、金曜か?→違う

じゃあ木曜か?→違う

じゃあ・・・

・・・

???

という構成と似てますね。

 

参考書が無く、Kritchman and Raz (2010)の"The Surprise Examination Paradox and the Second Incompleteness Theorem" を見ながら書いたので、ヤベーことを言っているかもしれませんが、誰か直すでしょ(他人事)。

 

参考

菊池誠不完全性定理』2014年

Kritchman and Raz, "The Surprise Examination Paradox and the Second Incompleteness Theorem" 2010年

Wikipediaの記事はリンクを見てください。