「証明できる」ことと「本当は正しい」ことは、いつも一致するんだろうか。

たとえば、こんな推論を考えてほしい。

すべての人間は死ぬ。ソクラテスは人間だ。よってソクラテスは死ぬ。

この推論が「正しい」ことは、直観的には明らかだ。でも、その「正しさ」をどうやって保証するのか。論理学には二つのアプローチがある。


一つは証明論(⊢)。推論規則に従って証明木を組み立てられたら、その推論は「証明できた」と見なす。規則の一覧さえ決めてしまえば、あとは機械的に正しさを判定できる。計算機で扱うにはうってつけだ。

もう一つは意味論(⊨)。「前提が全部真なら結論も真」という関係──すなわち論理的帰結──で正しさを定義する。具体的な世界(モデル)を考えて、そこで本当にそうなっているかを確かめる。こちらの方が、直観には近い。

この二つは、同じ対象を別の角度から捉えている。では──

「証明できる」ことと「論理的に正しい」ことは、本当に一致するのか?

これに「Yes」と答えるのが、ゲーデルの完全性定理だ。驚くべきことに、二つの正しさは一致する──Γ ⊨ A ⇔ Γ ⊢ A。右向き(証明できれば真)が健全性、左向き(真なら証明できる)が完全性と呼ばれる。順に見ていこう。


健全性 —— 証明できれば、確かに正しい

健全性 Γ ⊢ A ⇒ Γ ⊨ A は、直観に照らせば当然に思える。規則が正しく設計されていれば、その規則で組み立てた証明は間違いようがないはずだ。

証明の方針は「証明木の構造に関する帰納法」の一言に尽きる。

  • 証明木が仮定1つだけのとき:A が Γ に含まれているのだから、Γ ⊨ A は明らか。
  • ∧I, ∧E, →I, →E, ⊥E, RAA……どの規則で終わっている場合も、その直前の部分証明について帰納法の仮定を使えば、「規則を使っても真が保たれる」ことを確認できる。

ただそれだけだ。一つ一つの規則について「この推論は正しい形をしている」ことを確かめていけば、証明は自然とできあがる。だから健全性は「比較的容易」と言われる。

これで「証明できるなら正しい」は保証された。


問題は逆だ。

正しいなら、必ず証明できるのか?

つまり、Γ ⊨ A が成り立つのに、Γ ⊢ A が成り立たない──そんなケースはあり得ないのか、と。直観的には「そりゃそうでしょ」と思いたいところだが、証明するとなると話は別だ。「証明できない」という状態を扱うのは、そもそも難しい。


完全性 —— 正しいなら、必ず証明できる

証明の基本的なアイデアは「直接示せないなら対偶を取る」だ。

示したいのは Γ ⊨ A ⇒ Γ ⊢ A。この対偶、

Γ ⊬ A ⇒ Γ ⊭ A

を証明する。つまり「Aが証明できないなら、Γを全部真にしてAだけ偽にする反例がある」ことを示せばいい。

ここから先は、ひたすら「反例を作る」ための工作が続く。


反例を作るための4ステップ

Step 1. Aが証明できない = Γ ∪ {¬A} は無矛盾

Γ ⊬ A なら、Γ に ¬A を追加しても矛盾しない(Lemma 4)。これは「Aじゃない世界を考えても問題ない」という意味だ。反例への第一歩になる。

Step 2. 矛盾しないギリギリまで膨らませる(リンデンバウム)

Γ ∪ {¬A} を出発点に、「この式を追加してもまだ矛盾しないか?」と一つずつ確かめながら、無限に追加していく。できあがるのが極大無矛盾集合 Γ*(Lemma 5)。これ以上何か追加すると、たちまち矛盾してしまうギリギリの状態だ。

ここが証明で最も技巧的な部分だが、直観は単純だ。「この世界では何が真で何が偽か」を完全に決め切ってしまいたい。そのために、可能な限り多くの式を詰め込んでいる。

Step 3. 極大無矛盾の性質を引き出す

極大無矛盾集合 Γ* には、便利な性質がいくつも成り立つ。

  • Γ* は証明について閉じている:Γ* ⊢ A なら A ∈ Γ*(Lemma 6)。せっかくギリギリまで詰め込んだのだから、証明できる式は全部入っていてほしい。実際そうなっている。
  • 任意の A について、A ∈ Γ* か ¬A ∈ Γ* のどちらか一方だけが成り立つ(Lemma 7)。矛盾しない範囲で最大まで詰め込んだので、「Aか¬Aか」が必ず決まる。

これで Γ* は、「真偽の割り当て」として振る舞う準備が整った。

Step 4. Γ からモデルを構成する(真理補題)*

ここがゴールだ。Γ* から直接、評価 v を作る。

  • 原子論理式 P が Γ* に入っていたら、v(P) = T
  • 入っていなければ v(P) = F

この v を論理式全体に拡張すると、驚くべきことが成り立つ(Lemma 8)。

A_v = T ⇔ A ∈ Γ*

つまり「Γ* に入っている式=vで真になる式」だ。これが真理補題。Γ* の要素をそのまま「真の世界」に変換できたことになる。

もともと Γ ∪ {¬A} ⊆ Γ* だったから、この評価 v は Γ の全式を真にし、A だけを偽にする。めでたく反例ができた。


結論

以上で Γ ⊬ A ⇒ Γ ⊭ A が示せた。対偶を取れば Γ ⊨ A ⇒ Γ ⊢ A。健全性と合わせて、完全性定理 Γ ⊨ A ⇔ Γ ⊢ A が完成する。

この証明が教えてくれるのは、次のことだ。

論理の規則は、「本当に正しい推論」を過不足なく捉えている。

もし「正しいのに証明できない」推論があったら、この証明で作った反例(モデル)が見つかるはずだ。でも、その反例の存在自体が「前提は真で結論は偽」の世界があることを意味するから、その推論は「正しい」とは言えない。完全性定理は、この循環を断ち切って、「証明可能性」と「論理的帰結」が完全に一致することを示している。


その後 —— コンパクト性定理への応用

完全性定理からは、もう一つ重要な帰結が得られる。コンパクト性定理だ。

式集合 Γ が充足可能 ⇔ Γ の任意の有限部分集合が充足可能

「無限にたくさんの条件があっても、そのどんな有限部分を取っても矛盾しないなら、全体として矛盾しないモデルが存在する」という主張だ。完全性定理を使って証明できる。

この定理の面白いところは、無限の問題を有限の問題に落とし込めることにある。たとえば無限グラフの彩色問題。「任意の有限部分グラフがk色で塗れるなら、無限グラフ全体もk色で塗れる」という事実は、コンパクト性定理の応用例だ。完全性定理が単なる理論的な「一致」に留まらず、実際に使える道具でもあることを示している。


Lemmas 一覧

Lemma内容役割
Lemma 1健全性 Γ ⊢ A ⇒ Γ ⊨ A証明できれば真
Lemma 2無矛盾の3つの同値条件無矛盾の定義を整理
Lemma 3モデルがあれば無矛盾モデル存在→無矛盾(健全性から)
Lemma 4矛盾から証明へ:Γ∪{¬A}矛盾⇒Γ⊢A対偶への足場
Lemma 5リンデンバウム:無矛盾→極大無矛盾ギリギリまで膨らませる
Lemma 6極大無矛盾は証明について閉じる証明できたら全部入ってる
Lemma 7極大無矛盾での¬と→の振る舞い真偽の割り当てとして使える形に
Lemma 8真理補題:A_v=T ⇔ A∈Γ*極大集合からモデルを構成
Cor 1Γ⊬A⇒反例あり完全性の対偶を示した