昨日の記事「述語論理とインデックス付き圏と限量随伴性」で、述語論理のモデルの基本事項を述べたので、これを元にして、個別の話をチョビチョビしていくことにします。
自然演繹の悪口を書いた記事「自然演繹はちっとも自然じゃない -- 圏論による再考」で述語論理は扱わなかったので、自然演繹における「∀導入規則」について詮索(むしろダメ出し)します。
内容:
全称記号の導入と除去の規則
自然演繹の推論規則(の図)で、全称記号'∀'の導入(introduction)と除去(elimination)は次のような形です。
P -------[∀導入] ∀x.P ∀x.P ----------[∀除去] P[x:=t]
まー、見た目は簡単です。「自然演繹はちっとも自然じゃない -- 圏論による再考」でも述べたことですが、自然演繹の推論図/証明図がロクデモナイ理由のひとつは、暗黙の前提が多すぎることです。暗黙の前提を知らない/慣れてない人には意味不明なオマジナイでしかありません。見た目が簡単だから簡単、なんてことはまったくありません!
記述されている部分以外に、証明図の仮定から問題の箇所に至る部分があります。そして、証明図の変形のbefore(変形前)とafter(変形後)があります。∀導入規則に相当する証明図の変形手順を以下に示します。Γは、証明図の最上段に現れる命題(述語、論理式)の並び(空な並びも認める)を表します。'↓'は省略している中間部分です。
before Γ ---- ↓もともとあった証明図 P after Γ ---- ↓新しい証明図 ∀x.P
これでも意味不明ではありますが、あとでチャンとした変形手順を示すのでご安心を。ともかくも、beforeの証明図が描き変えられてafterの証明図になるのですが、述語論理の場合は、どの解釈領域上で議論しているかも明示すべきです。「述語論理とインデックス付き圏と限量随伴性」で述べた変数・型注釈の記法を使いましょう。
before Γ[x:X] --------- ↓ P[x:X, y:Y] after Γ[x:X] --------- ↓ ∀w.P[x:X, w:Y]
Γ[x:X] = (Q1[x:X], ..., Qn[x:X]) だとして、Q[x:X] = Q1[x:X]∧ ... ∧Qn[x:X] とおけば、beforeは、“Q[x:X]からP[x:X, y:Y]に至る証明図”、afterは“Q[x:X]から∀w.P[x:X, w:Y]に至る証明図”だとしても(意味的には)かまいません。
before Q[x:X] --------- ↓ P[x:X, y:Y] after Q[x:X] --------- ↓ ∀w.P[x:X, w:Y]
命題をどんな解釈領域上で考えているかを示す'on'記法も添えてみると:
before Q[x:X] on X ------------- ↓ P[x:X, y:Y] on X×Y after Q[x:X] on X ------------- ↓ ∀w.P[x:X, w:Y] on X
アレレッ? X上だったりX×Y上だったり、証明図の変形により、命題の解釈領域も変化しています。いったいどうなっているの?
通常の自然演繹では、解釈領域を明示しないし、全称限量子の(意味的な)メカニズムも曖昧なままに、オマジナイとしての推論規則が与えられます。そりゃー、分かるわけないだろうよ。
証明ボックスを使った図示
もう少し事情がハッキリする図示法はないものか? と探したら、少しだけマシな証明図の描き方を見つけました。"Natural deduction for predicate logic"(https://cs.uwaterloo.ca/~plragde/cs245old/06-prednd.pdf)というテキスト内で使われている次の図です。
この図のミソは四角い箱で、証明ボックス(proof box)と呼びます。ボックス内に普通に証明(図)を描けますが、変数x0は、ボックス内でだけを使っていいローカルな自由変数です。ボックスが自由変数のスコープを提供するわけです。
しかし、自然演繹では(たぶん他の論理システムでも)スコープやローカル変数の概念がないので(遅れてるーっ)、他の箇所で出現してない新しい名前の変数(フレッシュ変数と呼ぶ)を導入します。キチンとしたブロックスコーピングがあるのなら、新しい名前じゃなくても大丈夫なんですけどね*1。
証明ボックス内で、フレッシュ変数x0を含む論理式(命題)φを結論とする証明図が描けたら、証明ボックスの外で∀x.φが証明されたことになります。フレッシュ変数(ローカル変数)x0を証明ボックスの外に持ち出すことは出来ないので、x0を全称束縛変数xに置き換えます。束縛変数は名前の影響を受けない(自由にα変換を行える)ので、x0とxは同じ名前でもいいのですが、リネームするのが無難です。
証明ボックスは閉じた環境ではないので、証明ボックスより上側にある命題は、ボックス内の証明の仮定として使ってかまいません。ローカル自由変数の使用が、ボックス内に制限されるだけです。
さて、証明ボックスをアスキーアート風に描いてみます(めんどくさいけど)。命題や変数の名前は我々の状況に合わせます。
+---------------+ |y | | : | | P[x:X, y:Y] | +---------------+ -------------------[∀導入 y:=w] ∀w.P[x:X, w:Y]
yがローカル自由変数です。証明ボックスから外に出るとき、念のためにyをwにリネームしてから全称束縛しています。'y:=w'がリネームを表しています。
証明ボックスの上側に命題Q[x:X]があるなら、次のように描きましょう。
Q[x:X] ↓ +---------------+ |y | | : | | P[x:X, y:Y] | +---------------+ -------------------[∀導入 y:=w] ∀w.P[x:X, w:Y]
ローカル変数yを含まないQ[x:X]は、ボックスのなかに入れても影響はありません。
+---------------+ |y | | Q[x:X] | | ↓ | | P[x:X, y:Y] | +---------------+ -------------------[∀導入 y:=w] ∀w.P[x:X, w:Y]
今描いた証明図(のパターン)は、∀導入の後の状況なので、前後の変化を示すなら次のようになります。
before Q[x:X] ↓ +---------------+ |y | | : | | P[x:X, y:Y] | +---------------+ または +---------------+ |y | | Q[x:X] | | ↓ | | P[x:X, y:Y] | +---------------+ after Q[x:X] ↓ +---------------+ |y | | : | | P[x:X, y:Y] | +---------------+ -------------------[∀導入 y:=w] ∀w.P[x:X, w:Y] または +---------------+ |y | | Q[x:X] | | ↓ | | P[x:X, y:Y] | +---------------+ -------------------[∀導入 y:=w] ∀w.P[x:X, w:Y]
要するに、ローカル自由変数yを持つ証明ボックス内で命題Pの証明が終わっている状況(証明ステート)があるのなら、次の状況ではPの全称束縛を下段に追加していいのです。
チャンとした∀導入の方法
冒頭に挙げた簡単な図(↓)で、∀導入の規則を説明しようなんて、所詮無理なんです。
P -------[∀導入] ∀x.P
そもそも、自然演繹の証明図と推論規則は全然別なレベルの存在物で、同一の図示法で示そうなんてのが無茶もいいとこです。推論規則は与えられた証明図(証明オブジェクト、証明ステート)を変形する方法の記述なので、アニメーションで示す必要があります。
前節の証明ボックスのアイディアを踏まえて、さらに丁寧に証明図の変形過程を記述してみましょう。
step 0 Q[x:X] on X step 1 Q[x:X] on X + | [x:X, y:Y].Q[x] on X×Y step 2 Q[x:X] on X + | [x:X, y:Y].Q[x] on X×Y | ------------------------ | ↓ 証明 on X×Y | P[x:X, y:Y] on X×Y step 3 Q[x:X] on X + | [x:X, y:Y].Q[x] on X×Y | ------------------------ | ↓ 証明 on X×Y | P[x:X, y:Y] on X×Y + ∀w.P[x:X, w:Y] on X step 4 Q[x:X] on X ------------- | + | | [x:X, y:Y].Q[x] on X×Y | | ------------------------ | | ↓ 証明 on X×Y | | P[x:X, y:Y] on X×Y | + ↓ 証明 on X ∀w.P[x:X, w:Y] on X
各ステップの左は、X上の命題や証明(図)を描く欄です。右に、X×Y上の命題や証明を描きます。前節の証明ボックスは、右側の部分を箱に入れて左側に“入れ子で押し込んだ絵”になっています。
変形手順を箇条書きで説明します。
- 最初に、X上の命題Q[x:X]がある。これは既に証明されているか、仮定する命題。
- Q[x:X]を、X×Y上の命題と解釈するためにダミー変数yにより変数水増しする。内容的には何も変わってないが、[x:X, y:Y].Q[x]はX×Y上の命題であり、しばらくX×Y上で議論が進む。
- [x:X, y:Y].Q[x]からP[x:X, y:Y]に至る証明(図)を、X×Y上で構成する。結果として、X×Y上では、[x:X, y:Y].Q[x]を仮定して[x:X, y:Y]を結論とすることが出来た。
- X×Y上の証明の結論を全称束縛してX上の命題を得る。念のために、自由変数yを束縛変数wにリネームしている。
- X×Y上の証明を根拠として、X上でも、Q[x:X]を仮定して∀w.P[x:X, w:Y]を結論とする証明が存在するとみなしてよい。
シーケントによるリーズニング記述
前節の説明で用いた絵のstep 4の右側は:
[x:X, y:Y].Q[x] on X×Y ------------------------ ↓ 証明 on X×Y P[x:X, y:Y] on X×Y
これを、横向きに書いて ([x:X, y:Y].Q[x] on X×Y)→(P[x:X, y:Y] on X×Y) としましょう。'on X×Y'をまとめて書いて、変数ごとの型宣言も省略すれば: [x, y].Q[x]→P[x, y] on X×Y 。この形を証明図に対応するシーケント(sequent)と呼びます。
絵のstep 4の左側は:
Q[x:X] on X ------------- ↓ 証明 on X ∀w.P[x:X, w:Y] on X
これをシーケントで表すなら Q[x]→∀w.P[x, w] on X です。
∀導入規則の要点は、[x, y].Q[x]→P[x, y] on X×Y という証明が存在するなら、Q[x]→∀w.P[x, w] on X という証明もあるぞ、という主張です。これを次のように書きましょう。
[x, y].Q[x]→P[x, y] on X×Y という証明が存在する =================================================== ならば Q[x]→∀w.P[x, w] on X という証明が存在する
これは、特定のパターンの証明の存在から、もうひとつのパターンの証明の存在を保証するもので、リーズニング規則(reasoning rule)と呼びます。通常、シーケントの推論(図)と呼ばれますが、同じ「推論」「証明」といった言葉を使っていると話が混乱するばかりなので、「リーズニング」を使います。
日本語の補足文がうざいなら取り除いてもいいですが、分かりやすいので残しておきます。
全称限量随伴性と∀導入リーズニング規則
これでやっと、「述語論理とインデックス付き圏と限量随伴性」で述べた限量随伴性(quantification adjunction)を登場させる準備ができました。
XとYを集合として、直積の第一射影を π:X×Y→X とすると、πによる述語(述語と命題は同義語)の引き戻し π*:Pred[X]→Pred[X×Y] があるのでした。Xの述語(命題)Qに対するπ*(Q)は、変数水増しオペレーター[x, y].を用いて、
- π*(Q) = [x, y].Q[x]
と書けます。π*の右随伴が∀πで、∀π(P)も変数を用いて書けます。
- ∀π(P) = ∀w.P[x, w]
したがって、随伴 π* -| ∀π によるホムセット同型は次の形に書けます。
- Pred[X×Y]([x, y].Q[x], P[x, y]) Pred[X](Q[x], ∀w.P[x, w])
このことを次の形に書いてもよいでしょう。
[x, y].Q[x]→P[x, y] というPred[X×Y]の射が存在する ===================================================== ならば Q[x]→∀w.P[x, w] on X というPred[X]の射が存在する
述語(命題)の圏の射とは、当該解釈領域上の証明(図)のことなので、
[x, y].Q[x]→P[x, y] on X×Y という証明が存在する =================================================== ならば Q[x]→∀w.P[x, w] on X という証明が存在する
これは、∀導入のリーズニング規則そのものです。つまり、∀導入のリーズニング規則の根拠は、全称限量(universal quantification)の随伴性 π* -| ∀π だったのです。
冒頭に出した“見た目は簡単なオマジナイ”からは、背後にある構造を見通すことはまず無理でしょう。図の描き方や説明の仕方を、もうちょっとチャンとして欲しいものです。