ゲーデルとコンピューター

最近、数学基礎論(論理学)の本をよんでる。

ゲーデルの定理を理解するには、専門家の書いた本を読むのが一番だと思い、「ゲーデルと20世紀の論理学」という本を読んでる。ゲーデル生誕100周年を記念して書かれた本で全4巻ある。田中 一之、竹内外史などそうそうたるメンバーが執筆している。

コンピュータの創世記に活躍したジョン・フォン・ノイマンはコンピューターの基礎論に関わる前にこの分野に関わっていた。そういうことを踏まえて論理学を見つめるとプログラムを書いた経験のある人なら、比較的勉強しやすい分野ではないかと思う。

初めて論理学の本を手にとったのは小学生の時で、なんであたりまえに分かることをわざわざ記号に置き換えるのだろうと思い、なんて退屈な研究をする人たちがいるんだと思った。

例えば、ソクラテスが死ぬことを証明するために普通の言葉で示すなら、

(A→B)ソクラテスは人間である。
(B→C)人間は死ぬ。
従って
(A→C)ソクラテスは死ぬ。
と小学生でも理解できる三段論法を、わざわざA、B、Cの記号に置き換え、真理値表とかを使い説明していく。

それでも人間の思考が記号の操作の組み合わせで表現できるという事実は強烈に印象に残った。(ゲーデルの主張を注意深く読むと限られた条件での定理なので、広く風潮されてるように、そのまま人間の精神の問題に適用できるかは疑問であるけど。)

論理学はコンピューターと相性が良くて、Prologって言語を使うと、ソクラテスの問題は

human(socrates). 事実
mortal(X):-human(X). 規則

?- mortal(socrates). 質問
yes 出力)

と型と関数を定義するだけで書ける。
http://web.sfc.keio.ac.jp/~mukai/2006-LP/01/lp01-syllabus.html
http://www.geocities.jp/m_hiroi/prolog/prolog01.html#chap3

ある科学的事実、またはロジックが受けられやすいかどうかは、その時代の世情にもよると思う。地球が丸いという事実は現代じゃ疑う人がいないと思うけど、それは理解しているのではなく、メディアを通じてその考え方に慣れているにすぎない。

ゲーデルの定理は数学の定理として1931年に発表されたけど、すぐに人間の知性に対する哲学的な問題として捉えなおされた。哲学は拡大解釈をして、議論が収まらない方向にもっていくことが多々あるので、そのころの議論をフォローする気はさらさらない。

今の時代だったら、コンピューターの話に結びつけて理解したほうが、理解しやすいと思う。ゲーデルの時代には記述を記号に置き換え、証明を論理演算の操作だけに還元していく手法は、数学基礎論の学者の頭の中での出来事だったけど、現在のコンピューターはそれをやっているのだから、ハードディスクの読み込みとCPUの処理をイメージすれば、実感として捉えることができる。

そんなこんなで、今はゲーデルに傾倒(笑)

まぁ、今は勉強し始めたばかりなので、何を理解しているわけではないけど、ゲーデルの主張を正しく理解することは、そんなに難しいことではないのではないかと思っている。


ところで、将棋のプログラムだけど忙しくて停滞中。

かわりといってはなんだが、最強のプログラムの一つであるボナンザに勝てるようになった。
アルゴリズムを理解して、将棋ソフトの特性がソースレベルで理解できるようになったので、どの手がコンピューターの読みに入らないかが分かるようになってきた。

マチュアのトップレベルに迫るソフトとのことであるけど、自分がそのレベルのあるわけもないので、単にボナンザに勝てる方法を知っただけにすぎない。

敵を知り己を知らば百戦危うからず。が見事にはまったケースかもしれない。