1. 情報数理Aの復習(集合・論理・数学の記法)
集合と論理の記号は,数学的な対象やその性質を正確に記述するために用いられる.証明では,用語や記号の定義に従って,仮定から結論を導く.
1.1 集合と集合の記法
集合\(A\)に要素\(x\)が含まれることを\(x\in A\)と書き,含まれないことを\(x\notin A\)と書く.また,集合\(A\)のすべての要素が集合\(B\)にも含まれるとき,\(A\)は\(B\)の部分集合であるといい,\(A\subset B\)と書く.本書では\(\subset\)は\(A=B\)の場合も含むものとし,\(\subseteq\)と同じ意味で用いる.要素を1つも持たない集合を空集合といい,\(\emptyset\)で表す.
集合の要素を波括弧\(\{\ \}\)の中に列挙する表し方を外延的記法という.例えば,\(\{1,2,3\}\)は\(1,2,3\)を要素とする集合である.集合では要素を並べる順番や重複は区別しないので,\(\{1,2,3\}=\{3,1,2\}=\{1,1,2,3\}\)である.無限集合でも,規則が明らかな場合には\(\{0,1,2,3,\ldots\}\)のように省略記号を用いて表すことがある.
数の集合を表す記号を次のように定める. \[\begin{array}{c|l} \text{記号}&\text{表す集合}\\ \hline \mathbb{N}&\text{自然数全体の集合 }\{0,1,2,3,\ldots\}\\ \mathbb{Z}&\text{整数全体の集合 }\{\ldots,-2,-1,0,1,2,\ldots\}\\ \mathbb{Q}&\text{有理数全体の集合(整数の比として表せる数)}\\ \mathbb{R}&\text{実数全体の集合(数直線上の点に対応する数)}\\ \mathbb{C}&\text{複素数全体の集合(実数 }a,b\text{ を用いて }a+bi\text{ と表せる数)} \end{array}\] 有理数を整数の比で表すとき,分母は\(0\)ではないものとする.また,\(i\)は\(i^2=-1\)を満たす虚数単位である.自然数に\(0\)を含めるかどうかは文献によって異なるが,本書では\(0\in\mathbb{N}\)とする.正の整数全体は\(\{1,2,3,\ldots\}\)であり,\(\mathbb{N}\)とは区別する.
一方,要素を列挙する代わりに,その要素が満たす条件によって集合を表す方法を内包的記法(内包表記)という.例えば, \[\{x\in\mathbb{Z}:x^2<10\}=\{-3,-2,-1,0,1,2,3\}\] であり,左辺は内包的記法,右辺は外延的記法で同じ集合を表している.一般に,\(\{x\in X:P(x)\}\)は「集合\(X\)の要素のうち,条件\(P(x)\)を満たすもの全体の集合」を表す.コロン「\(:\)」は,要素を表す文字とその満たす条件を区切っている.外延的記法が「どの要素が入るか」を列挙するのに対し,内包的記法は「どのような条件を満たす要素が入るか」を指定する.
2つの集合\(A,B\)に対して,少なくともどちらか一方に含まれる要素全体の集合を合併(和集合)といい\(A\cup B\)と書き,両方に含まれる要素全体の集合を共通部分(積集合)といい\(A\cap B\)と書く.また,\(A\)に含まれるが\(B\)には含まれない要素全体の集合を差集合といい,\(A\setminus B\)と書く.\(A\cap B\neq\emptyset\)のとき\(A\)と\(B\)は交わるといい,\(A\cap B=\emptyset\)のとき\(A\)と\(B\)は互いに素 (disjoint)であるという.
ある議論で考える対象の範囲を,あらかじめ1つの集合\(X\)に定めることがある.この基準となる集合\(X\)を,その議論における全体集合という.そのとき,扱う集合は\(X\)の部分集合と考える.全体集合は議論に応じて選ぶものであり,「あらゆるものを含む集合」という意味ではない.全体集合\(X\)が定められているとき,\(A\subset X\)に対して\(A^c=X\setminus A\)を\(A\)の補集合という.例えば\(A=\{1,2\}\)に対し,全体集合が\(X=\{1,2,3\}\)ならば\(A^c=\{3\}\)であり,\(X=\{1,2,3,4\}\)ならば\(A^c=\{3,4\}\)である.このように,補集合は全体集合の選び方に依存する.
集合\(X\)の部分集合全体の集合を\(X\)の冪集合 (power set)といい\(2^X\)と書く.例えば\(X=\{1,2\}\)ならば\(2^X=\{\emptyset,\{1\},\{2\},\{1,2\}\}\)である.また有限集合\(A\)の要素の個数は\(|A|\)と書く.新しい対象を定義するときには\(a:=b\)と書き,「\(a\)を\(b\)によって定義する」という意味で用いることがある.
1.2 順序対と直積集合
2つの対象\(a,b\)を順番を考えて組にしたもの\((a,b)\)を順序対 (ordered pair)という.\(a\)を第1成分,\(b\)を第2成分という.順序対では成分の順番が重要であり,一般に\((a,b)\neq(b,a)\)である.2つの順序対\((a,b)\)と\((c,d)\)が等しいとは,第1成分どうしと第2成分どうしがそれぞれ等しいこと,すなわち\(a=c\)かつ\(b=d\)であることをいう.
2つの集合\(A,B\)に対し,\(A\)の元を第1成分,\(B\)の元を第2成分とする順序対全体の集合 \[A\times B:=\{(a,b):a\in A,\ b\in B\}\] を\(A\)と\(B\)の直積 (direct product)という.例えば,\(A=\{1,2\}\),\(B=\{a,b,c\}\)ならば \[A\times B=\{(1,a),(1,b),(1,c),(2,a),(2,b),(2,c)\}.\] 一般に\(A\times B\)と\(B\times A\)は異なる集合である.
同じ集合の直積については\(A^2:=A\times A\)と書く.さらに, \[A_1\times\cdots\times A_n:=\{(a_1,\ldots,a_n):a_i\in A_i\ (i=1,\ldots,n)\}\] と定義し,特に\(A^n:=\{(a_1,\ldots,a_n):a_1,\ldots,a_n\in A\}\)と書く.例えば,平面上の点は2つの実数の組\((x,y)\)で表されるので,平面全体は\(\mathbb{R}^2\)で表される.同様に,\(\mathbb{R}^n\)を\(n\)次元実空間という.このように,直積集合は複数の情報を1つの対象としてまとめて扱うときに用いられる.
1.3 命題と論理
真か偽かが定まる主張を命題 (proposition)という.命題が真であるか偽であるかを,その命題の真理値という.命題\(P,Q\)に対して,\(\lnot P\)は「\(P\)ではない」,\(P\land Q\)は「\(P\)かつ\(Q\)」,\(P\lor Q\)は「\(P\)または\(Q\)」を表す.\(\lnot P\)は\(P\)と真偽が逆になり,\(P\land Q\)は両方が真のときだけ真になる.\(P\lor Q\)は少なくとも一方が真のときに真となり,両方が真の場合も含む.
命題\(P\to Q\)を含意といい,「\(P\)ならば\(Q\)」と読む.\(P\)を仮定,\(Q\)を結論と呼ぶ.これは「\(P\)が成り立つのに\(Q\)が成り立たない」という場合を認めない主張であり,\(P\)が真で\(Q\)が偽のときだけ偽,それ以外のときは真と定める.特に,\(P\)が偽のときには\(Q\)の真偽にかかわらず\(P\to Q\)は真である.これは\(Q\)そのものが真だと主張しているわけではない.「\(P\)が成り立つ場合には」という条件に反する例がないことを表している.
例えば,整数\(n\)について「\(n\)が4の倍数ならば\(n\)は偶数である」を考える.\(n=4\)では仮定と結論がともに真である.\(n=2\)では仮定は偽で結論は真,\(n=3\)では両方とも偽であるが,いずれもこの含意の反例ではない.反例となるのは,4の倍数であるのに偶数でない整数がある場合だけである.また,数学で用いる「ならば」は真理値によって定まるもので,時間的な前後関係や因果関係を意味するとは限らない.
考えているすべての場合について命題\(P,Q\)の真理値が一致するとき,\(P\)と\(Q\)は同値であるといい,\(P\Longleftrightarrow Q\)と書く.また,命題\(P\leftrightarrow Q\)は「\(P\)ならば\(Q\),かつ,\(Q\)ならば\(P\)」を表す.定義であることを示すため,同値記号の上に\(\mathrm{def}\)を付けて, \[(P\leftrightarrow Q)\overset{\mathrm{def}}{\Longleftrightarrow} \bigl((P\to Q)\land(Q\to P)\bigr)\] と書く.これは右辺によって左辺を定義するという意味である.含意とこの命題の真理値を,次の真理値表にまとめる. \[\begin{array}{c|c|c|c} P&Q&P\to Q&P\leftrightarrow Q\\ \hline \text{真}&\text{真}&\text{真}&\text{真}\\ \text{真}&\text{偽}&\text{偽}&\text{偽}\\ \text{偽}&\text{真}&\text{真}&\text{偽}\\ \text{偽}&\text{偽}&\text{真}&\text{真} \end{array}\] この表から,\(P\leftrightarrow Q\)は\(P,Q\)の真理値が一致するとき,つまり両方が真または両方が偽のときに真になることが分かる.したがって,同値を示すには,「\(P\)ならば\(Q\)」と「\(Q\)ならば\(P\)」の両方向を示せばよい.例えば,整数\(n\)について「\(n\)は偶数である」と「\(n+1\)は奇数である」は同値である.
一方,\(P\)を仮定すると\(Q\)が導かれるという推論を\(P\Rightarrow Q\)と書く.数学の証明では,仮定から新しい命題を推論によって導くことが基本となる.よく使う論理法則として, \[\lnot(P\land Q)\Longleftrightarrow(\lnot P)\lor(\lnot Q),\qquad \lnot(P\lor Q)\Longleftrightarrow(\lnot P)\land(\lnot Q)\] というド・モルガンの法則がある.
命題\(P\to Q\)に対して,\(Q\to P\)を逆,\(\lnot P\to\lnot Q\)を裏,\(\lnot Q\to\lnot P\)を対偶という.元の命題と対偶は同値であり, \[P\to Q\Longleftrightarrow\lnot Q\to\lnot P\] が成り立つ.一方,逆や裏は元の命題と同値とは限らない.
「\(n\)が4の倍数ならば\(n\)は偶数である」という命題は真であり,その対偶「\(n\)が偶数でないならば\(n\)は4の倍数ではない」も真である.一方,逆「\(n\)が偶数ならば\(n\)は4の倍数である」は偽である.実際\(n=2\)は偶数であるが4の倍数ではない.このように,ある命題が成り立たないことを示す具体例を反例 (counterexample)という.
また,推論\(P\Rightarrow Q\)が成り立つとき,\(P\)を\(Q\)の十分条件,\(Q\)を\(P\)の必要条件という.\(P\Rightarrow Q\)と\(Q\Rightarrow P\)の両方が成り立つとき,\(P\)と\(Q\)は互いに必要十分条件であり,\(P\Longleftrightarrow Q\)と書く.
1.4 述語と量化記号
変数\(x\)を含み,\(x\)の値を定めると真偽が定まる主張\(P(x)\)を述語 (predicate)という.例えば「\(x^2<4\)」は実数\(x\)に関する述語である.複数の変数を含む述語\(P(x_1,\ldots,x_n)\)も同様に考える.
述語\(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\)が少なくとも1つ存在する」ことを表す.この記号\(\exists\)を存在記号という.全称記号と存在記号をまとめて量化記号という.これらを用いて,述語から命題を作ることができる.なお,存在記号だけでは,そのような\(x\)がただ1つであるとは主張していない.例えば, \[\forall x\in\mathbb{R}\ (x^2\geq0),\qquad \exists x\in\mathbb{R}\ (x^2=2)\] はいずれも真である.
全称命題と存在命題の否定について, \[\begin{aligned} \lnot(\forall x\in X\ (P(x)))&\Longleftrightarrow\exists x\in X\ (\lnot P(x)),\\ \lnot(\exists x\in X\ (P(x)))&\Longleftrightarrow\forall x\in X\ (\lnot P(x)) \end{aligned}\] が成り立つ.つまり,「すべてについて成り立つ」の否定は「成り立たないものが存在する」であり,「成り立つものが存在する」の否定は「すべてについて成り立たない」である.例えば,「すべての実数\(x\)に対して\(x^2>0\)である」という命題は\(x=0\)という反例を持つので偽である.
複数の量化記号が現れるときには,その順番が重要である.例えば, \[\forall x\in\mathbb{R}\ \exists y\in\mathbb{R}\ (x+y=0)\] は真である.各\(x\)に対して\(y=-x\)とすればよく,\(y\)は\(x\)によって変わってよい.一方, \[\exists y\in\mathbb{R}\ \forall x\in\mathbb{R}\ (x+y=0)\] は偽である.したがって,一般に\(\forall x\exists y\ P(x,y)\)と\(\exists y\forall x\ P(x,y)\)は異なる命題である.また,量化記号を含む命題を否定するときには\(\forall\)と\(\exists\)が入れ替わり,例えば \[\lnot(\forall x\exists y\ P(x,y))\Longleftrightarrow\exists x\forall y\ (\lnot P(x,y))\] となる.
「ただ1つ存在する」ことを表す記号として\(\exists!\)を用いることもある.例えば \[\exists!\,x\in\mathbb{R}\ (2x+1=0)\] は「\(2x+1=0\)を満たす実数\(x\)がただ1つ存在する」という意味であり,真である.存在と一意性を同時に主張しているので,これを証明するときには通常「条件を満たすものが存在すること」と「そのようなものが2つあれば等しいこと」の両方を示す.
日本語で述べられた性質を量化記号を用いて正確な命題に書き直すことも重要である.例えば,関数\(f:\mathbb{R}\to\mathbb{R}\)が単調増加であることは\(\forall x,y\in\mathbb{R}\ (x\leq y\to f(x)\leq f(y))\)と表せる.
1.5 集合族
集合を要素として持つ集合を集合族 (family of sets)という.また,集合\(\Lambda\)の各要素\(\lambda\)に対して集合\(A_\lambda\)を1つずつ指定したものを,添字付き集合族といい, \[\{A_\lambda\}_{\lambda\in\Lambda}\] と書く.\(\Lambda\)を添字集合,その要素\(\lambda\)を添字という.\(A_\lambda\)は,添字\(\lambda\)に対応する集合を表す.この記号は「\(\lambda\)が\(\Lambda\)全体を動くときの集合\(A_\lambda\)の族」と読む.例えば\(\Lambda=\{1,2,3\}\)ならば,\(A_1,A_2,A_3\)という3つの添字を付けた集合を考えている.添字は数でなくてもよく,異なる添字に同じ集合が対応してもよい.以下では添字付き集合族も単に集合族と呼ぶ.
全体集合\(X\)を固定し,各\(A_\lambda\)を\(X\)の部分集合とする.\(x\in X\)に対し,集合族の共通部分(積集合)と合併(和集合)を \[\begin{aligned} x\in\bigcap_{\lambda\in\Lambda}A_\lambda &\overset{\mathrm{def}}{\Longleftrightarrow}\forall\lambda\in\Lambda\ (x\in A_\lambda),\\ x\in\bigcup_{\lambda\in\Lambda}A_\lambda &\overset{\mathrm{def}}{\Longleftrightarrow}\exists\lambda\in\Lambda\ (x\in A_\lambda) \end{aligned}\] で定義する.すなわち,共通部分はすべての\(A_\lambda\)に含まれる要素を集めた集合であり,合併は少なくとも1つの\(A_\lambda\)に含まれる要素を集めた集合である.共通部分の定義には全称記号,合併の定義には存在記号が対応している.添字集合が空の場合には,この定義により共通部分を\(X\),合併を\(\emptyset\)とする.
添字集合が正の整数全体の場合には,\(\bigcap_{k=1}^{\infty}A_k\)や\(\bigcup_{k=1}^{\infty}A_k\)とも書く.例えば,整数\(n\geq1\)に対して\(A_n=\{n,n+1,n+2,\ldots\}\subset\mathbb{Z}\)とすると, \[\bigcap_{n=1}^{\infty}A_n=\emptyset,\qquad \bigcup_{n=1}^{\infty}A_n=\{1,2,3,\ldots\}\] である.また,添字を明示せず集合族\(\mathcal{A}\)に対して\(\bigcap\mathcal{A}\)や\(\bigcup\mathcal{A}\)と書くこともある.
1.6 集合と論理
集合の演算と論理の演算には密接な関係がある.全体集合を\(X\)とし,\(A,B\subset X\),\(x\in X\)とすると,先に言葉で述べた定義は次のように書ける. \[\begin{aligned} x\in A\cap B&\overset{\mathrm{def}}{\Longleftrightarrow}(x\in A)\land(x\in B),\\ x\in A\cup B&\overset{\mathrm{def}}{\Longleftrightarrow}(x\in A)\lor(x\in B),\\ x\in A^c&\overset{\mathrm{def}}{\Longleftrightarrow}\lnot(x\in A). \end{aligned}\] 共通部分,合併,補集合に属する条件は,それぞれ「かつ」「または」「否定」を用いて表される.
また, \[A\subset B\overset{\mathrm{def}}{\Longleftrightarrow}\forall x\ (x\in A\to x\in B)\] である.したがって,\(A\subset B\)を証明するときには,任意の\(x\in A\)をとり,\(x\in B\)を示せばよい.さらに, \[A=B\Longleftrightarrow A\subset B\text{かつ}B\subset A\] なので,集合の等号を示すには2つの包含関係を示せばよい.この方法を二重包含による証明という.
整数の部分集合\(A=\{2n:n\in\mathbb{Z}\}\)と\(B=\{2n+2:n\in\mathbb{Z}\}\)を考える.任意の\(x\in A\)をとると\(x=2n=2(n-1)+2\)と書けるので\(x\in B\)であり,\(A\subset B\)である.逆に任意の\(x\in B\)をとると\(x=2n+2=2(n+1)\)と書けるので\(x\in A\)であり,\(B\subset A\)である.したがって\(A=B\)である.
差集合も補集合を用いて表すことができる.全体集合を\(X\)とし,\(A,B\subset X\)とすると, \[A\setminus B=A\cap B^c\] である.実際,\(x\in A\setminus B\)であることは「\(x\in A\)かつ\(x\notin B\)」ということなので,右辺の条件と同じである.
最後に,論理におけるド・モルガンの法則を集合に適用する.全体集合を\(X\)とし,\(A,B\subset X\)とすると, \[\begin{aligned} x\in(A\cup B)^c &\Longleftrightarrow \lnot(x\in A\lor x\in B)\\ &\Longleftrightarrow (x\notin A)\land(x\notin B)\\ &\Longleftrightarrow x\in A^c\cap B^c \end{aligned}\] なので, \[(A\cup B)^c=A^c\cap B^c\] が成り立つ.同様に\((A\cap B)^c=A^c\cup B^c\)も成り立つ.さらに,集合族\(\{A_\lambda\}_{\lambda\in\Lambda}\)に対しても同じ考え方から \[\left(\bigcup_{\lambda\in\Lambda}A_\lambda\right)^c =\bigcap_{\lambda\in\Lambda}A_\lambda^c,\qquad \left(\bigcap_{\lambda\in\Lambda}A_\lambda\right)^c =\bigcup_{\lambda\in\Lambda}A_\lambda^c\] が成り立つ.これは量化記号の否定で\(\forall\)と\(\exists\)が入れ替わることに対応している.
集合の包含関係や等式は,各要素が集合に属する条件を論理式で表すことによって証明できる.
1.7 定義と証明
数学では,同じ内容を用語,集合の記号,定義,論理式などの異なる形で表すことが多い.例えば \[2\mathbb{Z}:=\{2n:n\in\mathbb{Z}\}\] とすると,整数\(x\)に対する「\(x\in2\mathbb{Z}\)」「\(x\)は偶数である」「ある整数\(k\)を用いて\(x=2k\)と書ける」 「\(\exists k\in\mathbb{Z}\ (x=2k)\)」はすべて同じ内容を表している.記号や用語の意味が曖昧なときには,省略されている定義まで戻って考えることが重要である.
証明では,仮定と結論を定義に従って書き換える.例えば,推論 \[a,b\in2\mathbb{Z}\Rightarrow a+b\in2\mathbb{Z}\] を示すことを考える.仮定\(a,b\in2\mathbb{Z}\)から,ある整数\(k,\ell\in\mathbb{Z}\)を用いて\(a=2k\),\(b=2\ell\)と書ける.一方,結論\(a+b\in2\mathbb{Z}\)を示すには,\(a+b\)がある整数の2倍として書けることを示せばよい.実際, \[a+b=2k+2\ell=2(k+\ell)\] であり,\(k+\ell\in\mathbb{Z}\)なので\(a+b\in2\mathbb{Z}\)が従う.
この証明では,\(k,\ell\)が整数であることと,その和\(k+\ell\)も整数であることを用いている.新しく用いる文字がどの集合の元であるかを明示し,定義や既知の事実から結論が従う理由を述べる必要がある.
1.8 証明の基本的な方法
命題の形に応じて,直接証明,対偶による証明,背理法などを使い分ける.
最も基本的なのは直接証明である.推論\(P\Rightarrow Q\)を示すとき,\(P\)を仮定して定義や既知の事実を用い,\(Q\)を直接導く.前節で示した \[a,b\in2\mathbb{Z}\Rightarrow a+b\in2\mathbb{Z}\] は直接証明の例である.仮定を定義に従って\(a=2k\),\(b=2\ell\)と書き,\(a+b=2(k+\ell)\)から結論を導いている.
直接証明が難しいときには,対偶を用いることがある.元の命題\(P\to Q\)と対偶\(\lnot Q\to\lnot P\)は同値なので,推論\(P\Rightarrow Q\)を示す代わりに\(\lnot Q\Rightarrow\lnot P\)を示してよい.
整数\(n\)に対して,「\(n^2\)が偶数ならば\(n\)は偶数である」ことを示す.対偶は「\(n\)が奇数ならば\(n^2\)は奇数である」である.\(n\)が奇数ならば,ある整数\(k\)を用いて\(n=2k+1\)と書ける.このとき \[n^2=(2k+1)^2=4k^2+4k+1=2(2k^2+2k)+1\] であり,\(2k^2+2k\in\mathbb{Z}\)なので\(n^2\)は奇数である.したがって対偶が成り立ち,元の命題も成り立つ.
また,示したい命題が偽であると仮定して矛盾を導く方法を背理法という.命題\(P\)を示したいとき,\(\lnot P\)を仮定して矛盾を導くことで\(P\)を証明する.
整数全体の集合\(\mathbb{Z}\)には最大の整数が存在しない.実際,最大の整数\(m\)が存在すると仮定する.すると\(m+1\in\mathbb{Z}\)であり\(m<m+1\)なので,\(m\)が最大であることに矛盾する.したがって最大の整数は存在しない.
存在と一意性を含む主張では,2つを分けて考えるとよい.「条件を満たすものがただ1つ存在する」ことを示すには,まずそのようなものを1つ構成して存在を示し,次に条件を満たす2つのものを任意にとってそれらが等しいことを示し一意性を証明する.
方程式\(3x-2=0\)を満たす実数\(x\)がただ1つ存在することを示す.\(x=2/3\)は実際に方程式を満たすので解は存在する.一方,\(x,y\in\mathbb{R}\)がともに\(3x-2=0\),\(3y-2=0\)を満たすとすると,\(3x=3y\)より\(x=y\)である.したがって解は一意であり, \[\exists!\,x\in\mathbb{R}\ (3x-2=0)\] が成り立つ.
このように,証明では「何が仮定で何が結論か」「それぞれを定義に戻すと何を言っているか」を確認し,直接証明,対偶,背理法などから適切な方法を選ぶことが基本となる.