5. 述語論理
ここまで扱った命題は,それ自体で真偽が定まる主張であった.実際の数学では,「\(x\)が偶数である」「\(x^2<10\)である」のように,変数の値によって真偽が変わる主張を扱うことが多い.述語論理は,このような主張に「すべての」「ある」といった量化を加えて命題を作るための言葉である.
5.1 述語
ある集合\(X\)の要素を表す文字\(x\)を変数 (variable) とする.変数\(x\)の値を一つ定めると真偽が定まる主張\(P(x)\)を,\(x\)に関する述語 (predicate) という.複数の変数を含む述語\(P(x_1,\ldots,x_n)\)も同様に考える.
例えば,\(x\)を整数とするとき,「\(x^2<10\)」は\(x\)に関する述語である.\(x=2\)を代入すれば真の命題となり,\(x=4\)を代入すれば偽の命題となる.
また,\(x,y\)を実数とするとき,「\(x<y\)」は二つの変数\(x,y\)に関する述語である.例えば\(x=1,y=2\)を代入すれば真,\(x=3,y=2\)を代入すれば偽になる.
最初に内包的記法を導入したときには,「\(x\)が満たす条件」という言葉を用いた.述語を導入したので,ここでその意味を厳密に言い直す.集合\(X\)上の述語\(P(x)\)に対して, \[\{x\in X:P(x)\}\] は,\(P(x)\)が真となる\(x\in X\)全体からなる集合を表す.
したがって,内包的記法で用いた「条件」とは,ここでいう述語のことである.例えば \[\{x\in\mathbb Z:x^2<10\}\] は,述語「\(x^2<10\)」が真となる整数全体の集合である.
述語\(P(x)\)は,\(x\)の値をまだ指定していない段階では真偽が定まらない.具体的な値\(a\)を代入すると\(P(a)\)は命題になる.これとは別に,変数が動く範囲全体について「すべて」または「ある」と指定することによっても,述語から命題を作ることができる.
5.2 全称命題と存在命題
集合\(X\)上の述語\(P(x)\)に対して, \[\forall x\in X\ P(x)\] は「すべての\(x\in X\)について\(P(x)\)が真である」という命題を表し,全称命題という.記号\(\forall\)を全称記号という.
また, \[\exists x\in X\ P(x)\] は「\(P(x)\)が真となる\(x\in X\)が少なくとも一つ存在する」という命題を表し,存在命題という.記号\(\exists\)を存在記号という.全称記号と存在記号をまとめて量化記号という.
例えば, \[\forall x\in\mathbb R\ (x^2\ge0), \qquad \exists x\in\mathbb R\ (x^2=2)\] はいずれも真である.存在記号\(\exists\)は「少なくとも一つ存在する」ことだけを表し,一つしか存在しないことまでは主張しない.
一方, \[\forall x\in\mathbb R\ (x^2>0)\] は\(x=0\)で成り立たないので偽であり, \[\exists x\in\mathbb Z\ (x^2=2)\] も偽である.量化記号を含む命題では,「変数がどの集合を動くか」も真偽に影響する.
例えば, \[\forall x\in\mathbb R\ (x>1\to x>0)\] は真であるが,その逆にあたる \[\forall x\in\mathbb R\ (x>0\to x>1)\] は\(x=1/2\)で成り立たないので偽である.このように,述語を量化して得られる命題でも,含意とその逆は区別しなければならない.
また,整数\(n\)に関する条件を考えると,「\(n\)が4の倍数である」は「\(n\)が偶数である」ための十分条件であり,「\(n\)が偶数である」は「\(n\)が4の倍数である」ための必要条件である.
「\(P(x)\)を満たす\(x\in X\)がただ一つ存在する」ことを \[\exists!\,x\in X\ P(x)\] と書く.記号\(\exists!\)を一意存在記号という.
有限集合では,全称記号と存在記号は連言と選言をまとめて書くための記号とみなすことができる.
\(n\geq1\)とし,\(X=\{a_1,\ldots,a_n\}\)を有限集合とする.\(P(x)\)を\(X\)上の述語とすると, \[\forall x\in X\ P(x) \Longleftrightarrow P(a_1)\land\cdots\land P(a_n),\] \[\exists x\in X\ P(x) \Longleftrightarrow P(a_1)\lor\cdots\lor P(a_n)\] が成り立つ.
これは全称命題・存在命題の定義を,\(X\)の有限個の要素について書き下したものである.
空集合については少し注意が必要である.\(\emptyset\)には反例となる要素がないので, \[\forall x\in\emptyset\ P(x)\] は真と考える.一方,条件を満たす要素は一つも存在しないので, \[\exists x\in\emptyset\ P(x)\] は偽である.
例えば\(X=\{1,2,3\}\),\(P(x)\)を「\(x\leq3\)」とすると,\(\forall x\in X\,P(x)\)は \[P(1)\land P(2)\land P(3)\] と同じ内容であり,真である.
\(X\)が空集合でないとする.述語\(P(x)\)について, \[\forall x\in X\ P(x)\Rightarrow\exists x\in X\ P(x)\] が成り立つ.
命題 5.5 の証明
\(X\)は空集合でないので,ある\(x_0\in X\)が存在する.全称命題を仮定すると,特に\(P(x_0)\)が真である.したがって\(P(x)\)を満たす\(x\in X\)が少なくとも一つ存在する.
量化記号が二つ以上現れるときには,その順序に注意が必要である.例えば, \[\forall x\in\mathbb R\ \exists y\in\mathbb R\ (x+y=0)\] は真である.実際,各\(x\)に対して\(y=-x\)と選べばよい.一方, \[\exists y\in\mathbb R\ \forall x\in\mathbb R\ (x+y=0)\] は偽である.すべての\(x\)に対して同時に\(x+y=0\)を満たす一つの\(y\)は存在しない.このように,\(\forall\)と\(\exists\)が混ざる場合には順序を入れ替えると意味が変わることがある.
集合\(X,Y\)と述語\(P(x,y)\)について,次が成り立つ.
\[\forall x\in X\ \forall y\in Y\ P(x,y) \Longleftrightarrow \forall y\in Y\ \forall x\in X\ P(x,y).\]
\[\exists x\in X\ \exists y\in Y\ P(x,y) \Longleftrightarrow \exists y\in Y\ \exists x\in X\ P(x,y).\]
\[\exists x\in X\ \forall y\in Y\ P(x,y) \Rightarrow \forall y\in Y\ \exists x\in X\ P(x,y).\]
一般には(3)の逆向きの推論は成り立たない.
命題 5.6 の証明
(1)は,\(X\)のすべての要素と\(Y\)のすべての要素の組について\(P(x,y)\)が真であることを表しているので,量化する順序を入れ替えても内容は変わらない.(2)も,\(P(x,y)\)を満たす\(x\in X\)と\(y\in Y\)が存在することを表しているので,同様である.
(3)では,左辺を満たす一つの\(x_0\in X\)をとる.この\(x_0\)はすべての\(y\in Y\)に対して\(P(x_0,y)\)を満たすので,各\(y\)に対して存在する\(x\)として同じ\(x_0\)を選べばよい.
(4)について,\(X=Y=\mathbb Z\)とし,\(P(x,y)\)を「\(x=y\)」とする.各\(y\)に対して\(x=y\)と選べるので\(\forall y\exists x\ P(x,y)\)は真であるが,すべての整数\(y\)に同時に等しい一つの整数\(x\)は存在しない.したがって逆向きは一般には成り立たない.
5.3 述語論理での推論
量化記号を含む命題では,否定したときに\(\forall\)と\(\exists\)が入れ替わることが最も重要な基本法則である.
集合\(X\)上の述語\(P(x)\)について, \[\lnot\bigl(\forall x\in X\ P(x)\bigr) \Longleftrightarrow \exists x\in X\ \lnot P(x),\] \[\lnot\bigl(\exists x\in X\ P(x)\bigr) \Longleftrightarrow \forall x\in X\ \lnot P(x)\] が成り立つ.
定理 5.7 の証明
「すべての\(x\in X\)について\(P(x)\)が真である」が成り立たないとは,\(P(x)\)が偽となる\(x\in X\)が少なくとも一つ存在するということである.これは第1式の右辺である.
また,「\(P(x)\)が真となる\(x\in X\)が存在する」が成り立たないとは,どの\(x\in X\)についても\(P(x)\)が偽であるということである.これは第2式の右辺である.
例えば,「すべての実数\(x\)について\(x^2>0\)である」の否定は「\(x^2\le0\)となる実数\(x\)が存在する」であり,実際\(x=0\)がそのような値である.
集合\(X\)上の述語\(P(x),Q(x)\)について, \[\forall x\in X\ (P(x)\land Q(x)) \Longleftrightarrow \bigl(\forall x\in X\ P(x)\bigr)\land\bigl(\forall x\in X\ Q(x)\bigr),\] \[\exists x\in X\ (P(x)\lor Q(x)) \Longleftrightarrow \bigl(\exists x\in X\ P(x)\bigr)\lor\bigl(\exists x\in X\ Q(x)\bigr)\] が成り立つ.
命題 5.8 の証明
第1式の左辺は,すべての\(x\in X\)で\(P(x)\)と\(Q(x)\)がともに真であることを表す.これは,すべての\(x\)で\(P(x)\)が真であり,かつすべての\(x\)で\(Q(x)\)が真であることと同値である.
第2式の左辺が真なら,ある\(x\)で\(P(x)\)または\(Q(x)\)が真である.前者なら\(\exists x\,P(x)\)が真であり,後者なら\(\exists x\,Q(x)\)が真である.逆向きも,\(P\)または\(Q\)のいずれかを満たす要素をそのまま選べばよい.
\(\forall\)と選言,\(\exists\)と連言については,次の向きの推論が成り立つ.
集合\(X\)上の述語\(P(x),Q(x)\)について, \[\bigl(\forall x\in X\ P(x)\bigr)\lor\bigl(\forall x\in X\ Q(x)\bigr) \Rightarrow \forall x\in X\ (P(x)\lor Q(x)),\] \[\exists x\in X\ (P(x)\land Q(x)) \Rightarrow \bigl(\exists x\in X\ P(x)\bigr)\land\bigl(\exists x\in X\ Q(x)\bigr)\] が成り立つ.
命題 5.9 の証明
第1の推論について,\(P(x)\)がすべての\(x\)で真なら,当然\(P(x)\lor Q(x)\)もすべての\(x\)で真である.\(Q(x)\)がすべての\(x\)で真の場合も同様である.
第2の推論について,ある一つの\(x\)で\(P(x)\land Q(x)\)が真なら,その\(x\)は\(P(x)\)を満たす要素でもあり,\(Q(x)\)を満たす要素でもある.したがって二つの存在命題がともに成り立つ.
一般に,これらの逆向きの推論は成り立たない.例えば\(X=\{1,2\}\)とし,\(P(x)\)を「\(x=1\)」,\(Q(x)\)を「\(x=2\)」とする.すべての\(x\in X\)について\(P(x)\lor Q(x)\)は真であるが,\(P\)も\(Q\)もすべての\(x\)について真ではない.したがって \[\forall x\in X\ (P(x)\lor Q(x)) \not\Rightarrow \bigl(\forall x\in X\ P(x)\bigr)\lor\bigl(\forall x\in X\ Q(x)\bigr).\] また,\(P(1)\)と\(Q(2)\)は真なので\(\exists x\,P(x)\)と\(\exists x\,Q(x)\)はともに真であるが,\(P(x)\land Q(x)\)を満たす\(x\)は存在しない.したがって \[\bigl(\exists x\in X\ P(x)\bigr)\land\bigl(\exists x\in X\ Q(x)\bigr) \not\Rightarrow \exists x\in X\ (P(x)\land Q(x)).\]
集合\(X\)上の述語\(P(x)\)について,\(\exists!\,x\in X\ P(x)\)が成り立つことと,次の二つが同時に成り立つことは同値である.
\(\exists x\in X\ P(x)\).
任意の\(x,y\in X\)について,\(P(x)\land P(y)\Rightarrow x=y\).
命題 5.10 の証明
一意存在が成り立てば(1)は明らかであり,\(P(x),P(y)\)がともに真なら\(x,y\)はともに唯一の要素なので\(x=y\)である.逆に(1)によって条件を満たす要素が少なくとも一つ存在し,(2)によってそのような二つの要素は必ず等しいので,条件を満たす要素はただ一つである.
集合\(X\)上の述語\(P(x),Q(x)\)について, \[\bigl(\forall x\in X\ (P(x)\to Q(x))\bigr)\land \bigl(\forall x\in X\ P(x)\bigr) \Rightarrow \forall x\in X\ Q(x)\] が成り立つ.
命題 5.11 の証明
任意の\(x\in X\)をとる.第1の仮定から\(P(x)\to Q(x)\)が真であり,第2の仮定から\(P(x)\)が真である.分離規則により\(Q(x)\)が真である.\(x\)は任意であったから,すべての\(x\in X\)について\(Q(x)\)が真である.
集合\(X\)上の述語\(P(x),Q(x)\)について, \[\bigl(\forall x\in X\ (P(x)\to Q(x))\bigr)\land \bigl(\exists x\in X\ P(x)\bigr) \Rightarrow \exists x\in X\ Q(x)\] が成り立つ.
命題 5.12 の証明
\(P(x)\)を満たす要素\(x_0\in X\)を一つとる.第1の仮定から\(P(x_0)\to Q(x_0)\)が真であり,\(P(x_0)\)も真なので,分離規則により\(Q(x_0)\)が真である.したがって\(Q(x)\)を満たす要素が存在する.