△ソクラテスは赤いか?
先ず基本のおさらい。
記号論理学/述語論(FOL:一階述語論理)で使われる->は次の意味合いを持ちます。
- 真偽を返す述語S(x),P(x)があるとして(S(x)->P(x))式の値は
- S(x)が真ならP(x)
- S(x)が偽なら常に真
∧はごく普通の論理積です。
- 真偽を返す述語S(x),P(x)があるとして(S(x)∧P(x))式の値は
- S(x),P(x)がともに真の場合真
- S(x),P(x)いずれかが偽なら偽
上記式のxは
記号 | 名称 | 意味・用法 |
∀x | 全称量化子 | ∀x Q(x):いずれのxについてもQ(x)が成り立つ |
∃x | 存在量化子 | ∃x Q(x):あるxが存在してQ(x)が成り立つ |
->と∀x,∃xとの組み合わせ
∀x,∃xと->を組み合わせ、Q(x)に(S(x)->P(x))を割り当てると次のようになります。
- ∀x(S(x)→P(x))は全てのxに対して成り立たなければならないので、
「S(x)が真ならP(x)」なので「S(x)が真でP(x)が偽」なら偽になってしまい成り立たず許されない。
つまりS(x)が真なら必ずP(x)が真となります。S(x)が偽の場合はP(x)は問わない。 - ∃x(S(x)→P(x))はS(x)&P(x)があるかを知りたいのに、S(x)が偽で成り立ってしまいますので、
不適切です
そのため
- 「すべてのSはPである」は
- ∀x(S(x)→P(x))
∧と∀x,∃xとの組み合わせ
∀x,∃xと∧を組み合わせ、Q(x)に(S(x)∧P(x))を割り当てると次のようになります。
- ∀x(S(x)∧P(x))は全てのxに対して成り立つことを表すので、
いずれのx対しても「S(x),P(x)とも真」となることとなります - ∃x(S(x)∧P(x))は一部のxに対して式が真となることを表すので、
「S(x),P(x)ともに真」がとなるxが存在すれば成り立ちます。
- 「あるSはPである」は
- ∃x(S(x)∧P(x))
まどろっこしさの原因
ええい!なんてまどろっこしいんだ!
まどろっこしさの原因は明らかです。
真偽が対象となる命題の真偽とS->P式自体が正しいかどうかというメタ論理とが混在するからです。
- 式:∀x(S(x)→P(x))は
- S(x)が真の時
- P(x)が偽だと
- 式自体が不成立となる(メタ論理)ので
- P(x)が偽だと
- S(x)が真の時
- S(x)が偽の場合は常に式自体は真(メタ論理)
素直にこうすべきだったんじゃないの?
(S->P)自体をSが偽の時にも成り立つと「したい」がために持ち込んだ無用なメタ定義が煩わしさの元であり、 (S->P)はSの時のみを表すとすれば簡単だったのではないか?(S->P)がSが真の場合のみを表しSが偽の場合には言及しない、としても対偶(¬P->¬S)は成り立ち、その他論理計算に支障はないはずです。
(S->P)がSが真の場合のみを表すのであれば、
- ∃x(S(x)->P(x))
変数x,yの選択と∧演算
「リンゴは皮が赤い」を記号論理学/述語論(FOL)で表すと、
- ∀x (Apple(x) → ∃y (SkinOf(y, x) ∧ Red(y))
これは
- 「すべてのAppleは(∃!y (SkinOf(y, Apple) ∧ Red(y))である」
- 「(∃y (SkinOf(y, Apple) ∧ Red(y)」)
- 「あるSkinOf(Apple)はRedである」
つまり「リンゴの皮は赤い」となってめでたしめでたし、、、のようにも見えます。
xは何?
xは何を割り当てても構いません。
述語Apple(x)によってリンゴ以外のものは偽となり省かれるからです。
例えばソクラテスを割り当てても構いません。そしてそれはApple(x)で偽となります。
yは何?
yはどうでしょう?
yも当然、何を割り当てても構いません。
リンゴの皮以外のものを割り当てた場合SkinOf(y, Apple)ではじかれます。
この時Red(y)の検証も行われます。
SkinOf(),Red()両方の検証が真だったとき初めて真となります。
多くのプログラムの場合 A & B は Aが偽の場合Bの判定は実施しないと定義されていますが、FOLではそのような定義はありません。
例えばソクラテスを割り当てても構いません。そしてそれはRed(y)で真偽判定ができなければなりません。
SkinOf(y, Apple)が偽であってもRef(y)の判定は必要だからです。
つまりRed(y)は「ソクラテスは赤いか?」も判定できなければなりません。
破綻していないかchatGPTで確認
chatGPTに
- (SkinOf(y, Apple) ∧ Red(y)」)は非明示的に「SkinOf(y, Apple)が成立しなければRed(y)は検証不要」という想定が入り込んでしまっているのではないか?それはこの形式が破綻しているといえるのではないか?
ご指摘のとおり、形式論理体系の立場から見ると破綻しています。 なぜなら、形式論理は人間の処理戦略を考慮しないからです。
ただし、FOLの基礎的枠組みでは
- 全ての**述語は「完全関数(total function)」**として扱われ、
- 評価不能という状態は存在しないことが前提です。
- 任意の項に対して、述語は必ず「真または偽」のどちらかを返す。
本来は「ソクラテスが赤いか?」も基礎的枠組みとしては理念上組まれているということではあるようですが、二転三転しました。
ちなみに『全ての述語は「完全関数(total function)」』も「述語は関数ではない」など二転三転。
分からんことは分からんを論理値に
∧の解釈を維持し破綻を避けるためには真-偽-不正の3値論理としなければならないのではないか?と問うと、次の回答がありました。
一階述語論理(FOL)を3値論理に拡張した体系は複数存在します.
- クレーネの3値論理(Kleene’s Three-Valued Logic)
- プシュチョフスキーの3値論理(Łukasiewicz’s Three-Valued Logic)
- Belnapの4値論理(補足)
繰り返すが
(S->P)がSが真の場合のみを表すのであれば、
- ∀x (Apple(x) → ∃y (SkinOf(y, x) → Red(y))
| 固定リンク