二分木で一階述語論理を表現する
二分木で一階述語論理を表現する。
基本構造の葉の部分に、名前が入る。
基本構造の節の部分に、項と式がわりあたる。
-
-
-
- ----
-
-
<基本構造>
Aは葉、Bは葉、ならば、(A,B)は節。
Aは節、Bは葉、ならば、(A,B)は節。
Aは葉、Bは節、ならば、(A,B)は節。
Aは節、Bは節、ならば、(A,B)は節。
-
-
-
- ----
-
-
<基本構文>
Aは名前、ならば、
Aは述語、または、Aは関数、または、Aは変数、または、
Aは接続、または、Aは量化、または、Aは類化、または、Aは記号、のいずれかになる。
$は記号。
%は記号。
$は項リスト。
Aは項、Bは項リスト、AとBに含まれる束縛変数は重複しない、ならば、(A,B)は項リスト。
%は式リスト。
Aは式、Bは式リスト、AとBに含まれる束縛変数は重複しない、ならば、(A,B)は式リスト。
[リスト生成時の条件で、束縛変数は重複しないことを求めたのは、複雑さ回避のため]
Aは変数、ならば、Aは項、かつ、以後、Aは自由変数。
Aは述語、Bは項リスト、ならば、(A,B)は式。
Aは関数、Bは項リスト、ならば、(A,B)は項。
Aは接続、Bは式リスト、ならば、(A,B)は式。
Aは量化、Bは式、CはBに含まれる自由変数、ならば、(A,(C,B))は式、以後、Cは束縛変数。
Aは類化、Bは式、CはBに含まれる自由変数、ならば、(A,(C,B))は項、以後、Cは束縛変数。
-
-
-
- ----
-
-
<自由変数と束縛変数の厳密な遺伝の仕方>
[変数が自由か束縛かは、どの式またはどの項の中にあるかに依存する]
Aは変数、ならば、Aは項Aに含まれる自由変数。
Aは述語、Bは項リスト、CはBに含まれる自由変数、DはBに含まれる束縛変数、ならば、
Cは式(A,B)に含まれる自由変数、Dは式(A,B)に含まれる束縛変数。
Aは関数、Bは項リスト、CはBに含まれる自由変数、DはBに含まれる束縛変数、ならば、
Cは項(A,B)に含まれる自由変数、Dは項(A,B)に含まれる束縛変数。
Aは接続、Bは式リスト、CはBに含まれる自由変数、DはBに含まれる束縛変数、ならば、
Cは式(A,B)に含まれる自由変数、Dは式(A,B)に含まれる束縛変数。
Aは量化、Bは式、CはBに含まれる自由変数、DはBに含まれる束縛変数、ならば、
Cは式(A,(C,B))に含まれる束縛変数、Dは式(A,(C,B))に含まれる束縛変数。
Aは類化、Bは式、CはBに含まれる自由変数、DはBに含まれる束縛変数、ならば、
Cは項(A,(C,B))に含まれる束縛変数、Dは項(A,(C,B))に含まれる束縛変数。
-
-
-
- ----
-
-
<特別な名前と属性を与えていく>
¬は接続。
∨は接続。
∧は接続。
⇒は接続。
⇔は接続。
Aは式、ならば、(¬,(A,%))は式。
Aは式、Bは式、(A,(B,%))は式リスト、ならば、(∨,(A,(B,%)))は式。
Aは式、Bは式、(A,(B,%))は式リスト、ならば、(∧,(A,(B,%)))は式。
Aは式、Bは式、(A,(B,%))は式リスト、ならば、(⇒,(A,(B,%)))は式。
Aは式、Bは式、(A,(B,%))は式リスト、ならば、(⇔,(A,(B,%)))は式。
∃は量化。
∀は量化。
Aは式、BはAに含まれる自由変数、ならば、(∃,(B,A))は式。[以後、Bは束縛変数]
Aは式、BはAに含まれる自由変数、ならば、(∀,(B,A))は式。[以後、Bは束縛変数]
@は類化。
Aは式、BはAに含まれる自由変数、ならば、(@,(B,A))は項。[以後、Bは束縛変数]
∈は述語。
Aは項、Bは項、(A,(B,%))は項リスト、ならば、(∈,(A,(B,%)))は式。
⊂は述語。
Aは項、Bは項、(A,(B,%))は項リスト、ならば、(⊂,(A,(B,%)))は式。
=は述語。
Aは項、Bは項、(A,(B,%))は項リスト、ならば、(=,(A,(B,%)))は式。
¥は関数。
Aは項リスト、ならば、(¥,A)は項。
-
-
-
- ----
-
-
<通俗表示>
:の左側は正式表示、:の右側は通俗表示。
(¬,(A,%)) : (¬A)
(∨,(A,(B,%))) : (A∨B)
(∧,(A,(B,%))) : (A∧B)
(⇒,(A,(B,%))) : (A⇒B)
(⇔,(A,(B,%))) : (A⇔B)
(∃,(B,A)) : ∃B(A)
(∀,(B,A)) : ∀B(A)
(@,(B,A)) : {B|A}
(∈,(A,(B,%))) : (A∈B)
(⊂,(A,(B,%))) : (A⊂B)
(=,(A,(B,%))) : (A=B)
(¥,A) : A
Pは述語、A、Bは項、のとき、
(P,(A,$)) : P[A]
(P,(A,(B,$))) : P[A,B]
以下、同様。
Fは関数、A、Bは項、のとき、
(F,(A,$)) : F(A)
(F,(A,(B,$))) : F(A,B)
以下、同様。
¥について:
(a,b)や(a,b,c)のような形式は何かというと、関数である。
関数ではあるが、名前が省略されている。
そこで一時的につけた名前が、¥。