情報数理A

7. 命題の証明

7.1 証明の考え方

ここまでにも,いくつかの命題が成り立つ理由を証明として述べてきた.この節では,証明を書くときの基本的な考え方を整理する.証明では,定義,すでに分かっている事実,論理の規則などを用いて命題が真であることを示す.何が仮定で何が結論かを確認し,必要に応じて用語や記号を定義に戻して考えることが基本である.

例えば,\(A\subset B\)を証明したいとする.部分集合の定義から,これは「任意の\(x\in A\)について\(x\in B\)を示す」ことと同値である.したがって,まず任意の\(x\in A\)を一つとり,仮定や既知の事実を用いて\(x\in B\)を導けばよい.また,集合の等号\(A=B\)を示すときには,定理6.3より \[A\subset B,\qquad B\subset A\] をそれぞれ示せばよい.この方法を二重包含による証明という.

同じ考え方は量化命題にも使える.全称命題 \[\forall x\in X\ P(x)\] を示すときには,\(X\)の任意の要素\(x\)を一つとり,その\(x\)について\(P(x)\)を示す.一方,存在命題 \[\exists x\in X\ P(x)\] を示すには,条件\(P(x)\)を満たす具体的な要素を一つ与えればよい.

「条件を満たすものがただ一つ存在する」ことを示す場合には,存在と一意性を分けて考えるとよい.まず条件を満たすものを一つ構成して存在を示し,次に条件を満たす二つの要素\(x,y\)を任意にとって\(x=y\)を示す.

例 7.1(一意存在の証明)

実数\(a,b\)について\(a\neq0\)とする.方程式 \[ax+b=0\] を満たす実数\(x\)がただ一つ存在することを示す.

まず\(x=-b/a\)とおけば\(ax+b=0\)となるので,条件を満たす実数は存在する.次に\(x,y\)がともにこの方程式を満たすとすると, \[ax+b=0,\qquad ay+b=0\] である.二式の差をとると\(a(x-y)=0\)であり,\(a\neq0\)だから\(x=y\)である.したがって条件を満たす実数はただ一つである.

これに対して,全称命題が成り立たないことを示すには,その主張を満たさない具体例を一つ示せばよい.このような例を反例 (counterexample) という.例えば「すべての実数\(x\)について\(x^2>0\)である」という主張は,\(x=0\)が反例なので偽である.

7.2 直接証明

推論\(P\Rightarrow Q\)を示すとき,\(P\)を仮定し,定義や既知の事実を用いて\(Q\)をそのまま導く方法を直接証明という.最も基本的な証明方法である.

以下の例で用いる用語を確認しておく.整数\(n\)が,ある整数\(k\)を用いて\(n=2k\)と表せるとき\(n\)は偶数であるといい,\(n=2k+1\)と表せるとき\(n\)は奇数であるという.

例 7.2

二つの偶数\(a,b\)の和\(a+b\)も偶数であることを示す.

\(a,b\)が偶数であると仮定する.定義より,ある整数\(k,\ell\)を用いて \[a=2k,\qquad b=2\ell\] と書ける.したがって \[a+b=2(k+\ell)\] である.\(k+\ell\)は整数なので,偶数の定義から\(a+b\)も偶数である.

この証明では,「偶数」という言葉を定義に戻し,仮定から得られる表示\(a=2k\),\(b=2\ell\)を結論の定義に合う形へ変形している.新しく用いる文字がどの集合の要素であるか,また各段階が何から従うかを明示することが重要である.

7.3 三段論法

いくつかの推論を順につないで結論を導くことも多い.例えば \[P\Rightarrow Q,\qquad Q\Rightarrow R\] が分かっていれば,\(P\)を仮定するとまず\(Q\)が得られ,そこから\(R\)が得られるので \[P\Rightarrow R\] と推論できる.このように推論を鎖のようにつなぐ考え方を三段論法という.これは命題3.8で示した含意の推移性に対応している.

証明が長くなると,一つの仮定から一度に結論まで進むのではなく,中間的な主張をいくつか示していくことが多い.その際には,それぞれの段階で「何から何を導いたのか」が分かるように書く.

7.4 対偶による証明

推論\(P\Rightarrow Q\)を直接示しにくいときには,対偶 \[\lnot Q\Rightarrow\lnot P\] を示すことがある.命題4.9より,この二つは同値なので,対偶を証明すれば元の推論も証明されたことになる.

例 7.3

整数\(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\)は整数なので\(n^2\)は奇数である.したがって対偶が成り立ち,元の命題も成り立つ.

対偶を用いると,結論の否定から仮定の否定へ向かう方が扱いやすい場合がある.特に「ある性質を持つならば別の性質を持つ」という主張では,元の向きと対偶のどちらが定義を使いやすいかを比較するとよい.

7.5 同値の証明

必要条件と十分条件の節で見たように,二つの条件\(P,Q\)が同値であることを示すには,通常 \[P\Rightarrow Q,\qquad Q\Rightarrow P\] の二方向を別々に証明する.また,三つ以上の条件では,推論を循環するようにつなげれば十分である.ここでは,実際の証明では各方向を明確に分けて書くことが大切であることを確認しておく.

例 7.4

整数\(n\)について,「\(n\)が偶数である」ことと「\(n+2\)が偶数である」ことが同値であることを示す.

\(n\)が偶数なら,ある整数\(k\)を用いて\(n=2k\)と書ける.したがって \[n+2=2(k+1)\] であり,\(n+2\)も偶数である.逆に\(n+2\)が偶数なら,ある整数\(k\)を用いて\(n+2=2k\)と書けるので, \[n=2(k-1)\] であり,\(n\)も偶数である.よって二つの条件は同値である.

7.6 背理法

示したい命題\(P\)が偽であると仮定し,そこから矛盾を導くことによって\(P\)を示す方法を背理法という.すなわち,\(\lnot P\)を仮定すると矛盾が生じることを示す.もし\(P\)が偽なら\(\lnot P\)は真であるはずなので,そこから常に偽である主張が導かれることはあり得ない.したがって\(P\)は真でなければならない.

例 7.5

空でない全体集合\(U\)とその部分集合\(A\)について,\(A\neq A^c\)であることを示す.

\(A=A^c\)であると仮定する.\(U\)は空でないので,ある\(x\in U\)を一つとる.\(x\in A\)なら,\(A=A^c\)から\(x\in A^c\)でもあり,補集合の定義から\(x\notin A\)となって矛盾する.一方,\(x\notin A\)なら\(x\in A^c\)であり,\(A=A^c\)から\(x\in A\)となって矛盾する.したがって\(A=A^c\)という仮定は成り立たず,\(A\neq A^c\)である.

このように,証明ではまず主張を定義に戻して「何を示せばよいか」を明確にする.そのうえで,直接証明,対偶,背理法などから適切な方法を選ぶ.証明方法の名称そのものを覚えることよりも,仮定と結論の内容を正確に読み,それらをつなぐ理由を一つずつ述べることが重要である.