我々の演繹システムは、論理パートと分野固有パートに分かれる。分野固有パートは色々と取り替えるが、論理パートは分野に関わらず同じモノを使う。ここでは、共通に使う論理パートを定義する。
TBD (To Be Described/Determined/Defined) の部分は、追加予定。
論理パートは、組み込み〈基本 | プリミティブ〉推論の集合と、組み込み〈基本 | プリミティブ〉リーズニングの集合により定義される。
16個の組み込み推論のうち9個は可逆で、6個は逆方向にして形が変わるので、方向を分けて勘定すると22個の組み込み推論になる。
9個の組み込みリーズニングのうち3個は暗黙に仮定されることが多く、6個を意識的に使うことになる。 9個の組み込みリーズニングのうち5個は可逆で、4個は逆方向にして形が変わるので、方向を分けて勘定すると13個の組み込みリーズニングになる。
組み込み推論と組み込みリーズニングを最小にすることは意図してない。現存するほとんどの演繹システムは冗長(頑張ればもっと小さく出来るように)に作られている。冗長性を排除すると、(ときに実用に耐えないほどに)使いにくくなる。したがって、組み込み推論と組み込みリーズニングが何個あるかは、あまり気にするポイントではない。
番号 | 記号 | 由来 | 備考 |
---|---|---|---|
1 | ! | たぶん唯一性から ∃! と同じ由来 | これだけギリシャ文字ではない |
θ | 0に似てるから | 使わない、*!と書く | |
2,3 | π | projectionのp | |
ι | injectionのi | 使わない、*πと書く | |
4 | Δ | diagonalのd、それと形状の類似 | |
λ | leftのl | 使わない、導出できる | |
5 | ρ | rightのr(rh) | |
α | associativeのa | 使わない、導出できる | |
6 | σ | symmetryのs, symmetry = permutation | |
7 | γ | conjunctionとconstructorのc、だが注記参照 | |
δ | distributiveのd | 使わない、導出できる | |
- | ε | evalのe |
※注記: γはcには対応しない。gに対応。だが、三番目に登場するのでcの代わりにγが使われることがある。
組み込み推論は、命題総称な〈命題パラメータを持つ〉シーケントとして記述する。命題総称の命題パラメータは山形括弧内に入れる。命題パラメータを持つ推論は推論規則とか推論パターンとも呼ばれる。
推論規則〈命題総称な推論 | 推論パターン〉の命題パラメータは、任意の論理式を代入して具体化してよい。推論規則の正しさは、次のように検証または保証される。
あるいは、
あるいは、
1.
A
----↑ id<A> (上向き矢印は可逆なことを示す)
A
2.
A A⇒B
--------- ε<A, B>
B
あるいはノード・ワイヤー図(描いてない TBD)。
「↔」で書いてある推論は両方向に適用できる。4, 5, 7は逆方向にすると形が変わる。
これらの組み込み推論の意味を一言で表現すれば:
横棒記法で書けば(可逆なものは↑でマークしている):
1. !:A → T
A
---- !<A>
T
2. π[1]:A, B → A
A B
------π[1]<A, B>
A
3. π[2]:A, B → B
A B
------ π[2]<A, B>
B
4. Δ:A → A, A
A
-----↑ Δ<A>
A A
5. ρ:A, T → A
A T
------↑ ρ<A>
A
6. σ:A, B → B, A
A B
-------↑ σ<A, B>
B A
7. γ:A, B → A∧B
A B
-------↑ γ<A, B>
A∧B
Δ<A> の逆 Δ'<A>:A, A → A だけは論理固有で、他の推論規則は、関数型プログラミングの組み込み総称関数として使える。例えばγは、型Aと型Bの2つのデータを受け取って、それらのペア(型はA×B)を返す型総称関数となる。
問題: 集合Xに対するベキ集合Pow(X)内で、上記の7つの推論を、∩と⊆に関する法則として解釈せよ。
矢印の向きを逆にして、T←→⊥、∧←→∨、,←→| を入れ替えた形を双対な推論と呼び、もとの推論の名前に'*'を前置して示すことにする。
これらの組み込み推論の意味を一言で表現すれば:
*Δ<A> の逆 *Δ'<A>:A → A | A だけは論理固有で、他の推論規則は、関数型プログラミングの組み込み総称関数として使える。ただし、(タグ付きユニオン型とは別に)選言的リストに相当する概念(選言的引数リスト、選言的多値戻り値)を実装しているプログラミング言語が(たぶん)ない。
問題: 集合Xに対するベキ集合Pow(X)内で、上記の7つの推論を、∪と⊆に関する法則として解釈せよ。
次の推論は、最初からシステム組み込みにしてもいいが、入れなくても導出できる。導出は、他の組み込み推論から始めてリーズニングを行う。
組み込みとしているπ[1]も、実際は導出できる。
A B
---id<A> ---!<B>
A T
=========+======= Conj
A B A T
------ ------ρ<A>
A T A
==============+=============== Comp
A B
------ 導出されたπ[1]<A, B>
A
π[1]は伝統的に有名な推論なので、組み込みとしている。推論を組み込みとして採用するかどうかの判断は、使い勝手とシステム設計者の好み〈趣味嗜好〉による。
TBD
暗黙に仮定される場合が多いリーズニング:
名称 | キーワード | 別名 |
---|---|---|
恒等リーズニング | Id | 自明{な}?リーズニング |
複製リーズニング | Dup | |
破棄リーズニング | Dis |
※ Dis は discard〈破棄する〉、dispose〈処分する〉から。
これらの暗黙的リーズニングの使い方は後で述べる。
明示的・意図的に使われるリーズニングは次の6つと、逆が3つである。
番号 | 名称 | 演算子記号 | キーワード | 別名 |
---|---|---|---|---|
1 | 結合リーズニング | ; | Comp | フルカット |
2 | 連言リーズニング | ⊗ | Conj | 連言的併置 |
3 | 選言リーズニング | ⊕ | Disj | 選言的併置 |
4 | ダイアモンド・リーズニング | ◇ | Diam | 右連言導入, 右全称導入 |
5 | スクエア・リーズニング | □ | Squr | 左選言導入, 左存在導入 |
6 | ラムダ・リーズニング | Λ | Lamb | 右含意導入 |
ダイアモンド・リーズニングの逆 | ◇' | Diam' | 右連言除去, 右全称除去 | |
スクエア・リーズニングの逆 | □' | Squr' | 右選言除去, 右存在除去 | |
ラムダ・リーズニングの逆 | Λ' | Lamb' | 右含意除去 |
リーズニング規則(推論総称なリーズニング)を、横書き1行のテキストで表現するのは困難であるが、次の約束のもとでテキスト表現してみる。
以上の約束で記述するが、なにかと無理があること(テキスト表現は破綻していること)は承知しておいてくださいな。
よく使われる簡略な形:
横棒記法で書けば(可逆なものは△でマークしている):
1. フルカット
Γ Δ
-- --
○ ○
-- --
Δ Σ
====+==== Comp
Γ
--
○
--
Σ
2. 連言的併置
Γ Σ
-- --
○ ○
-- --
Δ Π
=====+==== Conj
Γ Σ
-------
○
-------
Δ Π
3. 選言的併置
Γ Σ
-- --
○ ○
-- --
Δ Π
====+==== Disj
Γ | Σ
---|---
○
---|---
Δ | Π
4. 右(下側)全称導入
Γ
+-(x∈X)--
A
---
○
----
B[x]
+--------
===============△ Diam
Γ A
-------
○
-----------
∀x∈X.B[x]
4s. 簡略形 右(下側)全称導入
Γ
+-(x∈X)--
○
----
B[x]
+--------
==============△ Diam
Γ
-------
○
------------
∀x∈X.B[x]
5. 左(上側)存在導入
Γ
+-(x∈X)---
A[x]
-----
○
----
B
+---------
================== △ Squa
Γ ∃x∈X.A[x]
--------------
○
-----
B
6. 右(下側)含意導入
A Γ
------
○
------
B | Δ
=========△ Lamb
Γ
----
○
---------
A⇒B | Δ
6s. 簡略形 右(下側)含意導入
A Γ
-----
○
----
B
=========△ Lamb
Γ
----
○
-----
A⇒B
リーズニングによって構成される推論式を添えればより明確になる。
繰り返し言うが、テキスト表現では限界があり、色々と問題もあることを承知しておいてくださいな。
1. フルカット
Γ Δ
-- --
F G
-- --
Δ Σ
====+==== Comp《F:Γ→Δ, G:Δ→Σ》
Γ
--
F;G
--
Σ
2. 連言的併置
Γ Σ
-- --
F G
-- --
Δ Π
=====+==== Conj《F:Γ→Δ, G:Σ→Π》
Γ Σ
-------
F⊗G
-------
Δ Π
3. 選言的併置
Γ Σ
-- --
F G
-- --
Δ Π
====+==== Disj《F:Γ→Δ, G:Σ→Π》
Γ | Σ
---|---
F⊕G
---|---
Δ | Π
4. 右(下側)全称導入
Γ
+-(x∈X)--
A
---
F
----
B[x]
+--------
===============△ Diam《X Set, F:Γ, A→B》
Γ A
-------
<X>F
------------
∀x∈X.B[x]
4s. 簡略形 右(下側)全称導入
Γ
+-(x∈X)--
F
----
B[x]
+--------
==============△ Diam《X Set, F:Γ→B》
Γ
-------
<X>F
------------
∀x∈X.B[x]
5. 左(上側)存在導入
Γ
+-(x∈X)---
A[x]
-----
F
----
B
+---------
================== △ Squa《X Set, F:Γ, A→B》
Γ ∃x∈X.A[x]
--------------
[X]F
-----
B
6. 右(下側)含意導入
A Γ
------
F
------
B | Δ
=========△ Lamb《F:A, Γ→B | Δ》
Γ
----
ΛF
---------
A⇒B | Δ
6s. 簡略形 右(下側)含意導入
A Γ
-----
F
----
B
=========△ Lamb《F:A, Γ→B》
Γ
----
ΛF
-----
A⇒B
組み込みリーズニングのプロファイルは次のように書ける(書き方の約束は省略)。
次のリーズニングは組み込みである。
恒等(可逆)
Γ
--
○
--
Δ
======△ Id
Γ
--
○
--
Δ
複製(可逆)
Γ
--
○
--
Δ
====+====△ Dup
Γ Γ
-- --
○ ○
-- --
Δ Δ
破棄
Γ
--
○
--
Δ
====== Dis
☆
論理計算が難しいのは、操作対象となるオペランドと、操作を行うオペレーターが何階層にも渡って存在し、それぞれの階層が類似していたり少し違ったりしていて、混乱・混同が起きやすいからである。
階層の最上位にあるオペランドはリーズニングであり、最上位のオペレーターは、
記号を使い果たしているので、算術オペレーターを再利用することにする。
組み込みリーズニングから始めて、リーズニングオペレーターである *, + で組み上げた式がリーズニング式であり、リーズニング図のテキスト表現になる。
組み込み推論をリーズニングの先頭(始まりの部分)に置くときは、
☆
=========== Ent
組み込み推論
※ Entは、enter, entrance, entry のent、登場。
推論/リーズニングが持つ総称パラメータを具体化する代入〈substitution〉は、
推論
============= Subst 代入
代入後の推論
あらゆる論理的概念は、最終的にリーズニング図(=リーズニング式)により正しさが保証される。そのリーズニング図(=リーズニング式)を組み上げる元になるプリミティブは:
リーズニング図の構成図の横棒記法による図は: