ちくわ君と学ぶゲーデルの不完全性定理

静かな雨の午後、森の研究所では、ちくわ君が窓辺で古い数学書のページをめくっていた。雨音と、赤い木の実をかじる音だけが、部屋に小さく響いている。

「ちくわさん!大変です!」傘も差さずに駆け込んできたはんぺん君が、濡れた一冊の本を差し出した。「図書館で借りたこの本に、とんでもないことが書いてあるんです。『数学には、正しいのに絶対に証明できないことがある』って!数学って、計算すれば必ず答えが出るものじゃないんですか?」

ちくわ君は本の表紙を見て、嬉しそうに目を細めた。「ゲーデルの不完全性定理か。はんぺん君、ずいぶん面白いところに迷い込んだね。これは二十世紀の数学を揺るがした、とびきり美しい定理なんだ」

「美しい、んですか?僕には怖い話に見えました……」はんぺん君はタオルで体を拭きながら、ちくわ君の隣に腰かけた。

「ふふ、最後まで聞けばきっと印象が変わるよ。まずは『証明』とは何か、というところから始めよう。はんぺん君、将棋は知ってるかい?」

「はい!駒の動かし方くらいなら分かります」

「将棋では、最初の駒の並べ方と、駒の動かし方のルールが決まっているよね。そこから合法的な手を積み重ねてたどり着ける局面だけが、『正しい局面』になる。数学もこれとそっくりなんだ。最初に『公理』という出発点を決めて、『推論規則』というルールで一歩ずつ進む。そうしてたどり着けた命題が『証明された定理』というわけだね」

「なるほど!数学って、巨大な将棋みたいなものなんですね」

「いい喩えだね。さて、今から百年ほど前、数学者たちには大きな夢があった。ヒルベルトという大数学者が音頭を取ってね。『正しい数学の命題は、すべてこのルールの積み重ねで証明できるはずだ。そういう完璧な公理系を作ろう』という壮大な計画だったんだ」

「すべてを証明できる、完璧なルールブック……!それができたら、数学の問題は全部解けちゃいますね!」

「そう、みんなそう信じていた。ところが1931年、二十五歳の青年クルト・ゲーデルが、その夢が原理的に叶わないことを証明してしまったんだ」ちくわ君は木の実を一つ口に放り込んだ。「それも、とんでもなく鮮やかな方法でね」

「ど、どうやってですか?」はんぺん君は身を乗り出した。

「その前に、一つなぞなぞだ。はんぺん君が『僕は今、うそをついています』と言ったとしよう。この言葉は本当かな?うそかな?」

「えっと……本当だとすると、うそをついてることになって……うそだとすると、うそをついていないから本当になって……あれれ?頭がぐるぐるしてきました!」

「それが有名な『うそつきのパラドックス』だよ。自分自身について語る文は、ときどきこういう不思議な渦を生む。ゲーデルの天才的なところは、この渦を数学の中に持ち込んだことなんだ。彼が作ったのは、こんな命題だった。『この命題は、証明できない』」

はんぺん君はしばらく固まって、それからゆっくり考え始めた。

「もしその命題が証明できたら……『証明できない』と言っている命題が証明されちゃうから、矛盾します。じゃあ証明できないとすると……『この命題は証明できない』という主張は、そのとおりだから……えっ、正しいのに証明できない!」

「お見事、それがまさに第一不完全性定理だよ」ちくわ君は満足そうに頷いた。「矛盾のないまともな公理系には、真であるのに証明できない命題が必ず存在する。ヒルベルトの完璧なルールブックは、原理的に作れなかったんだ」

「この命題は証明できない」 証明できたら… 証明できなかったら… 「証明できない」が証明され 矛盾! 言っている通りだから 真。でも証明できない どちらに転んでも、完璧なルールブックの夢は崩れる
図:ゲーデル命題の行き先は二つに一つ。どちらでもヒルベルトの夢は叶わない

「でも、ちくわさん。『この命題は証明できない』なんて変な文章、数学の式にできるんですか?数式って、数とか足し算とかの話ですよね?」

「そこがゲーデルの二つ目の魔法、『ゲーデル数』なんだ」ちくわ君はコンピューターに向き直った。「彼は、すべての数学の文に、対応する巨大な番号を割り振った。文を数に変えてしまえば、『この文は証明できる・できない』という文についての話を、数についての話として数学の中で扱えるようになる。プログラマーのはんぺん君なら、実はもう似たことを知っているはずだよ」

ちくわ君は画面に「この命題は証明できない」と打ち込み、短い命令をひとつ添えて実行した。すると次の瞬間、その文が、数字のびっしり連なった目の回るような長さの、たったひとつの数に変わった。

「あっ!文字コードだ!文章をコンピューターで扱うときは、裏ではぜんぶ数になってるんでした!」

「そのとおり。ゲーデルは、コンピューターが生まれる前に、『記号の列はすべて数として扱える』ことを見抜いて、証明という操作そのものを数の計算に置き換えたんだ。九十年前の論文なのに、発想はまるでプログラミングだよ。僕がこの定理を『美しい』と言った理由、少し分かってきたんじゃないかな」

「すごいです……。あれ?でも、それならプログラムにも同じような話があったりするんですか?」

「鋭いね」ちくわ君は嬉しそうに新しいファイルを開いた。「そっくりな親戚がいるんだ。『停止性問題』といって、どんなプログラムが無限ループするかを完璧に判定するプログラムは作れない、という定理だよ。証明の心臓部は、やっぱり自己言及なんだ」

ちくわ君はホワイトボードに、簡単な筋書きを描いた。まず、どんなプログラムでも止まるかどうかを完璧に判定できる、夢のような判定プログラムが作れたと仮定する。次に、そのプログラムを利用して、ひねくれ者のプログラムを一つ作る。自分自身を判定にかけて、『止まる』と言われたらわざと無限ループし、『止まらない』と言われたらすぐに止まる、というあまのじゃくだ。

「このひねくれ者は、判定プログラムが『止まる』と答えれば止まらないし、『止まらない』と答えれば止まる。つまり、どう答えても判定は外れてしまう。だから、そんな完璧な判定プログラムは最初から存在できなかった、というわけだ」

「さっきのうそつきパラドックスと同じ形です!数学とプログラミングの一番深いところが、同じ渦でつながってるんですね……」はんぺん君は鳥肌の立った腕をさすった。

「ただしね、はんぺん君。この定理は誤解されやすいから、注意点も話しておくよ」ちくわ君は少し真剣な顔になった。「不完全性定理は『数学は信用できない』という意味ではないんだ。証明できたことの正しさは、何も揺らがない。それから『人間の直感はコンピューターを超えている』といった証明にもならない。この定理が言っているのは、あくまで『一つの公理系の中だけで、すべてを汲み尽くすことはできない』ということ。それ以上でも以下でもないんだよ」

「分かりました。……でもちくわさん、やっぱり少し寂しくないですか?どんなにがんばっても、証明できないことが残っちゃうなんて。数学の負け、みたいで」

ちくわ君は窓の外を見た。いつの間にか雨は上がり、濡れた木々の向こうに淡い光が差し始めている。

「僕は逆だと思っているよ。すべてが証明できてしまったら、数学はいつか『終わって』しまう。でも不完全性定理は、どんな公理系を作っても、その外側に必ず新しい真実が残されている、と教えてくれた。つまり数学には、永遠に発見が残されているんだ。これを数学の負けと呼ぶか、果てしない冒険の保証と呼ぶか。僕は断然、後者だね」

はんぺん君の目が、ぱっと明るくなった。「冒険の保証……!そう聞くと、怖い定理どころか、すごく素敵な定理に思えてきました!」

「だろう?それに気づいたはんぺん君は、もう今朝までのはんぺん君より一歩先にいるよ」ちくわ君は嬉しそうに目を細めた。

「ちくわさん、今日は本当にありがとうございました!家に帰ったら、さっそく文章をゲーデル数に変換するプログラムを書いてみます。それから、この本ももう一度最初から読み直してみます!」

「それはいいね。今度は怖がらずに読めるはずだよ。分からないところがあったら、いつでもおいで」ちくわ君は温かく手を振って見送った。

はんぺん君が雨上がりの森へ駆けていったあと、ちくわ君は読みかけの数学書に戻った。証明できないことが必ず残る世界で、それでも一歩ずつ証明を積み重ねていく。その営みの健気さを思うと少し心が弾んで、ちくわ君は新しい赤い木の実へ手を伸ばした。

森の研究所には、今日も果てしない知の冒険の気配が満ちていた。

教育 数学 論理学 ゲーデル 友情