命題を写像で理解する
本記事の背景とゴール
ゴール:写像による演算の形で命題と論理記号を理解すること
なぜ記事にしたのか
前回の記事で命題について一般的な定義・手続きを学んだ。
そして今回は命題の手続きが、代数で扱う世界とどう結びつくのかを理解するのが趣旨である。
そこで、写像による演算の形で命題と論理記号を改めて規定し、自分なりに理解するのが本記事のゴールである。
(余談)今回記事にするにあたっては、学習に使っている解析の参考書やネット記事で学ぼうとしたが、自身が納得のいく理解に至らなかった。そこで、2~3日のChatGPT(o3)との格闘の末ようやく自分の中で整理がついた。
何が疑問だったか
以下前回の記事より転記。
ここまでの理解である程度論理式を見ることができるようになったのだが、個人的に引っかかる点があった。
この命題と呼ばれるものは、”$${真:1}$$か$${偽:0}$$のいずれかが定まる主張”だというが、”$${A}$$は$${B}$$である”といった構文自体を命題というのか、その真偽を評価する機能を含めて命題といってるのか、、、
原子命題(原子式)であれば構文を扱ってるように見えるし、複合命題(複合式)であれば論理記号での結合が、構文そのものに作用しているのか評価機能への作用なのか、どちらとも取れそうな気がする。
以降は、この点をChatGPTと話して整理した内容になる。数学的な定義や証明の話というよりは論理評価のモデリングの話である。
命題を写像で表現してみる
書き方の注意
ここからは$${\rightarrow}$$を、$${f:X\rightarrow Y}$$と書いて、集合$${X}$$から集合$${Y}$$への写像$${f}$$、あるいは$${P\rightarrow Q}$$と書いて論理記号の”含意”を意味することがあるので注意。
述語論理は命題論理の拡張であるため、基本的には述語論理を前提とするが、本記事では命題関数$${P(x)}$$を$${P}$$として命題論理っぽく書くことが多い。(前回記事参照)
述語論理は常に一階述語論理を前提とする。
基本的には原子命題を含めて原子式、複合命題を含めて複合式の呼称を使う。(前回記事参照)
命題は構文と評価機能で切り分ける
ある主張があるとき、それは解釈しなければただの文字列(構文)であり、解釈できて初めて真偽を評価することができるが、命題というときはこの評価機能を含めてフォーカスされることがあると思う。
そこで”命題”というときには構文そのものとしての側面と、その評価機能という側面の二面性があることを踏まえておく。
これは原子命題(原子式)も複合命題(複合式)も、いずれもその二面性を持っている。
このことを、
①言語の世界$${L}$$(語彙表・構文のルール)から原子式$${l\in Atom}$$(文字列)を作る言語レイヤー
②入力された原子式に解釈を与えるモデルレイヤー
③モデルから提供された解釈を材料に評価する評価レイヤー
という3つのレイヤーで考えてみる。
原子式$${l \in Atom}$$を入力とし評価する写像$${v:Atom\rightarrow \{0,1\}}$$は、
原子式$${l}$$を解釈する写像$${I}$$と、解釈から真偽判定する写像$${\chi}$$があれば、その合成写像で表せて、$${v = \chi \circ I}$$となる。
①~②で原子式を対象としているが、論理記号で結合した複合式については
・論理記号の解釈はモデルによらないこと
・結合した原子式の真偽のみが判断材料であること(論理演算の定義)
を考えれば、
複合式の解釈・評価は③のレイヤーで行われ、原子式の解釈・評価とは独立しているとするのが妥当である。
これは次のことを意味する。
まず、原子式の評価写像$${v:Atom \rightarrow \{0,1\}}$$と原子式$${P,Q \in Atom}$$(構文)がある。
そこに、二項論理演算$${\phi}$$による複合式$${P\phi Q \in Form}$$(構文)があり、複合式まで評価対象を広げた評価関数$${\hat{v} :Form \rightarrow \{0,1\}}$$は、
・写像$${f_{\phi}:\{0,1\} \times \{0,1\}\rightarrow \{0,1\}}$$
・複合式を原子式へ分解する写像$${x_{\phi}: Form \rightarrow Form\times Form}$$
※$${Atom\subset Form}$$
によって
$${\hat{v} (P \phi Q) = f_{\phi} \circ \langle \hat{v},\hat{v} \rangle \circ x_{\phi} (P \phi Q) = f_{\phi} (\hat{v}(P),\hat{v}(Q)) = f_{\phi} (v(P),v(Q))}$$
となる。
つまり、②の原子式の解釈の外で論理記号を解釈・評価することができる。
※ここで$${\langle \hat{v},\hat{v} \rangle}$$とタプルで書いているのは、
$${\langle \hat{v},\hat{v} \rangle :Form \times Form \rightarrow \{0,1\} \times \{0,1\}}$$の意味。
解釈のモデル
②のレイヤーにあるモデル$${M}$$については、
数学で言えば実数体、複素数体、多項式環、線形空間などなど様々であり、
モデルごとに解釈の仕方というのは異なる場合がある。
(数理体系に限る必要もないが、言語学の話がしたいわけでもないので、以降モデルは数理体系の前提で話をする。)
モデルは、与えられた構文(原子式)を解釈するために、次のような構成となっている。
$$
\begin{array}{lll} \hline
構成要素 & 役割 & 書き方 \\\hline
ドメイン & モデルの扱う対象の全体(\R,\N など) & |M| \\\
定数解釈 & 式中にある定数記号と対応するドメイン要素 & c^M\\\
関数解釈 & 式中にある関数記号と対応する写像 &f^M \\\
述語解釈 & 式中にある関係記号と対応する関係性の一覧表(タプル集合) & R^M \\\
解釈関数 & 式を入力し解釈を割り当てる関数(I(c)=c^M,I(f)=f^M,I(R)=R^M) & I \\\hline
\end{array}
$$
例えば$${\R}$$では、ドメイン$${|M|}$$に$${0^M}$$や$${1^M}$$といった、その世界で扱うことができる対象を要素(定数解釈)として持っており、
それらのドメインの要素に演算を行う機能として和算$${f_+^M:|M|\times |M|\rightarrow |M|}$$などの各種関数がある。
$${0^M}$$や$${1^M}$$に対応する記号はもちろん$${0}$$,$${1}$$であり、和算の関数$${f_+^M}$$に対応する記号は$${+}$$である。(別に解釈を$${f}$$で書く必要はないが関数チックに書いておく。)
なお、演算はドメイン内で行われるのではなく、論理側にある評価の写像が適宜ドメインの提供する関数解釈の機能を利用して演算するイメージである。
また、真偽を評価するために述語解釈が必要であり、大小関係$${<^M}$$などがそれにあたる。対応する記号は$${<}$$である。
述語解釈はドメイン要素のタプル(順序を固定した組み合わせ)の集合として考えると分かりよい。(もっと直感的には関係性一覧表のようなもの)
例えば$${<^M = \{( 0^M,1^M), (1^M,2^M),…\}}$$のような集合で、$${0<1}$$を評価するとき、論理側にある評価の写像は$${(0^M,1^M)}$$という組が$${<^M}$$にあるか確認するのである。
解釈の仕方はモデルによってさまざまであり、大小関係の記号$${<}$$は実数体などで言う普通の順序と字引式順序では意味が変わったりするし、
定数や関数でもモデルごとに解釈がさまざまである。
しかし、$${=}$$は二項のドメイン要素が同一であるかを比較するという意味で、モデル間に解釈の差がないとして、先述したとおり論理記号として扱うことがあるようだ。
このモデルの定義に合わせると、解釈関数は式中の記号単位に解釈を割り当てるため、構文分解→記号解釈→評価という段階を踏む必要がある。以下で定式化していく。
原子式の構文分解
原子式の分解関数を以下のように定義。
$$
T_{atom}:Atom \rightarrow \Sigma_{pred} \times (Term_L)^*, T_{atom}(l)=(R,(t_1,…,t_n))
$$
原子式$${l\in Atom}$$を入力に述語記号$${R\in \Sigma _{pred}}$$と項のタプル$${(t_1,…,t_n)\in (Term_L)^*}$$を生成する。(原子式では真偽判定のために述語記号を必ず一つ持つ。)
項とは、各記号を構文規則に沿って組み合わせた式であり、
いくつか(個数は任意$${*}$$)の項が合わさって原子式を成す。
$$
Term_L=\Sigma_{var} \cup\Sigma_{const}\cup\{f(t_1,…,t_n)|f\in\Sigma _{func} \}
$$
ここで、
・$${x\in \Sigma_{var}}$$:述語論理における変数
・$${c\in \Sigma_{const}}$$:定数記号
・$${f\in \Sigma_{func}}$$:関数記号
とする。
関数はフォーマットに沿って他の項に作用するため、再帰的な構造としている。例えば$${a+b+c}$$を項にする場合、構文に沿って$${+(+(a,b),c)}$$のように入れ子にする。
本来はモデルの解釈関数では、記号単位で解釈を付与するため、項が関数であるときは関数記号を分離するべきではあるが、
ややこしいだけで本質的ではないので以下では項単位で解釈してることにする。
解釈関数
モデルの持つ解釈関数を述語解釈と定数・関数解釈で2つに分ける。(変数は入力されれば定数か関数かで解釈される。)
まずは、定数・関数解釈の関数を以下で定義。
$$
\tilde{I}:Term_L\rightarrow |M|
$$
$$
\tilde{I}(c)=c^M (cは定数記号), \tilde{I}(f(t_1,…,t_n))=f^M(\tilde{I}(t_1),…,\tilde{I}(t_n))
$$
$$
\tilde{I}^*:\{Term_L\}^*\rightarrow |M|^*
$$
$$
\tilde{I}^*(t_1,…,t_n)=(\tilde{I}(t_1),…,\tilde{I}(t_n))
$$
$${\tilde{I}^*}$$は$${\tilde{I}}$$の高階関数である。
あるモデル内において、項が定数記号$${c}$$であれば、$${\tilde{I}}$$はそのまま定数解釈$${c^M\in |M|}$$と結びつける。
項が関数項であれば、再帰的に$${\tilde{I}}$$を作用させ定数項まで続ける。
また、ドメイン$${|M|}$$に関数解釈自体は含まれないが、$${f^M:|M|^*\rightarrow|M|}$$であるため、演算結果は$${f^M(d_1,…,d_n)\in |M|}$$として扱える。なお、$${d_i\in |M|}$$
次に、述語解釈の関数を以下で定義。
$$
I_{pred}:\Sigma _{pred}\rightarrow \mathcal{P}(|M|^*)
$$
値域は述語解釈であり、先の説明の通りドメイン要素のタプル(順序を固定した組み合わせ)の集合である。
特性関数(真偽判定)
最後に解釈をもとに$${0,1}$$のいずれかを返す関数である。
$$
\chi:\mathcal{P}(D^*)\times D^*\rightarrow \{0,1\}
$$
$$
\chi(R^M,(d_1,…,d_n))=\begin{cases}
1,&(d_1,…,d_n)\in R^M\\
0,&otherwise
\end{cases}
$$
解釈した項のタプル$${(d_1,…,d_n)}$$が述語解釈$${R^M}$$の中にあれば真、なければ偽を返すという意味である。
合成して評価写像を表現する
本記事の一旦のゴールである。
これまでの関数を組み合わせて合成関数として評価写像$${v:Atom\rightarrow \{0,1\}}$$を表現すると以下になる。
$$
v= \chi\circ(I_{pred}\times id)\circ(id\times \tilde{I}^*)\circ T_{atom}
$$
ここで$${id}$$は恒等写像で、$${(id\times f):X\times Y\rightarrow X\times f(Y)}$$のように使う。
評価写像から見えること
命題論理と述語論理の違い
前回の記事で、命題論理と述語論理の違いを、命題を関数として変数を入れるかどうかであると述べたが、評価の過程にも大きな違いが存在する。
命題論理においては、命題の真偽のみに着目しており、
2つの命題$${P,Q}$$があればそれらの関連性はなく、独立に真偽が決定される。
そのため、解釈を与えるモデルに表現力は不要であり、命題$${P,Q}$$がそれぞれ真か偽かの対応表があるだけである。
(例えば$${1+0=1}$$と$${1+0+0=1}$$という2つの命題に関連性が何もない。)
また、モデルごとに真か偽かは異なり、モデルAでは$${P:1,Q:1}$$、モデルBでは$${P:1,Q:0}$$という可能性がある。
一方述語論理においては、モデルの中でドメイン要素同士の関係性や関数を持っているため、表現力が高い。
そのため、変数を持つこともできるし、異なる原子式にも関連性がある。また、全称命題・存在命題のように、変数へ繰り返し代入して評価できる。
なので、数学では基本的には述語論理しか使われない。
モデルごとに解釈が異なるため、こちらでも採用するモデルによって真偽が変わる可能性はある。
公理とは何か
公理とはある数学の体系において前提となる(常に真となる)命題である。
この公理は先の定式化の中で言えば、モデル$${M}$$の設計書のようなもので、
設計書の通りに実装されたモデルにおいては、公理(命題)が常に真となるようにできる。
なぜモデルの外に置くかというと、複数のモデルを一挙に扱うことができ、個々モデルでの評価を一々別で処理する必要がないという、便宜的な設定である。
(任意の順序体で成り立つ命題を、有理数体や実数体など異なるモデル内でも同じように評価できる。)
決定可能性
ある式$${\varphi}$$(複合式も含む)がすべてのモデル$${Model}$$と、変数$${\sigma}$$で真であることを、妥当であるといい、記号で書くと
$$
\models\varphi \leftrightarrow \forall Model\forall \sigma.\hat{v}(Model,\sigma,\varphi)=1
$$
ここで、$${\models\varphi}$$は$${\varphi}$$は妥当であるという宣言。
$${\hat{v}(Model,\sigma,\varphi)}$$は、モデル$${Model}$$と変数$${\sigma}$$について、$${\varphi}$$を評価する関数。
そして、言語$${L}$$上の全ての式を対象に、
「与えられた任意の式$${\varphi}$$が妥当であるか(すべてのモデルで真であるか)」
を判定する決定問題を妥当性問題という。
形式的には言語$${L}$$上の妥当な式の集合$${Valid_L = \{\varphi\in Sent_L| \models\varphi\}}$$があり、
妥当性問題とは、ある入力:$${\varphi \in Sent_L}$$に対して、出力:$${\varphi \in Valid_L}$$であるかという問題である。
そして、妥当性問題に対して、あるアルゴリズムで応答すること、
つまり、任意の入力式$${\varphi}$$に対して、有限時間で真(妥当)/偽(妥当ではない)を返すことを妥当性判定という。
(このアルゴリズムは式やモデルごとに変えてはいけない。式ごとに違うアルゴリズムを1本のアルゴリズムに束ねることは可。)
この任意の式の妥当性問題を真か偽かで答えられる単一の判定アルゴリズムが存在するとき、決定可能という。
命題論理は決定可能
命題論理であれば、この妥当性問題は決定可能である。
ある原子命題$${P}$$については、真となるモデルも偽となるモデルも考えられるため、原子命題は常に妥当ではないと判定できる。(真とならないモデルがある。)
しかし、$${P\lor \neg P}$$や$${(P\land (P\rightarrow Q))\rightarrow Q}$$のような式は真偽値表で見ればわかる通り、どんなモデル(原子命題のどの真偽パターンでも)常に真である。※前回の記事参照
これは命題論理において、原子命題$${P,Q}$$の真偽が独立であることに起因する。
このように、任意の式について、有限個$${2^n}$$の原子命題の真偽パターンを真偽値表で確認すれば、
どんなパターンでも常に真となる命題かどうかを、有限時間で確認することができるため、決定可能である。
述語論理は決定不能
有名な話に停止問題がある。
「任意のチューリング機械$${M}$$と、任意の入力$${w}$$に対して、
チューリング機械$${M}$$が有限ステップで停止するかを有限時間で判定するアルゴリズムがあるか」
機械と入力のセット$${\langle M,w\rangle}$$が有限時間で終了するかを判定するかという式を以下のように符号化する。
$$
\varphi _{M,w}: [Init(0) \land \forall t(Halt(t))\lor \exist u(Succ(t,u)\land Next(t,u))] \rightarrow \exist t Halt(t)
$$
それぞれの意味は以下のとおり。
$${Init, Next, Succ, Halt}$$は全て$${\Sigma_{pred}}$$の述語記号として解釈される。
$${0,t,u}$$は$${Term_L}$$の要素で、停止問題の時刻の表現として使用。
原子式$${Init(0)}$$:時刻0が入力$${w}$$を設定する初期構成である。
原子式$${Halt(t)}$$:時刻$${t}$$が停止状態である。
原子式$${Succ(t,u)}$$:$${u=t+1}$$である。
原子式$${Next(t,u)}$$:$${u=t+1}$$への遷移が$${M}$$の規則に従う。
$${\varphi _{M,w}}$$は、「入力$${w}$$をセットしたときに、任意の時間$${t}$$では規則に従って遷移しているか停止しているか」ならばいつかは停止するという命題である。
式の左側は、無限計算の全軌道を量化で表現した前提であり、
右側はいつか(有限時間で)停止することである。
決定可能の議論に合わせると、
ある機械、ある入力で停止するかは一つの式であり、その真偽は個別の妥当性問題となる。そして、任意の式で妥当であるかの判断を有限時間でできれば決定可能であると言える。
つまり、$${\models\varphi_{M,w}\leftrightarrow \forall Model\forall σ.\hat{v}(Model,σ,\varphi _{M,w})=1}$$の評価可否の問題であり、前提(左)も結論(右)も真なら妥当(全て停止する)、結論が偽であるなら非妥当(無限ループするものがある)となる。
任意の$${M,w}$$で妥当・非妥当いずれか判断できれば決定可能となる。
なお、停止問題では任意の機械と入力について、有限時間で真か偽か判定可能な万能アルゴリズムが存在せず、単一のアルゴリズムでは妥当・非妥当を判断できないことが知られている。
つまり、停止問題自体は、符号化した上記の妥当性問題の妥当性判定であるため、この妥当性判定は決定不能であるということになる。
このように述語論理において、決定不能となるカギは、”プログラムの無限計算”を量化子で1本の一階式に符号化できる表現力があることである。
詳しくは把握していないのでここまでとするが、一階述語論理においては妥当であることが真である場合だけ、有限時間で妥当であることが判定できるため、それを半決定可能であると言うようだ。
(無限ループするものがあり非妥当な場合には、いつまでも真偽の応答がなく判定が不可能である。)
