数学の基礎
ゲーデルの不完全性定理
算術を記述できるほど強力な形式体系は、証明できない真の命題を必ず含み、また自分自身の無矛盾性を証明することもできない——1931年に発見されたこの根本的な限界は、論理学、計算可能性理論、数学の哲学を一変させた。
直観自分自身について語る文
次の文を考えよう:「この文は証明できない」。もしこれが証明できるなら、それは偽になる(証明できないと言っているから)。これは真なることしか証明しないはずの証明体系にとって都合が悪い。だから証明不可能でなければならない——しかしそうなると、その文が述べていることは真である。証明できない真の命題が見つかったことになる。これは単なる言葉遊びではない。1931年、クルト・ゲーデルは、十分強力などの形式体系の内部にも、まさにこの振る舞いをする、正直で純粋に算術的な文を構成できることを示した。
中高形式体系とは規則が固定されたゲームである
形式体系はチェスのようなものだと考えてみよう:固定された初期配置(公理)、駒を動かすための固定された規則(推論規則)があり、合法な局面(証明された定理)に到達したとき「勝ち」となる。この規則は現実世界について何も知らない——コンピュータは証明が「何を意味するか」を理解せずとも、機械的にすべての手をチェックできる。ゲーデルの発見はまさにこの点に関わる:算術のための公理と規則をどのように固定しても、数についてのある真なる事実は、このゲームの中で決して「合法な局面」として到達できない。
大学真理と証明可能性、そしてゲーデル数化
定義: 無矛盾性と完全性
形式体系 が無矛盾であるとは、 が と の両方を証明する( かつ と書く)ような命題 が存在しないことをいう。その言語のすべての文 について または のいずれかが成り立つとき、それは完全であるという。また、与えられたテキストが における正当な証明であるかどうかをコンピュータが判定できるとき、 は実効的に公理化されているという。
数についての論理式がどうして証明について語れるのだろうか?ゲーデル数化によってである:すべての記号、論理式 、論理式の列に一意な自然数 を割り当てる(コンピュータがあらゆるファイルを数として保存するのとまったく同じだ)。論理式の列が正当な証明かどうかを検査することは、それらの数に対する機械的な計算なので、「数 はコード を持つ論理式の証明を符号化している」ということは、、、量化子だけを使った通常の算術的関係 になる。 における証明可能性は、算術の論理式 となる。
論理式 を記号の有限列として読み、その記号の番号(たとえば言語のそれぞれの記号に小さな番号を割り当てた固定の対応表による)を順に とする。すると論理式全体のコード は上の数そのものである: 番目の素数 (すなわち )の指数が 番目の記号のコードを記録している。任意の自然数は素因数分解が一意に定まるため、この数は常に元の記号列へと一意に復号できる——論理式を数として符号化しても情報は一切失われない。これはコンピュータがテキストファイルをバイト列として保存するのとまったく同じである。
上の等式 は、あらゆる対角線(不動点)文に共通する形である:理論 に対して、これは「私、 は で証明できない」という主張と証明可能に同値な文 を生成する。これはゲーデルの例に限った特殊なトリックではない——同じレシピは、算術で表現できるどんな性質に対しても自己言及文を構成できる。これこそ、下に描かれたループが決して閉じずに終わることのない理由である: を出た矢印は必ず へと戻ってくる。
を初等算術を表現できる無矛盾かつ実効的に公理化された形式体系とする。このとき の言語の文 であって、標準的な自然数 において真であるが となるものが存在する(さらに が -無矛盾ならば でもある)。特に、 は不完全である。
なぜ正しいのか?
対角線補題(カントールの対角線論法の形式版)により、算術の中で を満たす文 —— における自分自身の証明不可能性を主張する文——を構成できる。もし なら が成り立つので となり、無矛盾性に反する。ゆえに であるが、これはまさに が主張していることそのものなので、 は において真となる。(後にロッサーが -無矛盾性の仮定を取り除いた。)
証明
第1段階(構文の算術化)。 の言語のすべての記号、論理式、および論理式の有限列に一意な自然数(そのゲーデル数)を割り当てる、計算可能な符号化方式を固定する。 が実効的に公理化されているため、関係 ——「 はコード を持つ論理式の証明のコードである」—— は 、、量化子のみを使った算術の論理式で表現できる。証明を1行ずつ検査することは有限の機械的手続きだからである。 と定義する。
第2段階(対角線補題)。自由変数を1つ持つ任意の算術の論理式 に対して、対角線補題は を満たす文 を生成する—— は自分自身のコードについて が成り立つと主張する。これを に適用すると、 を満たす文 が得られる。直感的には、 は「私は で証明できない」と述べている。
第3段階()。背理法により と仮定する。 は実効的に公理化されているため、この証明自体がコード を持ち、 が真となる。したがって である(具体的な数についての証明可能な算術的事実は、それ自体 で証明可能である)。しかし対角線の同値関係と を組み合わせると が得られる。したがって はある命題とその否定の両方を証明してしまい、無矛盾性に反する。ゆえに である。
第4段階( は真であり、-無矛盾性を仮定すれば でもある)。 なので、 の証明を符号化する数は存在せず、 が において成り立つ。対角線の同値関係により、これはまさに が主張していることなので、 は真である。もし が の否定、すなわち も証明したなら、これと対角線の同値関係を組み合わせて ——「ある が の証明を符号化している」——が得られるが、それを裏付ける実際の証明は一つも存在しないことになり、これはまさに -無矛盾性が排除する状況である。したがって -無矛盾性のもとでは でもあり、 は不完全である。
をペアノ算術を拡張する(または自分自身の証明述語を形式化できるほど強力な)無矛盾かつ実効的に公理化された形式体系とし、 を が無矛盾であることを表す算術の文とする。このとき である。
なぜ正しいのか?
第一定理の証明——「 が無矛盾ならば、 は を証明しない」——それ自体を の内部で形式化することができ、 が得られる。もし が を証明できたとすると、モーダスポネンスにより が導かれ、第一定理に矛盾する。
証明
第1段階(証明可能性述語は定義可能なだけでなく形式化可能である)。 は機械的に検査可能な関係 から構成されているため、次の3つの「導出可能性条件」自体が の内部で証明可能である(この議論で が単に無矛盾であるだけでなくペアノ算術を拡張している必要がある理由はここにある):() が を証明するならば は を証明する;() は を証明する;() は を証明する。
第2段階(定理1自身の議論を形式化する)。対角線の同値関係により 。定理1の非形式的な議論——「もし が証明可能ならば、その証明自体が を裏付け、対角線の同値関係によって の証明も手に入ってしまう」——は()–()でカバーされる記号操作以外は何も使っていないため、 の内部での形式的推論として一歩一歩そのまま再現でき、 が得られる。 とその否定の両方が証明可能であることから、爆発律(ex falso quodlibet)により は を導けるので、これは 、すなわち を与える。
第3段階(結論)。背理法により と仮定する。 とモーダスポネンスを組み合わせると、 は を証明することになる。しかし定理1により、無矛盾な について であることがすでに示されている——矛盾である。したがって は を証明できない。これがまさに主張の内容である。
1920年代、ダフィット・ヒルベルトはヒルベルト・プログラムを提唱した:数学全体を公理化し、記号に関する単純な有限的推論だけを使って、その公理系が無矛盾かつ完全であることを証明しようという計画である。ゲーデルの二つの定理は、これがそのままの形では実現不可能であることを示した:ペアノ算術は、検証対象よりも強い原理を使わない限り、集合論どころか自分自身の無矛盾性さえ証明できない。
任意の一階理論 と文 について、 であることと、 のすべてのモデルで が真であること()は同値である。
なぜ正しいのか?
1929年にゲーデル(博士論文)が証明したこの定理は、一階述語論理の推論規則が完全であり、論理的帰結を一つも取り逃さないことを述べている。不完全性定理(1931年)はこれと矛盾しない: が証明できないのは、意図されたモデル では が真であっても、 が偽となる超準モデルを が持つからである。
証明
第1段階(健全性——易しい方向、 ならば )。 から への形式的証明の長さについての帰納法で議論する。 のすべての公理は、定義により の任意のモデル で真である;純粋に論理的な公理(例えば )はすべて妥当であり、いかなる解釈のもとでも真である。そして各推論規則は における真理を保存する:モーダスポネンスの場合、 かつ ならば自動的に となる。したがって証明のすべての行が で真であり、特に最後の行である も真である; は の任意のモデルであったから、 が成り立つ。
第2段階(完全性——難しい方向、対偶による: ならば )。 と仮定する。このとき集合 は無矛盾である(もし矛盾を証明してしまうなら、背理法により が を証明することになる)。ヘンキンの方法を用いて、これを証人を持つ極大無矛盾集合 へと拡張する: が に属するときはいつでも、新しい定数 を追加して も に属するようにする。拡張された言語の閉じた項を における証明可能な等号で同一視したものを要素とし、関係と関数を から直接解釈する項モデル を構成する。項の長さについての帰納法(「真理の補題」)により、任意の文 について が成り立つ。
第3段階(モデルの組み立てと結論)。 なので、真理の補題により が成り立ち、 のすべての公理が に属することから も成り立つ。したがって は が成り立たない の実際のモデルであり、すなわち である。これにより第2段階の対偶が証明され、第1段階と合わせて、 であることと であることは同値となる——これはゲーデルの1929年の博士論文の結果であり、後にレオン・ヘンキン(1949年)によって、ここで用いた項モデルの構成へと整理された。
発展不完全性、停止問題、決定不能な問題
任意のプログラム のコードと入力 を受け取り、 がいずれ停止するかどうかに常に正しい答えを出して停止するようなアルゴリズム(チューリング機械) は存在しない。
なぜ正しいのか?
仮に が停止性を判定できたとしよう。 を実行し、 が「停止する」と答えたら無限ループに入り、 が「ループする」と答えたら停止する機械 を作る。 に自分自身のコードを与えると、 が停止することと が「ループする」と答えることが同値になり矛盾する。これはゲーデルの対角線文の、計算の側における双子そのものである。
証明
第1段階(停止判定器が存在すると仮定する)。背理法により、コード を持つプログラムが入力 で停止するなら「停止する」、そうでなければ「ループする」と、常に停止して正しく答えるアルゴリズム が存在すると仮定する( は常に停止する)。
第2段階( から対角線機械を構成する)。プログラムのコード を入力とし、まず を計算する新しいアルゴリズム を定義する—— に をプログラムと入力の両方として与えて実行する。もし が「停止する」と答えたら、 はわざと無限ループに入る;もし が「ループする」と答えたら、 は(例えば を返して)直ちに停止する。
第3段階( に自分自身のコードを与える)。 自体がアルゴリズムなのでコードを持ち、そのコードの上で を実行することを妨げるものは何もない: を考える。二つの場合があり、どちらも不可能である:もし が停止するなら、構成によりこれはちょうど が「ループする」と答えた場合に起こる——つまり は、 が 上で停止しないと誤って報告したことになるが、実際にはたった今停止したのである。逆に が永遠に走り続けるなら、これはちょうど が「停止する」と答えた場合に起こる——つまり は停止すると誤って報告したことになるが、実際には永遠にループするのである。
第4段階(結論)。いずれの場合も は入力 に対して誤った答えを出してしまい、 が常に正しいという仮定に矛盾する。したがって、そのようなアルゴリズム は存在しえない:停止問題は決定不能である。
停止問題から第一不完全性定理がただちに導かれる:もし健全で実効的に公理化された体系 が算術について完全であったなら、 が停止することの証明か停止しないことの証明のどちらかが見つかるまで の証明を順に列挙するだけで、 が停止するかどうかを判定できてしまうからである。さらに決定不能性は通常の整数論にも及ぶ:整数係数の多項式方程式が整数解を持つかどうかを判定するアルゴリズムを求めたヒルベルトの第10問題(`hilbert-tenth-problem`)は、デービス、パトナム、ロビンソン、マチャセビッチ(1970年)によってそのようなアルゴリズムが存在しないことが示された。その結果、任意の無矛盾な体系 において、実際には整数解を持たないにもかかわらず、解を持たないことを が証明できない具体的なディオファントス方程式が存在する。
大学実世界での応用と具体例
ゲーデルとチューリングの限界は、単なる哲学的な興味の対象ではない。それらはソフトウェアツールが約束できることに厳格な境界を課す。「私のプログラムにバグがないことを証明する」静的解析ツール、完全自動の定理証明系、そしてあらゆる悪意ある挙動を検出すると謳うウイルス対策ソフトはすべて、これらの定理に直接ぶつかる——プログラムについてのある種の問いは、どれほど計算力や工夫を注ぎ込んでも、いかなるアルゴリズムによっても決定できないのである。以下の2つの例はこれを具体的に示す:一つは証明の中心にある番号付けの仕組みを小さく再現したもの、もう一つは停止問題から直接、決定不能性を受け継ぐ本物のソフトウェア工学の課題である。
例
小さな論理アルファベットのための試作対応表を固定する:、、。ゲーデル数化の公式を使って、3記号の文字列「」のコード を計算せよ。
解答
第1段階(記号のコードを順に読み取る)。文字列「」には次の順で3つの記号がある:、、。表を引くとコード列 、、 が得られる。
第2段階(数化の公式を適用する)。 個の記号なので、公式は となり、最初の3つの素数 を底として使う。
第3段階(各素数のべき乗を計算する)。、、そして 。
第4段階(掛け合わせる)。。 は という形に一意に分解されるため、この一つの数さえ持っていれば、指数 を復元でき、したがって元の文字列「」を正確に読み戻すことができる——符号化によって情報は何一つ失われていない。
例
ある静的解析チームが、ツールに機能 を追加したいと考えている:彼らの言語の任意の関数 のソースコードが与えられたとき、 は常に停止し、 がヌルポインタ例外を投げる入力が何か存在するかどうかを正しく報告する。停止問題をこれに帰着させることで、そのような は存在しえないことを示せ。
解答
第1段階(停止問題をヌルポインタ検出に帰着させる)。背理法により が存在すると仮定する。任意のプログラム と入力 ——停止問題の一つのインスタンス——が与えられたとき、次のように新しい関数 (それ自体には入力を取らない)を構成する: はまず が の上で動く様子を1ステップずつシミュレートし、そのシミュレーションのコードにはどこにもヌルポインタを使わない。
第2段階(観測可能な信号を付加する)。 のシミュレーションが終了した直後——これは が停止する場合にのみ起こる—— はさらにもう1行、わざとヌルポインタを参照解除して例外を投げる。 のシミュレーションが決して終わらなければ、この行には決して到達せず、例外も一切投げられない。
第3段階(帰着が正確であること)。構成により、 がある入力でヌルポインタ例外を投げることと が停止することは同値である: は自分の引数を無視するので「ある入力」という部分はここでは意味を持たないが、ツールが について下す判定は、 についての停止問題への答えそのものである。
第4段階(矛盾)。仮定した判定器を として実行すれば、任意の と について が停止するかどうかを判定できてしまうが、上の定理はそのようなアルゴリズムが存在しないことを示している。したがって、どれほど高度な解析であっても、任意のプログラムに対するこの静的解析機能 は存在しえない。
研究自然な独立命題と連続体仮説
ゲーデルの文 は人工的に見える——自分自身の証明について語るよう特別に設計されたものだからだ。では不完全性は、数学者がもともと問うていた問題にも現れるのだろうか?現れる。最も有名な例はカントールの連続体仮説(`continuum-hypothesis`)である: の濃度と の濃度の真に中間にあたる濃度を持つ集合は存在するか?ゲーデル(1940年)は構成可能宇宙 を構成することで ZFC 集合論がこれを反証できないことを示し、ポール・コーエン(1963年)は強制法(フォーシング)を発明して ZFC がこれを証明することもできないことを示した。算術そのものの中でも、パリス–ハリントンの定理(1977年)やグッドスタインの定理(1944年、1982年にカービーとパリスが独立性を証明)は、有限の数に関する正真正銘の組合せ論的事実でありながら、 で真であってペアノ算術では証明できない。
ゲーデルの第一不完全性定理がプレスバーガー算術(乗法 を持たず加法 のみを持つ の一階理論)に適用されないのはなぜか?
ゲーデルの第二不完全性定理は、ペアノ算術を拡張する無矛盾かつ実効的に公理化された体系 について何を述べているか?
ゲーデルは1929年に完全性定理を、1931年に不完全性定理を証明した。なぜこの二つは矛盾しないのか?
もし健全で実効的に公理化された形式体系 が算術について完全であったとしたら、停止問題について何が導かれるか?
参考文献
- Kurt Gödel (ed. Jean van Heijenoort) (1967). On formally undecidable propositions of Principia Mathematica and related systems I (1931), in From Frege to Gödel · DOI:10.1007/BF01700692
- Peter Smith (2013). An Introduction to Gödel's Theorems · DOI:10.1017/cbo9780511800962
- Torkel Franzén (2005). Gödel's Theorem: An Incomplete Guide to Its Use and Abuse