コンテンツにスキップ

証明の技術:数学的帰納法と背理法はなぜ正しいのか、不変量の原理

対象読者: 本テーマ第 1〜2 章(集合と論理、自然数から実数までの数の体系)を学んだ人。帰納法や背理法を使った経験は問いませんが、命題と量化子の記法は使います。

前提となる記事:数とは何か:自然数から実数へ、そして 1 = 0.999… はなぜ正しいのか

生 Markdown

「1 から nn までの和の公式は、どの nn でも正しい」と言い切るには、nn を一つずつ確かめるだけでは終わりません。この記事は、無限にある場合を有限の紙で押さえる「数学的帰納法」と、「そうだとしたら変だ」と言って示す「背理法」が、なぜ正しい証明として通用するのかを順に確かめます。読み終えると、誤った帰納法を見抜けるようになり、2\sqrt2 が分数で書けないことを自分で証明できるようになります。

  • 数学的帰納法の帰納ステップが証明しているのは「P(n)P(n) が正しい」ではなく「P(n)P(n) ならば P(n+1)P(n+1)」という含意です。ここを取り違えると、帰納法は循環論法に見えてしまいます。
  • 帰納法の正しさは自然数の整列性から従い、逆に整列性も帰納法から従います。ペアノの公理系では帰納法は第 5 公理、つまり自然数の定義の一部です。証明すべき定理なのか、置くべき公理なのかは、どこから出発するかの問題です。
  • 基底ステップを落とすと、帰納ステップが完璧でも結論はすべて偽になりえます。逆に「すべての馬は同じ色」の誤証明では、基底は正しく、帰納ステップが n=1n = 1 でだけ破れています。
  • 背理法は「¬P\lnot P を仮定して何らかの矛盾を導く」、対偶証明は「¬Q\lnot Q を仮定して ¬P\lnot P を導く」。後者は前者の特殊な形であり、書き直せるなら対偶で書いたほうが読みやすくなります。
  • x2=2x^2 = 2 を満たす有理数が存在しないことは、既約分数を使う証明と無限降下法による証明の二通りで示せます。後者は整列性、つまり帰納法を裏返した形をそのまま使います。
  • 操作をくり返しても変わらない量(不変量)が違えば到達できず、操作のたびに必ず減る量(単調量)があれば必ず止まる、という不変量の原理(§8)は、盤面の敷き詰めや互除法の正しさを一行で示す証明の型です。

1. 動機:無限個の主張を有限の紙に書く

Section titled “1. 動機:無限個の主張を有限の紙に書く”

数学の主張の多くは「すべての自然数 nn について〜」という形をしています。たとえば

1+2+⋯+n=n(n+1)21 + 2 + \cdots + n = \frac{n(n+1)}{2}

これは n=1n = 1 の主張、n=2n = 2 の主張、n=3n = 3 の主張……という無限個の主張を一度に述べたものです。n=1n = 1 から順に確かめていけば n=100n = 100 までは有限時間で片づきます。しかしそこで止めた人は、「では n=101n = 101 は」と聞かれて答えられません。確認を積み上げる方針では、いつまでたっても終わりません。

有限の紙に無限個の主張の証明を書くには、質的に違う仕掛けが要ります。数学的帰納法はその代表です。着想は単純で、「1 枚目を倒す」ことと「どの 1 枚が倒れても次が倒れる」ことの 2 つだけを示せば、ドミノは無限に倒れていくというものです。無限回の確認を、有限個(この場合 2 つ)の証明に圧縮しているわけです。

一方、示したい命題の中身を直接組み立てられない場合もあります。「2\sqrt2 は分数で書けない」という主張は、書けないことを示すのですから、何かを作って見せる方向では手が出ません。こういうときは「書けたとしたら何が起きるか」を追いかけて、破綻を探します。これが背理法です。

歴史的には、どちらも古い技術です。通約不可能量(共通の物差しで測れない二つの量)の発見は紀元前 5 世紀のピタゴラス学派にさかのぼり、正方形の対角線と辺が通約不可能であることは背理法によって示されました。数学的帰納法の明示的な使用は 16 世紀のマウロリコ、17 世紀のパスカル『算術三角形論』に見られ、19 世紀末にペアノが自然数の公理系の一部としてこれを定式化します。

使い方を覚えるだけなら 1 ページで済みます。この記事が「なぜ正しいのか」に紙面を割くのは、根拠を知らないと誤った帰納法を見抜けないからです。誤った帰納法は実在しますし、しかも見た目は正しい帰納法とほとんど区別がつきません。

2. 準備:含意と、その逆・裏・対偶

Section titled “2. 準備:含意と、その逆・裏・対偶”

自然数全体を N={1,2,3,…}\mathbb{N} = \{1, 2, 3, \ldots\} と書きます。この記事では 00 を自然数に含めません。整数全体を Z\mathbb{Z}、有理数全体を Q\mathbb{Q}、実数全体を R\mathbb{R} と書きます。数の体系そのもの(Q\mathbb{Q} や R\mathbb{R} が 順序体(定義 2.1)[数とは何か] であること)については 数とは何か? を、論理記号の扱い(論理結合子(定義 2.3)[数学の国語] や量化子)については 数学の国語 - 集合と論理 を参照してください。

命題 PP と QQ に対し、P⇒QP \Rightarrow Q(「PP ならば QQ」)の真偽は次の表で定めます。とくに、PP が偽であれば QQ の真偽によらず P⇒QP \Rightarrow Q は真です。この規約は後で何度も効いてきます。

定義 2.1(逆・裏・対偶)↗

命題 P⇒QP \Rightarrow Q に対して、

  • Q⇒PQ \Rightarrow P をその逆、
  • ¬P⇒¬Q\lnot P \Rightarrow \lnot Q をその裏、
  • ¬Q⇒¬P\lnot Q \Rightarrow \lnot P をその対偶

といいます。

真偽の対応は次のとおりです。

PPQQP⇒QP \Rightarrow Q対偶 ¬Q⇒¬P\lnot Q \Rightarrow \lnot P逆 Q⇒PQ \Rightarrow P
真真真真真
真偽偽偽真
偽真真真偽
偽偽真真真

第 3 列と第 4 列が完全に一致し、第 5 列は一致しません。もとの命題と対偶は同じことを言っており、逆は別のことを言っている、というのがこの表の読み方です。

自然数の集合には、実数や有理数にはない次の性質があります。

公理 3.1(整列性)↗

N\mathbb{N} の空でない任意の部分集合は、最小元をもつ。すなわち S⊆NS \subseteq \mathbb{N} かつ S≠∅S \ne \emptyset ならば、ある m∈Sm \in S が存在して、すべての n∈Sn \in S に対し m≤nm \le n が成り立つ。

この性質が自明でないことは、有理数と比べればわかります。集合 {x∈Q:x>0}\{x \in \mathbb{Q} : x > 0\} は空でない Q\mathbb{Q} の部分集合ですが、最小元をもちません。正の有理数 xx を一つ取れば x/2x/2 はより小さい正の有理数だからです。「これ以上小さくできない」が保証されるのは、自然数が離散的に並んでいることの帰結です。

定理 3.2(数学的帰納法の原理)✓

各 n∈Nn \in \mathbb{N} に対して命題 P(n)P(n) が定まっているとする。次の 2 条件を仮定する。

  1. (基底ステップ)P(1)P(1) は真である。
  2. (帰納ステップ)任意の n∈Nn \in \mathbb{N} に対して、「P(n)P(n) が真ならば P(n+1)P(n+1) も真である」が成り立つ。

このとき、すべての n∈Nn \in \mathbb{N} に対して P(n)P(n) は真である。

証明(定理 3.2)

反例の集合

S={ n∈N:P(n) は偽 }S = \{\, n \in \mathbb{N} : P(n) \text{ は偽} \,\}

を考えます。示したい結論は S=∅S = \emptyset にほかなりません。

そこで S≠∅S \ne \emptyset と仮定します(ここで背理法を使います。背理法の正当化は 命題 6.2 で行いますが、ここでは既知の論理として使わせてください)。SS は N\mathbb{N} の空でない部分集合ですから、整列性(公理 3.1) により最小元 m∈Sm \in S をもちます。

まず m≠1m \ne 1 です。実際、仮定 1 より P(1)P(1) は真なので 1∉S1 \notin S であり、m∈Sm \in S だからです。m∈Nm \in \mathbb{N} かつ m≠1m \ne 1 なので m≥2m \ge 2、したがって m−1m - 1 もまた自然数です。

次に m−1∉Sm - 1 \notin S です。なぜなら m−1<mm - 1 < m であり、mm は SS の最小元だからです。m−1∉Sm-1 \notin S とは P(m−1)P(m-1) が真だということです。

ここで仮定 2 を n=m−1n = m - 1 に適用します。P(m−1)P(m-1) が真なので P((m−1)+1)=P(m)P((m-1)+1) = P(m) も真です。ところが m∈Sm \in S とは P(m)P(m) が偽だということでした。P(m)P(m) が真かつ偽となり矛盾します。

したがって S≠∅S \ne \emptyset という仮定は誤りで、S=∅S = \emptyset、すなわちすべての nn で P(n)P(n) は真です。

基底ステップが 1 枚目を倒し、帰納ステップが隣へ伝える

注意 3.3(なぜ循環論法ではないのか)

帰納法にはじめて触れた人がほぼ必ず抱く疑問は、「P(n)P(n) を仮定して P(n+1)P(n+1) を示すのなら、示したいことを仮定していることにならないか」というものです。

なりません。帰納ステップで証明しているのは P(n)P(n) ではなく、P(n)⇒P(n+1)P(n) \Rightarrow P(n+1) という含意だからです。この含意は、P(n)P(n) が偽である場合には §2 の真理値表によって自動的に真になります。つまり帰納ステップだけを証明しても、PP が真である nn が一つでも存在することは保証されません。実際 例 5.1 は、帰納ステップが完全に正しいのにすべての nn で P(n)P(n) が偽である例です。

「P(n)P(n) を仮定する」という言い回しは、「もし P(n)P(n) が真である世界にいるならば」という条件付きの議論の合図であって、P(n)P(n) を認めているわけではありません。

例 3.4(1 から n までの和)

すべての n∈Nn \in \mathbb{N} に対し ∑k=1nk=n(n+1)2\displaystyle\sum_{k=1}^{n} k = \frac{n(n+1)}{2} が成り立ちます。

P(n)P(n) をこの等式とします。

基底ステップ。 n=1n = 1 のとき、左辺は 11、右辺は 1⋅22=1\dfrac{1 \cdot 2}{2} = 1 です。一致するので P(1)P(1) は真です。

帰納ステップ。 n∈Nn \in \mathbb{N} を任意に取り、P(n)P(n)、すなわち ∑k=1nk=n(n+1)2\sum_{k=1}^{n} k = \frac{n(n+1)}{2} を仮定します。このとき

∑k=1n+1k=(∑k=1nk)+(n+1)=n(n+1)2+(n+1)(帰納法の仮定を使用)=(n+1)(n2+1)=(n+1)(n+2)2.\begin{aligned} \sum_{k=1}^{n+1} k &= \left(\sum_{k=1}^{n} k\right) + (n+1) \\ &= \frac{n(n+1)}{2} + (n+1) && \text{(帰納法の仮定を使用)} \\ &= (n+1)\left(\frac{n}{2} + 1\right) \\ &= \frac{(n+1)(n+2)}{2}. \end{aligned}

最後の式は (n+1)((n+1)+1)2\dfrac{(n+1)\bigl((n+1)+1\bigr)}{2} そのものですから、P(n+1)P(n+1) が成り立ちます。

定理 3.2 により、すべての nn で P(n)P(n) が成り立ちます。

例 3.5(ベルヌーイの不等式と、仮定を落としたときの反例)

xx を x≥−1x \ge -1 を満たす実数、n∈Nn \in \mathbb{N} とすると (1+x)n≥1+nx(1+x)^n \ge 1 + nx が成り立ちます。

基底ステップ。 n=1n = 1 のとき、両辺とも 1+x1 + x で等号が成り立ちます。

帰納ステップ。 (1+x)n≥1+nx(1+x)^n \ge 1 + nx を仮定します。仮定 x≥−1x \ge -1 より 1+x≥01 + x \ge 0 ですから、不等式の両辺に 1+x1+x を掛けても不等号の向きは変わりません。よって

(1+x)n+1=(1+x)n(1+x)≥(1+nx)(1+x)=1+(n+1)x+nx2≥1+(n+1)x.(1+x)^{n+1} = (1+x)^n (1+x) \ge (1+nx)(1+x) = 1 + (n+1)x + n x^2 \ge 1 + (n+1)x .

最後の不等号は nx2≥0n x^2 \ge 0 からです。

仮定 x≥−1x \ge -1 を落とすとどうなるか。 帰納ステップで 1+x≥01+x \ge 0 を使ったのですから、そこが壊れます。実際 x=−4x = -4, n=3n = 3 とすると、左辺は (1−4)3=−27(1-4)^3 = -27、右辺は 1+3⋅(−4)=−111 + 3 \cdot (-4) = -11 で、−27≥−11-27 \ge -11 は成り立ちません。仮定は飾りではなく、証明のどこかで必ず使われています。

4. ペアノの公理:帰納法は定理か公理か

Section titled “4. ペアノの公理:帰納法は定理か公理か”

定理 3.2 は整列性から証明されました。では整列性はどこから来るのでしょうか。実は整列性も帰納法から証明できます。両者は同値な性質であり、どちらか一方を自然数の性質として認めれば他方が従います。

そうすると「自然数とは何か」という問いに戻らざるをえません。19 世紀末にペアノが与えた答えが次の公理系です。s(n)s(n) は nn の後者(次の数)を表します。

公理 4.1(ペアノの公理)↗

集合 N\mathbb{N}、その元 11、および写像 s:N→Ns : \mathbb{N} \to \mathbb{N} が次を満たすとする。

  1. 1∈N1 \in \mathbb{N}。
  2. 任意の n∈Nn \in \mathbb{N} に対し s(n)∈Ns(n) \in \mathbb{N}。
  3. 任意の n∈Nn \in \mathbb{N} に対し s(n)≠1s(n) \ne 1(11 はどの数の後者でもない)。
  4. 任意の m,n∈Nm, n \in \mathbb{N} に対し、s(m)=s(n)s(m) = s(n) ならば m=nm = n(ss は単射)。
  5. (帰納法の公理)S⊆NS \subseteq \mathbb{N} が「1∈S1 \in S」かつ「n∈Sn \in S ならば s(n)∈Ss(n) \in S」を満たすならば、S=NS = \mathbb{N} である。

このとき (N,1,s)(\mathbb{N}, 1, s) を自然数の体系という。

第 5 公理は 定理 3.2 そのものです。SS として「P(n)P(n) が真であるような nn の集合」を取れば、条件は基底ステップと帰納ステップに、結論は「すべての nn で P(n)P(n)」に翻訳されます。つまりペアノの立場では、帰納法は証明すべき定理ではなく、自然数がどういうものかを定める規定の一部です。

なお、ペアノ自身の 1889 年の原論文では出発点の数は 11 でした。今日の教科書では 00 から始める流儀が多く、どちらでも理論は同じように展開できます。

次の注は、5 つの公理がそれぞれ何のために置かれているかを、「その公理だけを外した例」で確かめるものです。公理 3 の例は 3 個だけの輪、公理 5 の例は、普通の自然数の列とは別に、整数のように両側へ延びる列がもう一本ついたもの、と思って読んでください。

注意 4.2(どの公理が何を担っているか)

公理を一つ落とすと何が壊れるかを見ると、各公理の役割がわかります。

公理 3 を落とす。 N′={1,2,3}\mathbb{N}' = \{1, 2, 3\} とし、s(1)=2s(1) = 2, s(2)=3s(2) = 3, s(3)=1s(3) = 1 と定めます。ss は N′\mathbb{N}' 上の全単射なので公理 4 は成立します。公理 5 も成立します。実際、1∈S1 \in S かつ ss で閉じている SS は 1,2,31, 2, 3 をすべて含むので S=N′S = \mathbb{N}' です。しかし s(3)=1s(3) = 1 なので公理 3 が破れています。つまり公理 3 がないと、有限個しか元をもたない「自然数もどき」が許されてしまいます。帰納法だけでは無限性は出てこないのです。

公理 5 を落とす。 N\mathbb{N} に、整数と同じ形に並んだ元の列 …,a−1,a0,a1,…\ldots, a_{-1}, a_0, a_1, \ldots を付け加えた集合を N∗\mathbb{N}^{*} とし、s(ak)=ak+1s(a_k) = a_{k+1} と定めます。aka_k は 11 でも s(n)s(n)(nn は普通の自然数)でもないので公理 1 から 4 はすべて成立します。ところが S=NS = \mathbb{N} は 11 を含み ss で閉じているのに N∗\mathbb{N}^{*} 全体と一致しません。公理 5 は「11 から ss を繰り返して届く範囲より外に余計な元はない」という要請なのです。

この「余計な元がついた自然数」は非標準モデルと呼ばれ、形式的な体系が意図した対象を一意に定めきれるかという問題につながります。この方向の話題は 数学基礎論への招待 - 不完全性定理、とくに 例 5.4[ゲーデルの不完全性定理] を参照してください。

定理 4.3(完全帰納法)✓

各 n∈Nn \in \mathbb{N} に対して命題 P(n)P(n) が定まっているとする。

  • 任意の n∈Nn \in \mathbb{N} に対して、「nn より小さいすべての k∈Nk \in \mathbb{N} について P(k)P(k) が真」ならば「P(n)P(n) が真」

が成り立つとする。このとき、すべての n∈Nn \in \mathbb{N} に対して P(n)P(n) は真である。

証明(定理 4.3)

Q(n)Q(n) を「nn 以下のすべての k∈Nk \in \mathbb{N} について P(k)P(k) が真である」という命題とし、QQ に 定理 3.2 を適用します。

基底ステップ。 仮定を n=1n = 1 に適用します。11 より小さい自然数は存在しないので、「11 より小さいすべての kk について P(k)P(k) が真」は空虚に真です(すべての kk について言うべきことが何もありません)。よって仮定より P(1)P(1) は真です。11 以下の自然数は 11 だけなので、Q(1)Q(1) が成り立ちます。

帰納ステップ。 Q(n)Q(n) を仮定します。すなわち k≤nk \le n なるすべての kk で P(k)P(k) は真です。自然数について k<n+1k < n+1 と k≤nk \le n は同値ですから、これは「n+1n+1 より小さいすべての kk で P(k)P(k) が真」ということです。そこで仮定を n+1n+1 に適用すると P(n+1)P(n+1) が真になります。あわせて k≤n+1k \le n+1 なるすべての kk で P(k)P(k) が真、すなわち Q(n+1)Q(n+1) が成り立ちます。

定理 3.2 により、すべての nn で Q(n)Q(n) が真です。とくに P(n)P(n) が真です。

証明中の「空虚に真」とは、調べる対象が一つもないので、条件を破る例が出てきようがない、ということです。たとえば「11 より小さいすべての自然数は偶数である」は、11 より小さい自然数がそもそもないので、反例を挙げられず真と扱います。

例 4.4(素因数分解の存在)

22 以上のすべての自然数は、素数の積として表せます(素数 11 個だけの積も認めます)。

P(n)P(n) を「n≥2n \ge 2 ならば nn は素数の積として表せる」とします。n=1n = 1 のときは前提が偽なので P(1)P(1) は真です(§2 の真理値表)。

n≥2n \ge 2 とし、nn より小さいすべての自然数 kk で P(k)P(k) が真だと仮定します。

  • nn が素数のとき。nn 自身が素数 11 個の積なので P(n)P(n) が成り立ちます。
  • nn が素数でないとき。n≥2n \ge 2 で素数でないので、n=abn = ab かつ 1<a<n1 < a < n、1<b<n1 < b < n を満たす自然数 a,ba, b が存在します(これが合成数の定義です)。1<a1 < a と aa が自然数であることから a≥2a \ge 2、同様に b≥2b \ge 2 です。また a<na < n、b<nb < n なので、帰納法の仮定が aa と bb の両方に使えて、aa も bb も素数の積に書けます。それらを並べれば n=abn = ab も素数の積です。

いずれの場合も P(n)P(n) が成り立つので、定理 4.3 よりすべての nn で P(n)P(n) が真です。

ここで通常の帰納法が使えないことに注意してください。nn の分解 n=abn = ab に現れる a,ba, b は n−1n-1 とは限らず、22 から n−1n-1 のどこに現れるか予測できません。「一つ前」ではなく「それより小さいものすべて」を仮定できることが、完全帰納法の値打ちです。

例 5.1(帰納ステップだけが正しい偽の命題)

P(n)P(n) を次の等式とします。

∑k=1nk=n(n+1)2+7.\sum_{k=1}^{n} k = \frac{n(n+1)}{2} + 7 .

帰納ステップを確かめてみます。P(n)P(n) を仮定すると

∑k=1n+1k=(∑k=1nk)+(n+1)=n(n+1)2+7+(n+1)=(n+1)(n+2)2+7\sum_{k=1}^{n+1} k = \left(\sum_{k=1}^{n} k\right) + (n+1) = \frac{n(n+1)}{2} + 7 + (n+1) = \frac{(n+1)(n+2)}{2} + 7

となり、これは P(n+1)P(n+1) そのものです。帰納ステップは完全に正しく、どこにも誤りがありません。

ところが P(1)P(1) は「1=1+71 = 1 + 7」であり偽です。例 3.4 によって正しい和は n(n+1)/2n(n+1)/2 ですから、P(n)P(n) はすべての nn で偽です。

倒れる仕組みだけが整っていて、最初の 1 枚を倒す人がいないドミノ列——それが基底ステップを欠いた帰納法です。注意 3.3 で述べたとおり、帰納ステップは含意しか主張していないので、単独では何も生みません。

例 5.2(すべての馬は同じ色である(誤証明))

P(n)P(n) を「馬の任意の nn 頭の集まりについて、それらはすべて同じ色である」とします。

基底ステップ。 P(1)P(1) は真です。馬 11 頭だけの集まりは、その馬自身と同じ色なのですから。

帰納ステップ(と称するもの)。 P(n)P(n) を仮定し、馬 n+1n+1 頭 h1,h2,…,hn+1h_1, h_2, \ldots, h_{n+1} を取ります。

A={h1,…,hn},B={h2,…,hn+1}A = \{h_1, \ldots, h_n\}, \qquad B = \{h_2, \ldots, h_{n+1}\}

はどちらも nn 頭の集まりなので、帰納法の仮定より AA の中の馬はすべて同色、BB の中の馬もすべて同色です。A∩B={h2,…,hn}A \cap B = \{h_2, \ldots, h_n\} に属する馬を一頭取れば、その色は AA 全体の色でも BB 全体の色でもあるので、AA の色と BB の色は一致します。A∪BA \cup B は n+1n+1 頭全体ですから、P(n+1)P(n+1) が成り立ちます。

穴はどこか。 最後の議論は A∩B≠∅A \cap B \ne \emptyset を前提にしています。A∩B={h2,…,hn}A \cap B = \{h_2, \ldots, h_n\} が空でないのは n≥2n \ge 2 のときだけです。n=1n = 1 のときは A={h1}A = \{h_1\}、B={h2}B = \{h_2\} で共通の馬がおらず、AA の色と BB の色を結びつける根拠がありません。

つまり P(1)⇒P(2)P(1) \Rightarrow P(2) が示せていません。そして P(2)P(2) は偽です(色の違う馬は実在します)。ドミノは 1 枚目と 2 枚目の間で切れており、そこから先は一枚も倒れません。

教訓は、帰納ステップはすべての nn について示さねばならない、ということです。「一般の nn について」と書いた議論が、小さい nn で暗黙の前提を使っていないかを必ず点検してください。とくに「二つの部分集合の共通部分を取る」「n−1n-1 を考える」「二つに分ける」といった操作が出てきたら要注意です。

注意 5.3(有限個の確認では足りない)

「n=1n = 1 から n=5n = 5 まで確かめたので一般に正しい」は証明ではありません。反例が現れるのがずっと先だという例は、いくらでもあります。

  • オイラーが 1772 年ごろに注目した多項式 f(n)=n2+n+41f(n) = n^2 + n + 41 は、n=0,1,…,39n = 0, 1, \ldots, 39 という 4040 個の整数すべてに対して素数の値を取ります。しかし f(40)=1600+40+41=1681=412f(40) = 1600 + 40 + 41 = 1681 = 41^2 は素数ではありません。
  • フェルマー数 Fn=22n+1F_n = 2^{2^n} + 1 は n=0,1,2,3,4n = 0, 1, 2, 3, 4 に対して 3,5,17,257,655373, 5, 17, 257, 65537 となり、すべて素数です。フェルマーはすべての nn で素数になると予想しましたが、1732 年にオイラーが F5=4294967297=641×6700417F_5 = 4294967297 = 641 \times 6700417 と分解して見せました。

次のコードで両方を確かめられます。

def is_prime(m):
if m < 2:
return False
d = 2
while d * d <= m:
if m % d == 0:
return False
d += 1
return True
# n^2 + n + 41 が素数でない最小の n(0 以上)
print([n for n in range(41) if not is_prime(n * n + n + 41)]) # -> [40]
# フェルマー数 F_5 の分解
print(2**32 + 1 == 641 * 6700417) # -> True

数値実験は、何を証明すべきかを見つけるためには有用です。しかしそれ自体は証明ではありません。「nn から n+1n+1 へ渡す論理」を書いてはじめて、無限個の主張が保証されます。

命題 6.1(対偶の同値性)✓

任意の命題 P,QP, Q について、P⇒QP \Rightarrow Q が真であることと、その対偶 ¬Q⇒¬P\lnot Q \Rightarrow \lnot P が真であることは同値である。

証明(命題 6.1)

§2 の真理値表で第 3 列と第 4 列が一致していることからも読み取れますが、意味を追う形でも示しておきます。

(⇒\Rightarrow の向き)P⇒QP \Rightarrow Q が真だとします。¬Q\lnot Q を仮定します。もし PP が真だとすると、P⇒QP \Rightarrow Q より QQ が真になり、仮定 ¬Q\lnot Q と両立しません。よって PP は偽、すなわち ¬P\lnot P が真です。¬Q\lnot Q から ¬P\lnot P が導けたので ¬Q⇒¬P\lnot Q \Rightarrow \lnot P が真です。

(⇐\Leftarrow の向き)¬Q⇒¬P\lnot Q \Rightarrow \lnot P が真だとします。PP を仮定します。もし QQ が偽、つまり ¬Q\lnot Q が真だとすると、仮定より ¬P\lnot P が真になり、PP と両立しません。よって ¬Q\lnot Q は偽、すなわち ¬¬Q\lnot \lnot Q が真です。ここで二重否定除去 ¬¬Q⇒Q\lnot\lnot Q \Rightarrow Q を使うと QQ が真です。PP から QQ が導けたので P⇒QP \Rightarrow Q が真です。

⇐\Leftarrow の向きで二重否定除去を使ったことに注意してください。「対偶を示せばもとの命題が示せる」という、実際に使うほうの向きこそが、古典論理に固有の規則に依存しています。

二重否定除去とは、「QQ でない、ということはない」と分かったら「QQ である」と結論してよい、という規則です。真理値表では QQ は真か偽のどちらかと決めてあるので当たり前に見えますが、証明の中で「何を根拠に使ってよいか」を数えるときには、独立した一つの規則として数えます。この規則を認めない論理の流儀もあり、§6.3 の注で触れます。

命題 6.2(背理法の正当性)✓

命題 PP について、¬P\lnot P を仮定するとある命題 RR に対して RR と ¬R\lnot R の両方が導かれるならば、PP は真である。

証明(命題 6.2)

仮定は ¬P⇒(R∧¬R)\lnot P \Rightarrow (R \wedge \lnot R) が真だということです。R∧¬RR \wedge \lnot R は RR の真偽にかかわらず偽です(RR が真なら ¬R\lnot R が偽、RR が偽なら RR が偽で、いずれにせよ連言は偽)。

いま ¬P\lnot P が真だと仮定すると、真である含意の前件が真なので後件 R∧¬RR \wedge \lnot R も真になります。これは R∧¬RR \wedge \lnot R が偽であることに反します。よって ¬P\lnot P は偽、すなわち ¬¬P\lnot\lnot P が真です。二重否定除去(同じことですが排中律 P∨¬PP \vee \lnot P)により PP が真です。

6.3. 二つはどう違い、どう重なるか

Section titled “6.3. 二つはどう違い、どう重なるか”
直接証明P ならば Q を示す対偶証明P ならば Q を示す背理法P を示すP を仮定する¬Q を仮定する¬P を仮定するQ に到達する¬P に到達する何らかの矛盾に到達する上二つはゴールが決まっている。背理法だけは、どんな矛盾を出してもよい。
三つの証明法の出発点と到達点

表にまとめます。

直接証明対偶証明背理法
示したい形P⇒QP \Rightarrow QP⇒QP \Rightarrow QPP(含意でなくてよい)
仮定として置くものPP¬Q\lnot Q¬P\lnot P
目指すゴールQQ¬P\lnot P任意の矛盾
ゴールは決まっているか決まっている決まっている決まっていない
依存する論理規則なし二重否定除去排中律(二重否定除去)

二つは無関係ではありません。P⇒QP \Rightarrow Q を背理法で示すとは、PP かつ ¬Q\lnot Q を仮定して矛盾を導くことです。その矛盾として特に「¬P\lnot P と PP」を選べば、それは ¬Q\lnot Q から ¬P\lnot P を導いたということ、つまり対偶証明にほかなりません。対偶証明は背理法の特殊な場合です。

逆に、背理法で書かれた証明の多くは対偶証明に書き直せます。書き直せるなら、そうしたほうが読みやすくなります。「矛盾が出ました」で終わる証明は、どの仮定がどこで効いたのかを読者が追いにくいからです。ゴールが最初から ¬P\lnot P と決まっている対偶証明のほうが、議論の行き先がはっきりします。

注意 6.3(どこまでが古典論理に固有か)

「PP を仮定して矛盾を導き、¬P\lnot P を結論する」のは、否定という記号の意味そのものであり、直観主義論理でも認められます。古典論理に固有なのは、その裏返し、つまり「¬P\lnot P を仮定して矛盾を導き、PP を結論する」ほうです。ここで使う ¬¬P⇒P\lnot\lnot P \Rightarrow P は、直観主義論理では証明できません。

この違いは「存在する」を主張するときに表面化します。「xx が存在しないと矛盾する」から「xx が存在する」を導く証明は、その xx を一つも作ってくれません。具体的な作り方まで与える証明を構成的証明と呼び、区別します。無限集合の大小を比べるカントールの対角線論法も、形の上では背理法ですが、実際には「与えられた列に入らない元を作る手続き」を与えている点で構成的です。詳しくは 濃度と無限 - 無限にも大小がある、とくに 定理 6.3[濃度と無限] を参照してください。

注意 6.4(背理法で書かなくてよいものを背理法で書かない)

「素数は無限に存在する」は背理法の例として紹介されることが多い命題です。背理法版はこうなります。素数が有限個 p1,…,prp_1, \ldots, p_r しかないと仮定し、N=p1p2⋯pr+1N = p_1 p_2 \cdots p_r + 1 を考えます。N≥2N \ge 2 なので 例 4.4 より NN は素因数 qq をもちます。仮定よりこの qq はどれかの pip_i に等しいはずです。しかし pip_i は積 p1⋯prp_1 \cdots p_r を割り切るので、NN を pip_i で割った余りは 11 であり、pip_i は NN を割りません。矛盾です。

ところが、この議論は背理法を使わずにそのまま書けます。任意に有限個の素数 p1,…,prp_1, \ldots, p_r を取ったとき、N=p1⋯pr+1N = p_1 \cdots p_r + 1 の素因数 qq はどの pip_i とも異なります(同じ理由で pip_i は NN を割らないからです)。つまり、どんな有限リストに対しても、そこに載っていない素数を実際に一つ作ることができます。ゆえに素数は無限個です。

こちらの書き方は、rr 個の素数から r+1r+1 個目を作る手続きを与えており、内容が多い分だけ有用です。ユークリッド『原論』第 IX 巻命題 20 の議論も、この直接的な形に近いものです。仮定を置いて矛盾を出すのは強力ですが、必要のないところで使うと情報を捨てることになります。

定義 7.1(有理数と無理数)↗

実数 xx が有理数であるとは、整数 pp と 00 でない整数 qq を用いて x=p/qx = p/q と書けることをいう。有理数全体を Q\mathbb{Q} と書く。実数であって有理数でないものを無理数という。

定義 7.2(偶数と奇数)↗

整数 nn が偶数であるとは、ある整数 mm を用いて n=2mn = 2m と書けることをいう。nn が奇数であるとは、ある整数 mm を用いて n=2m+1n = 2m+1 と書けることをいう。

任意の整数は偶数か奇数のいずれか一方であり、両方であることはありません。前半は 22 による除法の定理(余りが 00 か 11)から、後半は 2m=2m′+12m = 2m'+1 から 2(m−m′)=12(m-m') = 1 となり、左辺が偶数で右辺が 22 で割り切れないことから従います。

補題 7.3(既約分数表示の存在)✓

任意の有理数 xx に対し、整数 pp と自然数 qq で、x=p/qx = p/q かつ gcd⁡(p,q)=1\gcd(p, q) = 1 を満たすものが存在する。

証明(補題 7.3)

定義 7.1 より x=a/bx = a/b(aa は整数、bb は 00 でない整数)と書けます。b<0b < 0 ならば分子分母の符号を同時に変えて x=(−a)/(−b)x = (-a)/(-b) とすればよいので、はじめから b≥1b \ge 1、すなわち b∈Nb \in \mathbb{N} としてよいとします。

集合

T={ b′∈N:ある整数 a′ が存在して x=a′/b′ }T = \{\, b' \in \mathbb{N} : \text{ある整数 } a' \text{ が存在して } x = a'/b' \,\}

を考えます。b∈Tb \in T なので T≠∅T \ne \emptyset です。整列性(公理 3.1) により TT は最小元 qq をもちます。q∈Tq \in T なので、ある整数 pp で x=p/qx = p/q と書けます。

この p,qp, q が gcd⁡(p,q)=1\gcd(p,q) = 1 を満たすことを示します。d=gcd⁡(p,q)d = \gcd(p, q) とおき、d>1d > 1 と仮定します。p=dp′p = d p', q=dq′q = d q' を満たす整数 p′,q′p', q' が取れて、q′=q/dq' = q/d は自然数であり 1≤q′<q1 \le q' < q です(d>1d > 1 かつ q≥1q \ge 1 より)。また

p′q′=dp′dq′=pq=x\frac{p'}{q'} = \frac{dp'}{dq'} = \frac{p}{q} = x

なので q′∈Tq' \in T です。これは qq が TT の最小元であることに反します。よって d=1d = 1 です。

なお、p/qp/q という表示は一意ではありません(1/2=2/4=3/6=⋯1/2 = 2/4 = 3/6 = \cdots)。有理数を「整数の組を適切な同値関係で割ったもの」として定義する立場については 関係と同値関係 - 「同じ」とは何か、とくに 命題 6.1[関係と同値関係] を参照してください。上の補題は、その同値類の中に「分母が最小の代表元」が必ずあると言っています。

補題 7.4(平方が偶数なら元も偶数)✓

整数 nn について、n2n^2 が偶数ならば nn は偶数である。

証明(補題 7.4)

対偶「nn が奇数ならば n2n^2 は奇数である」を示します。命題 6.1 により、これでもとの主張が従います。

nn を奇数とすると、定義 7.2 よりある整数 mm で n=2m+1n = 2m+1 と書けます。このとき

n2=(2m+1)2=4m2+4m+1=2(2m2+2m)+1.n^2 = (2m+1)^2 = 4m^2 + 4m + 1 = 2(2m^2 + 2m) + 1 .

2m2+2m2m^2 + 2m は整数なので、n2n^2 は 定義 7.2 の意味で奇数です。

この補題を直接示そうとすると難儀します。「n2=2kn^2 = 2k」という等式から nn の形を取り出すには、素因数分解のような重い道具が要るからです。対偶を取ると、仮定される側が「n=2m+1n = 2m+1」という形の情報に変わり、あとは展開するだけで済みます。仮定と結論のうち、形の情報を持っているのがどちらかを見て、それを仮定側に回す——これが対偶証明を使う判断基準です。

定理 7.5(平方根 2 の無理性)✓

x2=2x^2 = 2 を満たす有理数 xx は存在しない。したがって、実数として 2\sqrt2(2>0\sqrt2 > 0 かつ (2)2=2(\sqrt2)^2 = 2 を満たす実数)が存在するならば、それは無理数である。

証明(定理 7.5)

x2=2x^2 = 2 を満たす有理数 xx が存在すると仮定します(背理法)。

補題 7.3 により、整数 pp と自然数 qq で

x=pq,gcd⁡(p,q)=1x = \frac{p}{q}, \qquad \gcd(p, q) = 1

を満たすものが取れます。両辺を 22 乗すると p2/q2=2p^2/q^2 = 2 であり、q2≠0q^2 \ne 0 なので両辺に q2q^2 を掛けて

p2=2q2.p^2 = 2 q^2 .

この式を式 (A) と呼ぶことにします。(A) の右辺は 2×(整数)2 \times (\text{整数}) の形なので、定義 7.2 より p2p^2 は偶数です。補題 7.4 により pp は偶数であり、ある整数 rr で p=2rp = 2r と書けます。

これを (A) に代入すると 4r2=2q24r^2 = 2q^2、両辺を 22 で割って

q2=2r2q^2 = 2 r^2

を得ます。右辺はやはり 2×(整数)2 \times (\text{整数}) の形なので q2q^2 は偶数です。ふたたび 補題 7.4 により qq も偶数です。

こうして pp と qq はともに 22 で割り切れることになり、gcd⁡(p,q)≥2\gcd(p, q) \ge 2 です。これは gcd⁡(p,q)=1\gcd(p,q) = 1 に矛盾します。

したがって x2=2x^2 = 2 を満たす有理数は存在しません。

どこで何を使ったかを整理しておきます。

  • 「既約分数に取れる」ことは 補題 7.3、その根拠は 整列性(公理 3.1) です。
  • 「p2p^2 が偶数なら pp が偶数」は 補題 7.4、これは対偶証明でした。
  • 最後の一撃、既約性との衝突が背理法の部分です。

定理の主張を「2\sqrt2 は無理数である」ではなく「x2=2x^2 = 2 なる有理数は存在しない」の形で述べたのには理由があります。前者を主張するには、まず 2\sqrt2 という実数の存在(定理 5.6[数とは何か])を知っていなければなりません。その存在は実数の連続性(完備性、上限性質(公理 5.1)[数とは何か])に依存する、有理数だけの世界では言えない事実です。ここで証明したのは有理数の世界の中で完結する主張であり、実数の性質を一切使っていません。

例 7.6(既約性を使わない証明)

p2=2q2p^2 = 2q^2 を満たす自然数の組 (p,q)(p, q) が存在すると仮定します。そこで

U={ p∈N:ある q∈N が存在して p2=2q2 }U = \{\, p \in \mathbb{N} : \text{ある } q \in \mathbb{N} \text{ が存在して } p^2 = 2q^2 \,\}

とおくと U≠∅U \ne \emptyset です。整列性(公理 3.1) により UU は最小元 p0p_0 をもちます。p0p_0 に対応する q0∈Nq_0 \in \mathbb{N} を一つ取ると p02=2q02p_0^2 = 2q_0^2 です。

定理 7.5 の証明と同じ計算で、p0p_0 は偶数なので p0=2rp_0 = 2r(rr は整数)と書け、代入して q02=2r2q_0^2 = 2r^2 を得ます。p0≥1p_0 \ge 1 と p0=2rp_0 = 2r から r≥1r \ge 1、すなわち r∈Nr \in \mathbb{N} です。したがって q0∈Uq_0 \in U です。

一方、q0≥1q_0 \ge 1 より p02=2q02>q02p_0^2 = 2q_0^2 > q_0^2 であり、p0,q0p_0, q_0 はともに正なので p0>q0p_0 > q_0 です。q0∈Uq_0 \in U かつ q0<p0q_0 < p_0 は、p0p_0 が UU の最小元であることに反します。

よって p2=2q2p^2 = 2q^2 を満たす自然数の組は存在せず、とくに x2=2x^2 = 2 なる有理数もありません(x=p/qx = p/q とすれば p,qp, q の符号を調整して自然数の組が作れるからです)。

この形の議論を無限降下法といいます。「解があるとすれば、そこからより小さい解が作れる。しかし正の整数は無限に小さくなり続けられない」という論法で、フェルマーが好んで用いました。

注目してほしいのは、ここで使った道具が 整列性(公理 3.1) だけだという点です。整列性は 定理 3.2 の証明でも使われました。**数学的帰納法と無限降下法は、同じ「自然数は下に無限に続かない」という性質の表と裏です。**帰納法は下から積み上げ、降下法は上から降りてきて底がないことに矛盾する——向きが違うだけで、根は一つです。

系 7.7(平方数でない自然数の平方根)✓

自然数 nn が平方数でない(すなわち n=m2n = m^2 を満たす自然数 mm が存在しない)ならば、x2=nx^2 = n を満たす有理数 xx は存在しない。

次の証明の方針は、各素数 ℓ\ell が nn に何回含まれるかを数え、nn が x2=nx^2 = n の形のときはどの素数についてもその回数が偶数になることを見る、というものです。そのため、素数 ℓ\ell で何回割り切れるかを表す記号 vℓv_\ell を導入します。

証明(系 7.7)

素因数分解の存在と一意性(算術の基本定理、定理 5.2[整除と素因数分解])を使います。

素数 ℓ\ell と 00 でない整数 aa に対し、ℓe\ell^{e} が aa を割り切るような最大の e≥0e \ge 0 を vℓ(a)v_\ell(a) と書きます。素因数分解の一意性から(命題 5.3[整除と素因数分解] の 1 を ∣a∣,∣b∣|a|, |b| に適用)、00 でない整数 a,ba, b に対して

vℓ(ab)=vℓ(a)+vℓ(b)v_\ell(ab) = v_\ell(a) + v_\ell(b)

が成り立ちます。とくに vℓ(a2)=2vℓ(a)v_\ell(a^2) = 2 v_\ell(a) は偶数です。

さて、x2=nx^2 = n を満たす有理数 xx が存在したとします。x=p/qx = p/q(pp は整数、qq は 00 でない整数)と書くと p2=nq2p^2 = n q^2 です。n≥1n \ge 1 かつ q≠0q \ne 0 なので p≠0p \ne 0 です。任意の素数 ℓ\ell について両辺の vℓv_\ell を取ると

2vℓ(p)=vℓ(n)+2vℓ(q),すなわちvℓ(n)=2(vℓ(p)−vℓ(q)).2 v_\ell(p) = v_\ell(n) + 2 v_\ell(q), \qquad \text{すなわち} \qquad v_\ell(n) = 2\bigl(v_\ell(p) - v_\ell(q)\bigr) .

したがって vℓ(n)v_\ell(n) はすべての素数 ℓ\ell について偶数です。そこで m=∏ℓℓ vℓ(n)/2m = \prod_{\ell} \ell^{\,v_\ell(n)/2}(積は vℓ(n)>0v_\ell(n) > 0 なる有限個の素数にわたる)とおくと、指数がすべて整数なので mm は自然数であり、

m2=∏ℓℓ vℓ(n)=nm^2 = \prod_{\ell} \ell^{\,v_\ell(n)} = n

となって nn は平方数です。対偶を取れば主張を得ます。

n=2,3,5,6,7,8,10,…n = 2, 3, 5, 6, 7, 8, 10, \ldots はいずれも平方数ではないので、これらの平方根はすべて無理数です。逆に n=4n = 4 では x=2x = 2 という有理数の解があります。§7.2 の証明を n=4n = 4 に対してまねしようとすると、補題 7.4 にあたる主張が偽になって議論が止まります(演習 9.4 の (3) を参照してください)。

帰納法・背理法に並ぶもう一つの基本的な証明の型が、「操作をくり返しても変わらない量(不変量)」と「操作のたびに必ず減る量(単調量)」を見つけることです。前者は「そこには到達できない」ことを、後者は「必ず止まる」ことを示します。

たとえば盤面にドミノを置いていく、黒板の数を書き換えていく、といった「一歩ずつ状態が変わっていく状況」を、「状態」と「操作」という言葉で一般的に書いたものが次の定義です。状態の間の「1 回の操作で移れる」という関係は、二項関係の一つです。まず具体例を先に見たい場合は、定義を飛ばして例(盤面の敷き詰め)から読んでも構いません。

定義 8.1(状態遷移・不変量・単調量)↗

集合 XX(状態の全体)と、XX 上の二項関係 x→x′x\to x'(1 回の操作で xx から x′x' に移れる)を考える。有限回の操作で xx から x′x' に移れること(n≥0n\ge0 回の連鎖 x=x0→x1→⋯→xn=x′x=x_0\to x_1\to\cdots\to x_n=x' があること)を x→∗x′x\to^*x' と書き、x′x' は xx から到達可能という。関数 I:X→YI:X\to Y が不変量であるとは、x→x′x\to x' ならば I(x)=I(x′)I(x)=I(x') であることをいう。関数 V:X→N0V:X\to\mathbb{N}_0 が単調量であるとは、x→x′x\to x' ならば V(x′)<V(x)V(x')<V(x) であることをいう。

定理 8.2(不変量の原理)✓

  1. II が不変量で x→∗x′x\to^*x' ならば I(x)=I(x′)I(x)=I(x') である。したがって I(a)≠I(b)I(a)\ne I(b) なら、bb は aa から到達できない。
  2. VV が単調量ならば、操作を無限にくり返せる状態列 x0→x1→x2→⋯x_0\to x_1\to x_2\to\cdots は存在しない。とくに、x0x_0 から始めて操作を続けると、必ず V(x0)V(x_0) 回以内に、これ以上操作できない状態に行き着く。
証明(定理 8.2)

1: 連鎖の長さ nn についての帰納法です。n=0n=0 は自明で、n≥1n\ge1 では I(x0)=I(xn−1)I(x_0)=I(x_{n-1})(帰納法の仮定)と I(xn−1)=I(xn)I(x_{n-1})=I(x_n)(不変量の定義)をつなぎます。

2: 無限の列があるとすると、S={V(xn):n≥0}⊆N0S=\{V(x_n):n\ge0\}\subseteq\mathbb{N}_0 は空でなく、整列性(公理 3.1、N0\mathbb{N}_0 でも同じ)により最小元 V(xm)V(x_m) をもちます。しかし V(xm+1)<V(xm)V(x_{m+1})<V(x_m) で V(xm+1)∈SV(x_{m+1})\in S となり、最小性に反します。後半:VV は 1 回の操作ごとに少なくとも 1 減るので、V(x0)V(x_0) 回を超えて操作を続けると V<0V<0 となってしまい、それ以前に操作できなくなります。

不変量が示せるのは「到達できない」ことだけで、I(a)=I(b)I(a)=I(b) だからといって bb に到達できるとは限りません。「到達できる」ことの証明には、実際に操作の列を構成する必要があります。

例 8.3(対角の 2 隅を除いた盤面のドミノ敷き詰め)

8×88\times8 の盤面を市松模様に白黒に塗り、対角の 2 隅(同じ色、たとえば白)を除いた 62 マスを、1×21\times2 のドミノ 31 枚で隙間も重なりもなく敷き詰められるか。答えは「できない」です。状態を「すでにドミノで覆ったマスの集合」、操作を「ドミノを 1 枚置く」とし、I=(覆った黒マス数)−(覆った白マス数)I=(\text{覆った黒マス数})-(\text{覆った白マス数}) とします。ドミノは隣り合う 2 マスを覆うので黒 1・白 1 を覆い、II は不変量で、空の盤面で 00 です。ところが目標の状態では黒 3232、白 3030 で I=2≠0I=2\ne0 です。定理 8.2 の 1 により到達できません。

対角の 2 隅(点線の×)を除いた盤面。白マスは 30、黒マス(塗りつぶし)は 32 で、ドミノは白 1・黒 1 を覆うので、全部は覆えない

例 8.4(黒板の数の操作と偶奇)

黒板に 1,2,…,101,2,\dots,10 が書かれていて、操作は「2 つの数 a,ba,b を消して ∣a−b∣|a-b| を書く」です。9 回の操作の後に残る 1 つの数は奇数です。実際、書かれた数の総和の偶奇 II は不変量です。a+ba+b が ∣a−b∣|a-b| に変わると、総和の変化は (a+b)−∣a−b∣=2min⁡(a,b)(a+b)-|a-b|=2\min(a,b) で偶数だからです。最初の総和は 5555(奇数)なので、最後の数は奇数で、とくに 00 にはなりません。

例 8.5(隣り合う逆順の交換は必ず止まる)

実数の列 a1,…,ana_1,\dots,a_n に、「ai>ai+1a_i>a_{i+1} となる隣り合う 2 項を入れ替える」という操作をくり返します。逆順対(i<ji<j かつ ai>aja_i>a_j となる添字の組)の個数を VV とします。隣り合う項を入れ替えると、その 2 項の間の逆順対が 1 個解消され、他の対の大小関係は変わらないので VV はちょうど 1 減ります。したがって 定理 8.2 の 2 により、操作は有限回で止まり、止まった列は、どの隣り合う項も ai≤ai+1a_i\le a_{i+1}、つまり昇順です。ここから、バブルソートの操作回数が n(n−1)/2n(n-1)/2 以下であることも分かります。

例 8.6(ユークリッドの互除法)

状態を整数の組 (a,b)(a,b)(a≥b≥0a\ge b\ge0、a>0a>0)、操作を b>0b>0 のときの (a,b)→(b,r)(a,b)\to(b,r)(a=qb+ra=qb+r、0≤r<b0\le r<b)とします(b=0b=0 の状態からは操作できません)。aa と bb の公約数は bb と r=a−qbr=a-qb の公約数と一致するので、gcd⁡\gcd は不変量です。b→r<bb\to r<b なので、2 番目の成分 V(a,b)=bV(a,b)=b は単調量で、定理 8.2 により有限回で (g,0)(g,0) に行き着き、g=gcd⁡(g,0)g=\gcd(g,0) が最初の gcd⁡(a,b)\gcd(a,b) に等しい、というのが互除法の正しさの証明のすべてです。

演習 9.1標準

黒板に 1,2,…,101,2,\dots,10 が書かれていて、操作は「2 つの数 a,ba,b を消して a+b+aba+b+ab を書く」です。最後に残る数は、操作の順序によらずに決まることを示し、その値を求めよ。

解答

a+b+ab+1=(a+1)(b+1)a+b+ab+1=(a+1)(b+1) なので、黒板の数 xix_i について I=∏i(xi+1)I=\prod_i(x_i+1) は不変量です。最初は I=2⋅3⋯11=11!I=2\cdot3\cdots11=11! です。最後の 1 つの数 xx では x+1=11!x+1=11!、したがって x=11!−1=39916799x=11!-1=39916799 で、操作の順序によりません。

演習 9.2易

a,ba, b を実数とする。a+b≥2a + b \ge 2 ならば、a≥1a \ge 1 または b≥1b \ge 1 であることを示せ。

解答

対偶を示します。「a≥1a \ge 1 または b≥1b \ge 1」の否定は、ド・モルガンの法則(補題 4.3)[数学の国語] により「a<1a < 1 かつ b<1b < 1」です。したがって示すべき対偶は

「a<1a < 1 かつ b<1b < 1 ならば a+b<2a + b < 2」

です。a<1a < 1 の両辺に bb を足して a+b<1+ba + b < 1 + b、また b<1b < 1 の両辺に 11 を足して 1+b<21 + b < 2 です。不等号の推移律より a+b<2a + b < 2 が従います。

命題 6.1 により、もとの主張が成り立ちます。

この問題を直接証明しようとすると、「a+b≥2a + b \ge 2」から aa と bb のどちらが 11 以上かを選ばねばならず、場合分けが必要になります。否定を取ると結論の「または」が仮定の「かつ」に変わり、aa と bb の両方の情報を同時に使えるようになります。結論が「または」の形をしているときは対偶を疑ってください。

演習 9.3標準

すべての n∈Nn \in \mathbb{N} に対して

∑k=1n1k2≤2−1n\sum_{k=1}^{n} \frac{1}{k^2} \le 2 - \frac{1}{n}

が成り立つことを数学的帰納法で示せ。また、同じ方法で ∑k=1n1/k2≤2\sum_{k=1}^{n} 1/k^2 \le 2 を直接示そうとするとうまくいかない理由を説明せよ。

解答

基底ステップ。 n=1n = 1 のとき、左辺は 11、右辺は 2−1=12 - 1 = 1 です。等号が成り立つので主張は真です。

帰納ステップ。 ∑k=1n1/k2≤2−1/n\sum_{k=1}^{n} 1/k^2 \le 2 - 1/n を仮定します。両辺に 1/(n+1)21/(n+1)^2 を加えて

∑k=1n+11k2≤2−1n+1(n+1)2\sum_{k=1}^{n+1} \frac{1}{k^2} \le 2 - \frac{1}{n} + \frac{1}{(n+1)^2}

を得ます。ここで (n+1)2=(n+1)(n+1)≥(n+1)n(n+1)^2 = (n+1)(n+1) \ge (n+1) n(n+1≥nn + 1 \ge n かつ n+1>0n+1 > 0 より)なので

1(n+1)2≤1n(n+1)=1n−1n+1\frac{1}{(n+1)^2} \le \frac{1}{n(n+1)} = \frac{1}{n} - \frac{1}{n+1}

です(最後の等号は通分すれば (n+1)−nn(n+1)=1n(n+1)\frac{(n+1) - n}{n(n+1)} = \frac{1}{n(n+1)} で確かめられます)。これを代入して

∑k=1n+11k2≤2−1n+1n−1n+1=2−1n+1\sum_{k=1}^{n+1} \frac{1}{k^2} \le 2 - \frac{1}{n} + \frac{1}{n} - \frac{1}{n+1} = 2 - \frac{1}{n+1}

となり、n+1n+1 の場合の主張が得られました。定理 3.2 より、すべての nn で成立します。

なぜ ≤2\le 2 では回らないか。 P′(n)P'(n) を「∑k=1n1/k2≤2\sum_{k=1}^n 1/k^2 \le 2」とすると、P′(n)P'(n) を仮定して得られるのは

∑k=1n+11k2≤2+1(n+1)2\sum_{k=1}^{n+1} \frac{1}{k^2} \le 2 + \frac{1}{(n+1)^2}

だけで、右辺は 22 を超えています。P′(n+1)P'(n+1) は結論できません。仮定が弱すぎて、加えた分を吸収する余裕がないのです。

2−1/n2 - 1/n という形は 22 より強い主張ですが、そのぶん帰納法の仮定も強くなり、1/(n+1)21/(n+1)^2 を吸収する「のりしろ」1/n−1/(n+1)1/n - 1/(n+1) を持っています。より強い主張のほうが帰納法では証明しやすいことがある——これを帰納法の仮定を強めるといい、帰納法を使う際の基本的な技術です。

演習 9.4標準

(1) 整数 nn について、「n2n^2 が 33 の倍数ならば nn は 33 の倍数」を対偶を用いて示せ。 (2) (1) を使って、x2=3x^2 = 3 を満たす有理数 xx が存在しないことを示せ。 (3) 同じ論法を x2=4x^2 = 4 に適用しようとすると、どこで破れるかを述べよ。

解答

(1) 対偶「nn が 33 の倍数でないならば n2n^2 も 33 の倍数でない」を示します。33 による除法の定理より、整数 nn はある整数 mm を用いて n=3mn = 3m, n=3m+1n = 3m+1, n=3m+2n = 3m+2 のいずれか一つの形に書けます。33 の倍数でないのは後の 2 つの場合です。

n=3m+1n = 3m+1 のとき

n2=9m2+6m+1=3(3m2+2m)+1n^2 = 9m^2 + 6m + 1 = 3(3m^2 + 2m) + 1

となり、33 で割った余りは 11 です。

n=3m+2n = 3m+2 のとき

n2=9m2+12m+4=3(3m2+4m+1)+1n^2 = 9m^2 + 12m + 4 = 3(3m^2 + 4m + 1) + 1

となり、やはり余りは 11 です。

いずれの場合も n2n^2 は 33 の倍数ではありません。命題 6.1 よりもとの主張が従います。

(2) x2=3x^2 = 3 なる有理数 xx が存在すると仮定します。補題 7.3 により、整数 pp と自然数 qq で x=p/qx = p/q かつ gcd⁡(p,q)=1\gcd(p,q) = 1 なるものが取れます。両辺を 22 乗して q2q^2 を掛けると p2=3q2p^2 = 3q^2 です。

右辺は 33 の倍数なので p2p^2 は 33 の倍数、(1) より pp は 33 の倍数で、p=3rp = 3r(rr は整数)と書けます。代入して 9r2=3q29r^2 = 3q^2、両辺を 33 で割って q2=3r2q^2 = 3r^2 を得ます。右辺は 33 の倍数なので q2q^2 も 33 の倍数、再び (1) より qq も 33 の倍数です。

すると gcd⁡(p,q)≥3\gcd(p,q) \ge 3 となり、gcd⁡(p,q)=1\gcd(p,q) = 1 に矛盾します。よってそのような有理数は存在しません。

(3) (1) にあたる主張は「n2n^2 が 44 の倍数ならば nn は 44 の倍数」ですが、これは偽です。n=2n = 2 が反例で、n2=4n^2 = 4 は 44 の倍数ですが n=2n = 2 は 44 の倍数ではありません。したがって p2=4q2p^2 = 4q^2 から「pp は 44 の倍数」を導く段階で議論が止まります。

止まって当然です。x=2x = 2 は x2=4x^2 = 4 を満たす有理数なので、示そうとしている結論自体が偽だからです。系 7.7 の言葉でいえば、4=224 = 2^2 は平方数だということです。証明が通らないときは、まず結論が本当に正しいかを疑ってください。

演習 9.5難

log⁡23\log_2 3 が無理数であることを示せ。ここで log⁡23\log_2 3 は 2x=32^x = 3 を満たす実数 xx である。

解答

x=log⁡23x = \log_2 3 とおきます。20=1<32^0 = 1 < 3 であり t↦2tt \mapsto 2^t は狭義単調増加なので x>0x > 0 です。

xx が有理数だと仮定します(背理法)。x>0x > 0 なので、定義 7.1 の表示で分子分母の符号をそろえれば、自然数 p,qp, q を用いて x=p/qx = p/q と書けます。すると 2p/q=32^{p/q} = 3 であり、両辺を qq 乗して

2p=3q2^p = 3^q

を得ます。

左辺について。p≥1p \ge 1 なので 2p=2⋅2p−12^p = 2 \cdot 2^{p-1} であり、2p−12^{p-1} は整数ですから 2p2^p は偶数です。

右辺について。3q3^q が奇数であることを qq に関する帰納法で示します。q=1q = 1 のとき 31=3=2⋅1+13^1 = 3 = 2\cdot 1 + 1 は奇数です。3q3^q が奇数、つまり 3q=2m+13^q = 2m+1(mm は整数)と仮定すると

3q+1=3(2m+1)=6m+3=2(3m+1)+13^{q+1} = 3(2m+1) = 6m + 3 = 2(3m+1) + 1

となり奇数です。定理 3.2 よりすべての q∈Nq \in \mathbb{N} で 3q3^q は奇数です。

こうして同じ整数 2p=3q2^p = 3^q が偶数かつ奇数になりますが、§7.1 で見たとおりそのような整数は存在しません。矛盾です。

したがって log⁡23\log_2 3 は無理数です。

この証明は素因数分解の一意性を使っていない点が特徴です。2p=3q2^p = 3^q の両辺を偶奇だけで区別できたので、それ以上の道具が要りませんでした。使う道具は少ないほどよく、どこまで軽い道具で足りるかを見積もるのも証明の技術のうちです。

  • 松坂和夫『集合・位相入門』岩波書店、1968 — 自然数の構成、ペアノの公理、数学的帰納法の扱い。
  • 高木貞治『初等整数論講義 第 2 版』共立出版、1971 — 第 1 章(整数の除法、素数、素因数分解の一意性)。
  • G. ポリア『いかにして問題をとくか』柿内賢信訳、丸善、1954 — 「帰納と数学的帰納法」の項。帰納法を使う前の「推測の作り方」について。
  • G. H. Hardy and E. M. Wright, An Introduction to the Theory of Numbers, Oxford University Press — Chapter IV「Irrational Numbers」。平方根の無理性の各種証明。
  • ユークリッド『ユークリッド原論』中村幸四郎・寺阪英孝・伊東俊太郎・池田美恵 訳・解説、共立出版 — 第 IX 巻 命題 20(素数が無限に存在すること)。
  • 前原昭二『数学基礎論入門』朝倉書店、1977 — 古典論理と直観主義論理の違い、二重否定除去と排中律の位置づけ。

このテーマの 100 本ノック(50 問)

執筆: Claude Code(Sonnet 5.5)・監査 5 回(Claude Code)・最終 2026-10-12

この記事の誤りを報告する ・運営: 夢現技研合同会社 ・料金 ・利用条件 ・特定商取引法に基づく表記

© 2026 夢現技研合同会社 ・コード例は MIT ライセンスです。