前回の続きである.
前回は何だかんだで対角線論法の説明だけで終わってしまったから,ここからが本題になる.
例の「対角線論法撲滅委員会」は,前回紹介した対角線論法を大胆にも「欠陥のある論法」だと批判する.
その理由は,「同じ論法を使えば,『正の偶数の全体に番号が付けられない』ことが証明されてしまう」というものだ!(注1)
もちろん,そんなことがあるはずがない.例えば,
1番目 2
2番目 4
3番目 6
4番目 8
5番目 10
・
・
・
のように小さい順で並べていけば,どんな正の偶数にも番号が付けられる.
それなのに「番号が付けられない」なんておかしな結論を導いてしまうのだから,その証明法はどこかに欠陥があるのだ,というわけである.
それでは早速,どうやってそんな頓珍漢なことが証明されるのか見ていこう.
まず,前回と同じように,すべての偶数に番号が付けられて,それが全て列挙されたとしよう.
1番目 2
2番目 4
3番目 6
4番目 8
5番目 10
・
・
・
もちろん,上に書いたのはあくまで「数え方の一例」である.これから使う論法は,どんな「数え方のルール」に対しても適用できるものであり,またそうでないと意味がない.
ここで対角線論法をうまいこと使うために,ちょっと工夫が必要だ.
まず,これらの偶数を全部2進法表記に直す.つまり,
2 ⇒ 10
4 ⇒ 100
6 ⇒ 110
8 ⇒ 1000
10 ⇒ 1010
・
・
・
とする.そしてここからがちょっとややこしいのだが,この2進法表記を左右反転させて,頭のゼロの後に小数点を打って小数をつくる.
一個ずついこう.まず左右反転させると,
2 ⇒ 10 ⇒ 01
4 ⇒ 100 ⇒ 001
6 ⇒ 110 ⇒ 011
8 ⇒ 1000 ⇒ 0001
10 ⇒ 1010 ⇒ 0101
・
・
・
(どうもスペースがうまく入らなくて,見づらいかもしれないがお許し願いたい)
これらは元々偶数だったから,こうすると先頭の数字は必ずゼロになることに注意しよう.
次に,こいつらの先頭のゼロの次に小数点を入れ,無限小数にする(後ろにずっと0を続ければ,形式上は無限小数).
2 ⇒ 10 ⇒ 01 ⇒ 0.10000…
4 ⇒ 100 ⇒ 001 ⇒ 0.01000…
6 ⇒ 110 ⇒ 011 ⇒ 0.11000…
8 ⇒ 1000 ⇒ 0001 ⇒ 0.00100…
10 ⇒ 1010 ⇒ 0101 ⇒ 0.10100…
・
・
・
こうして無限小数に「変換」された偶数たち(注2)を,再び並べてみよう.そして前回の議論と同じように,「対角線」の数字に注目する.
1番目 0.10000…
2番目 0.[0]1000…
3番目 0.1[1]000…
4番目 0.00[1]00…
5番目 0.101[0]0…
・
・
・
ただし今回は,1行目は無視して2行2列目から始める(注3).こうして[]で囲んだ部分を抜き出して小数を作ると,
0.0110…
となる.さらにこの小数点以下の桁で,
0⇒1
1⇒0
のように0と1を逆転させれば,
0.1001…
という小数のできあがりである.これは明らかに1番目の0.1000…とは違うし,二番目以降はどれもどこかの桁が異なるように作ってあるから,リストの中には存在しない小数だ.
しかも先頭の数字が0だから,先ほどの「変換」と逆の過程をたどれば必ず何かしらの偶数に対応しているはずである.
こうして,「全ての正の偶数」を列挙したリストを作ったはずが,そこからリスト外の偶数を作り出すことができてしまった.
よって,全ての正の偶数を番号付けすることは原理的に不可能である.証明終了.
……そんなバカな! しかし,これも確かに歴とした対角線論法のように見える.
ということはやはり,対角線論法という論法そのものに何かしらの穴があったのだろうか?
僕もかなり悩んだ.僕は数学の専門家ではないから,僕の出した結論がどれほど信用の足るものか,またそれを導く論理がどれほど妥当かは怪しいと思う.
しかし,それでもあえて僕の答えを言うと「NO」,すなわち「やはり対角線論法そのものに穴はなく,穴があるのは上で示した使い方である」だ.
僕が思うに,これは以前僕が『「0.999…=1」論 ~実数とは何か~』で書いた,「『9が無限に続く数』なんて存在しない」ということに関係しているのだ.
0.999…という書き方は,「9をずっと続けた数」という意味ではなく,「9を続ければ続けるほど近づいていく数」という意味である.
それなのに「9をずっと続けた数」なんてものが存在すると思っている人は,「0.999…=1」という等式を見て困惑する.
今回のパラドックスも同じで,「0.1001…とずっと続けた数(に対応する偶数)」が存在すると思ってしまうことを突いた心理トリックに,我々はまんまと騙されているのではないだろうか.
確かに,そんな小数で表される実数は存在するだろう.
しかし,よく思い出して頂きたい.先ほど我々が偶数を「変換」して対応させたものは何だっただろうか?
我々は偶数をある規則に従って小数に変換したが,その小数が表す実数にまで関連付けた覚えはない.
我々が偶数と結びつけたのは,あくまで小数としての表現そのものであって,「それが表す実数」ではなかったのだ.
話がちょっと複雑になってきたので,ここではっきり結論を述べよう.
何が言いたいかと言えば,先ほど対角線論法で作った新しい小数0.1001…に対応する偶数など存在しないということだ.
真面目に,0.1001…を元の偶数に戻す方法を考えてみて欲しい.
先ほどやった「変換」を逆戻りして,「逆変換」を行うのである.これは次のようにすればいい.
①小数点を取る ⇒ 01001…
②左右反転する ⇒ …10010
③十進法に直す ⇒ ???
よくよく考えてみれば分かるはずだ.③の過程は絶対に無理だと.
当然,②における…の部分は左側に無限に続いており,何らかの規則に従って0が出たり1が出たりする.
だが,それじゃあ困るのである.…は桁が大きくなる方へ伸びているのだから,そのずっと先が0か1かで対応する偶数が大きく変わってしまう.
それなのに…が永遠に続かれたら,対応する偶数など決まりようがないのである.
[…のずーっと先の方で000…となればよいのだが,生憎どんな番号付けの仕方をしても絶対にそうはならないことが証明できてしまう.]
これが,上で使った「偶数版対角線論法」の穴である.
どれだけ向こうが「リストにない小数が見つかったぞ!」と叫ぼうが,「じゃあ,その番号付けされてない偶数って何よ? 言ってごらん? ほらほら」と問い質したら,絶対に答えられない.
前回やった本式の対角線論法の場合は,「二進法に直して,左右反転して……」などとややこしいことをやっていないから,番号付けの対象である実数は,リストの小数表現と直接結びついている.
だから,ちゃんと決まった規則に従って生成されている限り,新しく作った小数は必ず区間(0,1)の実数にちゃんと対応する.
このように,「無限に続く小数」に意味があるのは,それが表す実数が存在するからだということを忘れてはならない.
先ほどのように,偶数なんかと「形式的に対応する小数」を考えたときには,それが「無限に続く」ということにどんな意味があるのかきちんと見極める必要があるのだ.
(注1)他にもいくつか「戦線」があるらしいが,僕は読んでいない(^^;) とにかく,ここで紹介するのがメイン.
(注2)一応,これらの小数は「十進法のつもり」と元サイトに書いてあったので,小数が111...で終わっても問題ない.
(注3)後から作った「新しい小数」が,1番目と異なることはすぐに確かめられる.もちろん色んなルールの中にはすぐに確かめられないものもあるだろうが,そういうときは都合のいいようにちょっと「ルール変更」して,2(⇔0.1000…)を1番目に持ってきたりしても本質は変わらない.
今、色々と忙しくて更新が滞っている。
書きたいことは大量にある。対角線論法の話の続きも書かねばならないし、この間IPSのセミナーに行ってきた(今回はちゃんと録音までした!)のでそのレポートも書きたいところだ。
しかし、今はとりあえず目の前にあることに集中したい。
学科の人達の中で仲間を集めて、勉強会をやっている。「統計力学」という物理学の分野の勉強で、主に僕が講師をやっているのだが、それがまた講義ノートを作るのに異常な時間がかかる。
しかし、教えている相手から「おお、なるほど!」とか「分かりやすい!」と言われたときの喜びは格別である。
また、人に教えるとなると理解したことをしっかりまとめなければならないから、その過程で理解が深まる。
改めて、人に教えるって素晴らしいことだなあ、と思う。
いつかは大勢の学生の前に立って、どんな高度な内容も(その哲学的な面白さや思想も含めて)分かりやすく伝えられる人になりたい。
書きたいことは大量にある。対角線論法の話の続きも書かねばならないし、この間IPSのセミナーに行ってきた(今回はちゃんと録音までした!)のでそのレポートも書きたいところだ。
しかし、今はとりあえず目の前にあることに集中したい。
学科の人達の中で仲間を集めて、勉強会をやっている。「統計力学」という物理学の分野の勉強で、主に僕が講師をやっているのだが、それがまた講義ノートを作るのに異常な時間がかかる。
しかし、教えている相手から「おお、なるほど!」とか「分かりやすい!」と言われたときの喜びは格別である。
また、人に教えるとなると理解したことをしっかりまとめなければならないから、その過程で理解が深まる。
改めて、人に教えるって素晴らしいことだなあ、と思う。
いつかは大勢の学生の前に立って、どんな高度な内容も(その哲学的な面白さや思想も含めて)分かりやすく伝えられる人になりたい。
前回の記事の話題に関連して,最近僕が見つけた面白いサイトを紹介したいと思う.
対角線論法撲滅計画
http://www8.atwiki.jp/contradiction/pages/12.html
このサイトでは何と,数学の有名な証明の一つである「カントールの対角線論法」は間違っていたというスゴイことが主張されている.
(どうでもいいが,「撲滅」とはまた物騒な話である)
まず,「対角線論法とは何ぞや?」という読者もいると思うのでそれを説明しよう.
もちろんできる限り分かりやすく説明するつもりだが,この話は少しばかり高度なので数学が苦手な方にはちょっとヘビーかもしれない.
そもそも「対角線論法」なるものが何をするために発明されたかと言うと,簡単に言えば「実数の方が自然数よりはるかにいっぱいある」ことを証明するためである(注1).
「そんなのどっちも無限にあるんだから比べられないじゃないか!」というもっともな反論が予想されるが,ここで言う「はるかにいっぱいある」というのは,次のような意味である.
「実数は,自然数で番号付けできない」
つまり,ある一定のルールに従って「0.376は15247番目の実数で,0.819は3386124番目の実数で……」という感じに全ての実数に番号を振ることは原理的にできないということだ.
「そりゃそうだろう.だから何だ?」と思われるかもしれない.だが次の事実を知るとこれが全く「当たり前」でなくなるだろう.
実は,「整数の全体」や「有理数の全体」は番号付けが可能(「可番付」という)なのである!
整数はまだしも,有理数が? と思うだろう.
整数の場合は,
0 ⇒ 1
1 ⇒ 2
-1 ⇒ 3
2 ⇒ 4
-2 ⇒ 5
・
・
・
のように,正の数と負の数を交互に番号付けすれば全ての整数に番号を付けられる.
有理数はと言うと,少し工夫が必要だ.分子と分母の組み合わせでやっていくのはすぐに思いつくが,例えば「分母を固定して分子をずっと動かして……」みたいにやろうとすると,分子が向こうまで行って永遠に帰って来られなくなってしまう(「鉄砲玉」というやつである).
こういう「二つの数の組み合わせ」を数えるときは,以下のようにやるのが賢い方法だ.

↑この矢印に沿って番号を振っていく.ただし,約分できるものは飛ばす.
こうすれば,全ての有理数に有限のナンバーが与えられる.
例え「8290032番目の有理数は?」と聞かれようと,「36171/382028925は何番目?」と聞かれようと,この矢印を辿っていけば原理的には必ず答えることができるのだ.
ところが,実数となるとそうはいかない,というのが今回の話である.
我々は実に「0より大きく1より小さい(以下『区間(0,1)』と書く)実数の集まり」ですら,その全てに番号を振ることができない.
それを証明する手法が,今回のテーマである「対角線論法」だ.
まず,実数というのは必ず無限小数で表すことができる(有限小数のときも,後にずっと0を続ければ形式上無限小数である).
しかも区間(0,1)に限ってしまえば全て,
0.****…
というふうに,頭がゼロで,その次の小数点以下に任意の数字が並ぶという形になる.
そこで仮に,区間(0,1)の全ての実数に番号を振ることができる画期的なルールが発明されたとすると,それに従って
1番目 0.42803…
2番目 0.75309…
3番目 0.85023…
4番目 0.29847…
5番目 0.87230…
・
・
・
のように小数展開したものを順番に並べることができる(注2).
全てに番号を振ったのだから,区間(0,1)のどんな実数もこのリストの中になくてはならない.
それなのに,よく考えると必ず「リストの中にない(区間(0,1)の)実数」が見つかるというのが,対角線論法のポイントである.
以下で,[ ]が付いている数字に注目して欲しい.
1番目 0.[4]2803…
2番目 0.7[5]309…
3番目 0.85[0]23…
4番目 0.298[4]7…
5番目 0.8723[0]…
・
・
・
この部分を取り出してみる.
0.45040…
そして,その各桁を「今以外の数字」に変える.例えば,
0~4 ⇒ 5
5~9 ⇒ 1
のように各桁の数字を変換すると,
0.51555…
という小数ができあがる.これも当然「区間(0,1)の実数」だが,上のリストの中にあるだろうか?
あるはずがない.何故ならこれは,リストの中のどれと比べても必ずどこかの桁が違うように作った小数だからである.
リストの1番目と比べると小数点以下1桁目が違う,2番目だと2桁目が……というふうに,上の図の四角で囲まれた数字が必ず違うようになっているのだ.
このように,対角線の部分を取り出して新しい,絶対にリストにない小数を作り出すから「対角線論法」というのであろう.
かくして,(区間(0,1)の)全ての実数に番号付けをする試みは必ず失敗に終わることが示された.
番号付けのためにどんなルールを採用しようとも,必ず「永遠に番号付けがされない実数」が見つかってしまうのだ.
今回は対角線論法の説明だけで終わってしまった.
次回はいよいよ,最初に示したサイトが指摘する「対角線論法の不備」の紹介と,それに対する僕の反論を述べる.
お楽しみに!
(注1)その後色んなところに応用されているそうだが,筆者は数学が専門ではないのでよく知らない.
(注2)カントールのオリジナルでは二進小数らしいが,やってることは同じなので分かり易さを優先して十進法でやる.また,999...で終わる表示法は禁止とする(こうすると,実数の小数による表し方は一通りに決まる).
(注3)2013/03/08追記:このとき,000...や999...で終わる可能性がないようにしなければならない. ちょっと前までこの部分を0→1, 1→2,..., 9→0 とする「一個ずらし式」で書いていたが,それだと000...→999...となってしまうのでまずい!
対角線論法撲滅計画
http://www8.atwiki.jp/contradiction/pages/12.html
このサイトでは何と,数学の有名な証明の一つである「カントールの対角線論法」は間違っていたというスゴイことが主張されている.
(どうでもいいが,「撲滅」とはまた物騒な話である)
まず,「対角線論法とは何ぞや?」という読者もいると思うのでそれを説明しよう.
もちろんできる限り分かりやすく説明するつもりだが,この話は少しばかり高度なので数学が苦手な方にはちょっとヘビーかもしれない.
そもそも「対角線論法」なるものが何をするために発明されたかと言うと,簡単に言えば「実数の方が自然数よりはるかにいっぱいある」ことを証明するためである(注1).
「そんなのどっちも無限にあるんだから比べられないじゃないか!」というもっともな反論が予想されるが,ここで言う「はるかにいっぱいある」というのは,次のような意味である.
「実数は,自然数で番号付けできない」
つまり,ある一定のルールに従って「0.376は15247番目の実数で,0.819は3386124番目の実数で……」という感じに全ての実数に番号を振ることは原理的にできないということだ.
「そりゃそうだろう.だから何だ?」と思われるかもしれない.だが次の事実を知るとこれが全く「当たり前」でなくなるだろう.
実は,「整数の全体」や「有理数の全体」は番号付けが可能(「可番付」という)なのである!
整数はまだしも,有理数が? と思うだろう.
整数の場合は,
0 ⇒ 1
1 ⇒ 2
-1 ⇒ 3
2 ⇒ 4
-2 ⇒ 5
・
・
・
のように,正の数と負の数を交互に番号付けすれば全ての整数に番号を付けられる.
有理数はと言うと,少し工夫が必要だ.分子と分母の組み合わせでやっていくのはすぐに思いつくが,例えば「分母を固定して分子をずっと動かして……」みたいにやろうとすると,分子が向こうまで行って永遠に帰って来られなくなってしまう(「鉄砲玉」というやつである).
こういう「二つの数の組み合わせ」を数えるときは,以下のようにやるのが賢い方法だ.

↑この矢印に沿って番号を振っていく.ただし,約分できるものは飛ばす.
こうすれば,全ての有理数に有限のナンバーが与えられる.
例え「8290032番目の有理数は?」と聞かれようと,「36171/382028925は何番目?」と聞かれようと,この矢印を辿っていけば原理的には必ず答えることができるのだ.
ところが,実数となるとそうはいかない,というのが今回の話である.
我々は実に「0より大きく1より小さい(以下『区間(0,1)』と書く)実数の集まり」ですら,その全てに番号を振ることができない.
それを証明する手法が,今回のテーマである「対角線論法」だ.
まず,実数というのは必ず無限小数で表すことができる(有限小数のときも,後にずっと0を続ければ形式上無限小数である).
しかも区間(0,1)に限ってしまえば全て,
0.****…
というふうに,頭がゼロで,その次の小数点以下に任意の数字が並ぶという形になる.
そこで仮に,区間(0,1)の全ての実数に番号を振ることができる画期的なルールが発明されたとすると,それに従って
1番目 0.42803…
2番目 0.75309…
3番目 0.85023…
4番目 0.29847…
5番目 0.87230…
・
・
・
のように小数展開したものを順番に並べることができる(注2).
全てに番号を振ったのだから,区間(0,1)のどんな実数もこのリストの中になくてはならない.
それなのに,よく考えると必ず「リストの中にない(区間(0,1)の)実数」が見つかるというのが,対角線論法のポイントである.
以下で,[ ]が付いている数字に注目して欲しい.
1番目 0.[4]2803…
2番目 0.7[5]309…
3番目 0.85[0]23…
4番目 0.298[4]7…
5番目 0.8723[0]…
・
・
・
この部分を取り出してみる.
0.45040…
そして,その各桁を「今以外の数字」に変える.例えば,
0~4 ⇒ 5
5~9 ⇒ 1
のように各桁の数字を変換すると,
0.51555…
という小数ができあがる.これも当然「区間(0,1)の実数」だが,上のリストの中にあるだろうか?
あるはずがない.何故ならこれは,リストの中のどれと比べても必ずどこかの桁が違うように作った小数だからである.
リストの1番目と比べると小数点以下1桁目が違う,2番目だと2桁目が……というふうに,上の図の四角で囲まれた数字が必ず違うようになっているのだ.
このように,対角線の部分を取り出して新しい,絶対にリストにない小数を作り出すから「対角線論法」というのであろう.
かくして,(区間(0,1)の)全ての実数に番号付けをする試みは必ず失敗に終わることが示された.
番号付けのためにどんなルールを採用しようとも,必ず「永遠に番号付けがされない実数」が見つかってしまうのだ.
今回は対角線論法の説明だけで終わってしまった.
次回はいよいよ,最初に示したサイトが指摘する「対角線論法の不備」の紹介と,それに対する僕の反論を述べる.
お楽しみに!
(注1)その後色んなところに応用されているそうだが,筆者は数学が専門ではないのでよく知らない.
(注2)カントールのオリジナルでは二進小数らしいが,やってることは同じなので分かり易さを優先して十進法でやる.また,999...で終わる表示法は禁止とする(こうすると,実数の小数による表し方は一通りに決まる).
(注3)2013/03/08追記:このとき,000...や999...で終わる可能性がないようにしなければならない. ちょっと前までこの部分を0→1, 1→2,..., 9→0 とする「一個ずらし式」で書いていたが,それだと000...→999...となってしまうのでまずい!