0.999...=1?

【はじめに】

 このページは 0.999... = 1 教の頑なな教えに一石を投じるために書かれました。 0.999... ≠ 1 ではないかと考える初心者に対して、 0.999... = 1 教を信仰する人々は 「疑うな、0.999... = 1 は神のお告げである」 と称して数学者から見ると怪しげな証明を初心者に叩き込みます。 その結果、頑なな 0.999... = 1 教の信者が拡大再生産されていきます。 なんとも不毛なやり取りではないでしょうか?

 しかし、冷静に考えれば、0.999... ≠ 1 ではないかという疑問は、 もっともな疑問なのです。学校で習った数の順序を素直に適用するなら、 0.999... ≠ 1 という結果の方がむしろ自然です。 実際、解釈を工夫すれば 0.999... ≠ 1 は必ずしも間違いとは言えません。

 よく言われる、9 が有限個なら 1 より小さいが、 9 を無限に並べれば 1 になるのだなどという説明は根拠のないデマです。 無限という表現を避けて正確に説明するなら (つまり、イプシロン-デルタ論法式に説明するなら) 必要に応じていくらでも多くの 9 を並べたとしても 1 にはなりません。 それだけではダメなのです。この点に関しては初心者の 0.999... ≠ 1 なのでは?という疑問の方が正しいと言えます。 0.999... = 1 教の信者は無限という言葉のあやふやさで誤魔化していますが、 現実には、9 を無限に並べることと 0.999... = 1 との間には直接的な因果関係は無いのです。

 ところが、実数には 0.999... = 1 教の信者にも知られていない仕組みがあって (つまり、イプシロン-デルタ論法には同値類という仕組みがあって) その仕組みを適用すると 0.999... = 1 という結果が導かれるのです。 イメージとしては四捨五入に似ています。 ぶっちゃけ、0.999... なんてほとんど 1 なんだから 1 と見なそうぜ。 もっとアバウトに行こうよという感じでしょうか。 ただ、この仕組みは大学レベルの数学であるため、 おそらく、9割がたの人が 0.999... = 1 の本当の秘密を知りません。

 0.999... = 1 教の信者は 0.999... と 1 は寸分たがわず等しいと説明しますが、 それは、0.999... を 1 と見なせば 1 と寸分たがわず等しいということであり、 トートロジー(同語反復)に過ぎません。 この説明はイプシロン-デルタ論法に対する理解をゆがめてしまっており、 かなり悪質なミスリードでしょう。どのくらい悪質かというと、 この説明をしている 0.999... = 1 教の信者自身が被害者であるということに気付いていないところが恐ろしい。 超一流の詐欺師にだまされるとこんな感じなんでしょうね。 ミスリードを回避して正確に理解してもらうためには、 同値類によるアバウトな仕組みを説明する必要があります。

 簡単に説明しておくと、 実数の世界では、完全に等しいの意味はほとんど等しいと同じ意味になります。 つまり、0.999... = 1 は 0.999... ≒ 1 と同じことを表していることになります。 これなら 0.999... ≠ 1 教の人も 0.999... = 1 に納得できるでしょ? よって、実数の世界という制限を外せば、 0.999... = 1 も 0.999... ≠ 1 もどちらも正しいということが起こり得ます。 両者はイコールの精度が違うのですね。 ただし、ここでの「≒」では、有限小数の 0.999...9 に対して 0.999...9 ≒ 1 は成り立ちませんので注意してください。

 さて、9 を無限に並べれば 1 になるのが根拠ないデマと言いましたが、 実はちょっと言い過ぎで、このアバウトな仕組みを使うと合わせ技で 9 を無限に並べれば 1 になるようなファンタジーが提供されることになります。 詳しい話を知りたい人は 神秘の無限和 をご覧ください。 そして、このファンタジーがあまりに普及し過ぎたため、一方的な 0.999... = 1 という解釈が一人歩きしてしまっているのが現状です。

 どうでしょう。0.999... = 1 が神のお告げではないことが見えてきたでしょうか? このページでは 0.999... = 1 の本当の秘密を白日の下に晒すことで、 0.999... = 1 教と 0.999... ≠ 1 教の人々が平和に共存できる道を探ります。 と意気込んだものの、どっちの信者からも敵視されちゃうかもね(笑)

【概要】

 イメージがつかめないから、 もうちょっと具体的に!という人に説明しておきましょう。 この概要が本ページ全体で主張する内容の大まかな説明となります。 少々専門的な話をしますので、難しい話はイヤだという人は、 以下のリンクから 0.999... < 1 は正しい? をご覧ください。または高校数学は難しいという人は 四捨五入と実数 をご覧ください。あるいは、0.999... = 1 なんて当たり前でしょ?という人は アルキメデス性による証明 を読んで、古臭い知識で恥をかかないように知識をアップデートしておきましょう。

 それでは概要を始めましょう。 0.999... が無限小数であると考えるとき、0.999... = 1 教の信者も 0.999... ≠ 1 教の信者も次の等式が成り立つことに異論はないですよね。 \[ \begin{array}{lrcl} \textrm{(等式-1)} & 0.999\ldots & = & 0.9 + 0.09 + 0.009 + \cdots \end{array} \]  ただし、0.999... の「...」は必ず 9 で展開し切れることとします。 つまり、0.999999999... のように展開し切れず「...」が残ることはないとします。 当たり前じゃないかと思うかもしれませんが、この条件は結構重要で、 この条件を満たさないと、0.999... は小数展開できなくなります。つまり、0.999... が素朴な意味での無限小数や有限小数ではないものになり得るということです。 ここでは (等式-1) を、そのような素朴な意味ではない無限小数とは考えず、 有限和と同様に素朴な意味での和と考えます。

 このとき、0.999... ≠ 1 教の信者は (無限小) ≠ 0 であるとして 0.999... = 1 - (無限小) と考えていると思います。 つまり、無限小は実数ではないので、0.999... も実数ではありません。 しかし、0.999... = 1 教の信者は 0.999... を実数と考えており、 無限小など不合理だとして、 実数における唯一の合理的な解釈は (無限小) = 0 だとしているはずです。 すると 0.999... = 1 - (無限小) = 1 - 0 = 1 となって、 0.999... = 1 という結論になり、0.999... は実数になります。 ところが、(無限小) = 0 だとするとおかしなことが起こります。

 無限小数 0.999... が実数であると仮定し、 (等式-1) を満たすとします。このときその無限桁目を考えてみてください。 「...」は必ず 9 で展開し切れるのですから、 有限個の 9 で打ち止めということはあり得ません。よって、無限桁目は 0.00...09 と 9 の前に 0 が無限に並んだ数になりますよね?これは無限小です。 0.999... = 1 教の信者は (無限小) = 0 と考えているのですから、 0.999... の無限桁目は全て 0 です。 しかし、無限桁目が全て 0 の小数とは有限小数のことですから、 0.999... は有限小数ということになってしまいます。 そして、(無限小) = 0 ですから無限の彼方からの繰り上がりは不可能です。 つまり、繰り上がりの結果、9 が 0 になったわけではありません。 したがって、0.999... の整数部は 0 であり、0.999... = 1 とはなりません。 これは、0.999... = 1 - (無限小) と考えた場合の結果である 0.999... = 1 と矛盾します。

 何故、こんな矛盾が起きたのでしょうか? 実は (等式-1) を満たすとしたことが原因です。 0.999... が実数であると考えようとすると (等式-1) は成立しないのです。 (等式-1) が成立するとした場合、0.999... は実数ではなくなります。 その結果 0.999... ≠ 1 が成立することになります。 つまり、単に 9 を無限に並べただけなら 0.999... ≠ 1 なのです。

 では、0.999... = 1 教の信者が望む結果を得るにはどうしたらよいのでしょうか。 それには、 \(\mu(x)\) を \(x\) を代表元とするイプシロン-デルタ論法の同値類と定義して、 \[ \begin{array}{lrcl} \textrm{(等式-2)} & 0.999... & = & \mu(0.9 + 0.09 + 0.009 + \cdots) \end{array} \] と考える必要があります。 つまり、0.999... は素朴な意味での無限小数ではないのです。 このとき、\(x\) は実数でなくてもかまいません。無限小も扱えます。 しかし、\(\mu(x)\) は実数を返します。 要するに、\(\mu(x)\) は \(x\) よりアバウトなわけです。 無限小など存在しないという立場でもかまいませんが、 それでも、実数ではない何かを想定しないと矛盾します。 何故って、\(x\) においてはアルキメデス性が成立しないからです。 9 を無限に並べるのですから当然ですよね。 これが大学レベルの数学というやつです。 超準解析で考えると \(\mu(x)\) は標準部分関数 \(\mathrm{st}(x)\) のことです。 高校数学で言えば極限の親戚、つまり \(\lim\) の親戚みたいなものです。 \(\mu(x)\) の性質を少しだけ説明すると、 \[ \mu(0.9 + 0.09 + 0.009 + \cdots) = \mu(0.9) + \mu(0.09) + \mu(0.009 + \cdots) \] が成り立ちます。ただし、\(\mu(x)\) は有限個の和にしか分配できません。 無限個の和に分配してはいけません。また、 \(\mu(0.9)=0.9\)\(,~\)\(\mu(0.09)=0.09\)\(,~\)\(\mu(0.009+\cdots)=0.01\) が成り立ちますので、 \[ 0.999\ldots = 0.9 + 0.09 + \mu(0.009 + \cdots) = 1 \] となって、(等式-1) との違いは極めて微妙なものです。 それでも、(等式-1) が成り立つ場合は 0.999... ≠ 1 が正しいのです。 もちろん、(等式-2) が成り立つ場合は 0.999... = 1 が正しいです。 ちなみに、(等式-2) が成り立つとき \((無限小)\ne 0\) ですが、 \(\mu((無限小))=0\) なので、実数においては無限小は 0 と見なせます。つまり、 \(0.999\ldots\)\(~=~\)\(\mu(1-(無限小))\)\(~=~\)\(\mu(1)-\mu((無限小))\)\(~=~\)\(1-0\)\(~=~\)\(1\) ということです。ただし、\(a\) が実数のとき \(\mu(a)=a\) であることも使いました。

 さて、ここでは (等式-1) の右辺を素朴な意味での和と考えましたが、 多くの書籍では無限級数を表すとき、暗黙の裡に \(\mu(x)\) を適用した結果として扱っていると思います。 つまり、無限級数を単なる和とは考えず、和の列が収束する値としていると思います。 なので、(等式-1) と (等式-2) は実際には区別できないことがほとんどでしょう。

 しかしそうなると、 和でないものを和であるかのように扱って式を変形するのは本来はよろしくありません。 和のように扱うには、\(x,~y\) が素朴な意味での無限級数で、 \(a,~b\) が実数(または複素数)であるとき、 \(\mu(ax+by)=a\mu(x)+b\mu(y)\) であることや \(\mu(xy)=\mu(x)\mu(y)\) であることを説明する必要があります。 ただし、それを説明してもなお、全てが和と同じであるわけではありません。 また、絶対収束なのか条件収束なのかという微妙な問題もあるはずです。 それらを説明しないまま、 \(\sin x\) と \(\cos x\) をテイラー展開して合わせると指数関数になりますなどと、 いかにも無限級数は単なる和であるかのようにオイラーの公式を証明しておいて、 0.999... の話になると、いや無限級数は単なる和ではありませんなんて言われると、 どゆこと?今までの話は何だったの?となってしまうでしょう。

 正直に言えば、私もさんざん \(\mu(x)\) を省略した書き方をしてきました。 しかし、数学のこの習慣はあまり良い習慣ではないと思います。 \(\lim\) を使って書けば問題ありませんが、 単なる和の形で書くのは初学者をいたずらに惑わせる原因になってはいないでしょうか? 「\(\cdots\)」や \(\Sigma\) という記号は有限和の場合にも用いられ、 無限和の場合とは全く意味が異なります。しかも十分な説明はまずありません。 これでは、有限和の延長で考えている初学者にとっては嘘をつかれているのと同じです。

 高校の教科書にどう書いているのか、私はもう忘れてしまいましたが、 インターネット上の高校生向けのサイトで無限級数の定義を調べてみると、 無限級数は無限個の項の和であると断言しているんですよね。 これはまずいんじゃないかな。というのも、その断言のすぐ後で、 無限級数を計算するには極限を使いますと説明してあるんです。 いや、明らかに矛盾してますよね。極限は和ではありません。 別のサイトの説明では、極限値のことを和(無限級数の和)と呼ぶ慣例があるとのこと。 う~ん、それで良いのだろうか?無限級数の値で十分だと思う。 どちらのサイトも、まじめな受験対策サイトなんですけどね。 こんなことが普通に教えられているのですから、 無限級数が単なる和であるかのようにだまされて、 0.999... ≠ 1 と主張する初学者が後を絶たないのもやむを得ないのかもしれません。

【補足】

 (無限小) = 0 と考えようとすると矛盾が生ずることから、 0 ではない無限小の概念は不可避であることが分かります。 よく、0 ではない無限小など不合理だと言われますが、 実際には、全ての無限小は 0 という考え方の方が不合理なのです。 まあ、冷静に考えれば、「無限」小数などと言った時点で、 無限大や無限小の概念が不可避なのは当然ですよね。

 もちろん、無限小数とは必要応じていくらでも長くできる有限小数を同値類で丸めたものであると説明し、 それがイプシロン-デルタ論法というものだと説明すれば、 無限大も無限小も必要ではありません。 当然、本当の意味で無限小数であることはあきらめることになりますけれど。

【イプシロン-デルタ論法】

 以下、事情を知っている人向けの御託が続きます。 さっさと本題に入ってよという人は、 チャチャっとスクロールして次のセクションから読んでみてください。

 さて、0.999... を理解するにはどうしても極限の話が必要です。 極限を正確に理解するには、イプシロン-デルタ論法に翻訳する必要がありますが、 簡単な極限を計算するのにいちいちイプシロン-デルタに翻訳する人は居ないでしょう。 ほとんどの人は無限大や無限小を使って直観的に極限を計算しているはずです。 0.999... = 1 教の信者は、 そのような計算はデタラメだと思っているかもしれませんが、 実際には数学的な根拠があります。超準解析や述語論理のコンパクト性定理などです。 もし、デタラメなのだとしたら無限小数という概念自体が矛盾してますよね。 イプシロン-デルタ論法には無限は存在しないのに、9 を無限個並べるとは何なのか?

 そこでここでは、 0.999... の話をするとイプシロン-デルタ論法がどうのこうのとよく聞くけど、 それって何なの?という人に、イプシロン-デルタ論法の一部を種明かしします。 そして、直観的な極限の計算との関係を明らかにします。 というのも、イプシロン-デルタ論法を魔法の一種だと思っている 0.999... = 1 教の信者は結構居るからです。 そして、イプシロン-デルタ論法を使えば 0.999... = 1 であると思い込んでいます。 もちろん、同値類を適用した結果は 0.999... = 1 ですが、 単に 9 を無限に並べただけなら 0.999... ≠ 1 なのです。

 まずは、その誤解を解いていきましょう。高校数学で次のことを考えてみてください。 \[ f'(x) = \lim_{\varDelta x\to 0}\frac{f(x+\varDelta x)-f(x)}{\varDelta x} \]  上記の微分の定義において、\(\varDelta x\) は決して \(0\) ではありません。 もちろん、特定の固定された微小な実数でもありません。 必要に応じていくらでも小さくできます。 すなわち、\(\lim\) の中は普通の実数の世界ではありません。 もし、\(\varDelta x\) が \(0\) だとすると、 微分の定義は破綻してしまいます。\(0/0\) は不定なのですから。 つまり、\(\lim\) の中では、 0 に限りなく近いが 0 ではない数すなわち無限小を考えるのです。 ならば、1 に限りなく近いが 1 ではない数があったとしても不思議ではないでしょう? 無限小など不合理だ。だから 0.999... = 1 なのだとよく言われますけれど、 実際、微分の定義の中で無限小を考えるのだから初心者が混乱するのも当然です。 もちろん、大学レベルの数学ではイプシロン-デルタ論法に翻訳しますが、 \(\lim\) の中では 0.999... ≠ 1 であることに変わりはありません。 繰り返しますが、そうでないと微分の定義は破綻します。

 正確に述べると、0.999... と 9 を無限に並べた数の性質を知りたければ、 次のことを調べれば十分です。つまり、何らかの自然数を \(m\) とするとき、 \(n\geqq m\) であるような全ての自然数 \(n\) に対して、 0.999...9(9 が \(n\) 個)すなわち \(1 - 1/10^n\) のことを調べれば十分です。 実際に無限に並べることはできないので、これで代用します。 自然数は全部で無限個ありますから妥当ですよね。 そして、\(n\geqq 0\) である全ての \(n\) に対して、 \(1 - 1/10^n\ne 1\) であることを帰納法で証明できますから、 これにより、0.999... ≠ 1 であることが確認できます。 これが、イプシロン-デルタ論法です。その一部ですけどね。

 ただし、\(\lim\) の中と外で、 0.999... という表現に複数の解釈があるので注意してください。 \(\lim\) の中では単に 9 を無限に並べたものを表し、 \(\lim\) の外では無限に並べた 9 に対し同値類を適用したものを表します。 一見、0.999... は実数のように見えますが、 \(\lim\) の中では固定された数ではありません。\(\varDelta x\) と同様ですね。 しかし、\(\lim\) の外では同値類で丸められて 0.999... = 1 になります。 同様に、無限小は 0 になります。 もっとアバウトに行こうよということです。 どうです。思い当たる節があるでしょう? 高校数学で基本的な微分の公式を求めるときに、 誰しもそういう計算をしたはずです。 何故、無限小を 0 とするのか深くは考えなかったでしょうけれど。

 ところで、こう考えている人もいるのではないでしょうか。 帰納法で証明されるのは個々の 0.999...9 ≠ 1 という事実でしかないのではないか? 確かに、そういう風にも見えます。しかし、帰納法を用いなくとも、 個々の 0.999...9 ≠ 1 という事実は有限的に証明可能です。 適当に \(10^n\) 倍すれば自然数の比較に過ぎないので当たり前ですね。 すなわち、帰納法を持たないロビンソン算術でも証明可能な内容です。 しかし、0.999...9 ≠ 1 (9 が \(n\) 個) を全ての \(n\) に対して証明することは有限的には不可能です。 つまり、帰納法が証明している内容は本質的に無限にかかわる内容になります。 よって、\(\lim\) の中で量化子 \(\forall\) を使わず表記するとするなら、 やはり、0.999... ≠ 1 と表記するのが適切だと思います。 何となく、[0, 0.9], [0, 0.99], [0, 0.999], ... という閉区間の全てを和集合にすると、[0, 1) という半開区間になるのと似ています。 詳しくは、 自然数論の二重性 をご覧ください。

 いまいち信用できないという人は、 次の問題を考えてみると話が飲み込めるでしょう。 \[ \lim_{n\to\infty}\left\lfloor 1-\frac{1}{10^n}\right\rfloor = 0 \tag{式-1} \]  これは決して次の問題と等価ではありません。 \[ \left\lfloor\lim_{n\to\infty}1-\frac{1}{10^n}\right\rfloor = 1 \tag{式-2} \]  \(\lfloor x\rfloor\) は床関数と言います。 \(x\) を超えない最大の整数を返します。正確な説明ではありませんが、 分かりやすく言うと、0 以上の数で考えた場合、 小数部分の切り捨てのことです。つまり整数部分を返します。

 (式-2) は \(\lfloor 0.999\ldots\rfloor=1\) のことですから、 9 を無限に並べたものと解釈しますよね。 ならば、(式-1) も 9 を無限に並べていると解釈せざるを得ません。 よって、この段階でもう、9 を無限に並べただけでは 1 にならないことは明白です。 \(\lim\) で何かしらの情報操作が行われてしまう前に値を評価すれば良いんですね。

 インターネットの質問サイトで、質問者が (式-1) のつもりで質問しているのに、 答える 0.999... = 1 教の信者たちが、 ことごとく (式-2) の話をしているというのを見たことがあります。 無意識のうちに 0.999... ≠ 1 を直視するのを避けているのでしょう。しかし、 (式-2) の床関数の中身が 1 であることは分かり切った話で質問するまでもありません。 問題なのは (式-1) の床関数の中身はどのような数なのかということです。

 仮に、その数を \(x\) としましょう。どんな有限桁の 0.999...9 を想定しても、 \(x\) はそれより大きくなることは明らかです。 しかも、\(x=1-1/10^n\) は \(n\) が自然数なら 1 より小さいことが帰納法で証明できますので 0.999...9 < \(x\) < 1 です。 普通に考えると、全ての 0.999...9 に対して条件を満たす共通の固定された実数 \(x\) は存在しませんが、\(\lim\) の中は普通の実数の世界ではないので、 \(x\) は固定されておらず必要に応じて大きくなります。 それならば、任意に決めた 0.999...9 に対して、 0.999...9 < \(x\) < 1 を満たす \(x\) は常に存在します。つまり、 0.9 < \(x\), 0.99 < \(x\), 0.999 < \(x\), ... , \(x\) < 1 であり、 それを満たす \(x\) はもはや実数ではなく、 同値類に丸められていない生の 0.999... だと考えざるを得ないでしょう? 何となく、\(x^2+1\) の剰余体で複素数を定義できることと似ています。 分かる人には述語論理のコンパクト性定理と言えば分かりますよね。

 正式な極限の考え方では、この場合、\(n\) が有限なときの数列に翻訳するので 0.999... のような数は登場しませんが、 \(\lim\) の中をひとつの式と見なして、 その値を同値類で丸めたものを極限値と考える場合には \(x\) = 0.999... であると考えることになります。 この考え方に根拠を与えているのが超準解析です。 もう少し詳しく知りたい人は 超準解析 のセクションを読んでみてください。

 まだ納得できないという人も居ると思います。 自然数が全部で無限個あるということは、 無限番目の自然数は有限ではないのではないか?これは矛盾だと。おっしゃる通りです。 しかし、 「無限個」と言った時点で普通の自然数の話ではないことにお気付きでしょうか?

 ここで、無限個とは数え終わらないことだと定義し直しましょう。 何が違うのかって? 例えば、100 までの数を自然数と定義したとしましょう。 全部数えてくださいと言われたので、あなたは全部数えてこう言いました。 数え終わりました。すると、やっぱり 1000 までの数を自然数と定義します。 数えてください。と言われました。 仕方がないのであなたは 1000 まで数えてこう言いました。 数え終わりました。すると、やっぱり 10000 までの数を自然数と定義します。 数えてください。と言われました。 もう、お分かりですよね。ゴールを動かされたら数え終わるはずがありません。 しかも、個々の瞬間だけ見れば、有限な話しかしていません。 これが「無限個」の正体なのです。

 \(\lim\) の中では、 \(\varDelta x\) や 0.999... が固定された数ではなかったのはそのためです。 0.999... は動きませんと説明する人も多いですが、 少なくともイプシロン-デルタ論法において、それは誤りです。 つまり、無限番目の自然数とは特定の自然数のことではなく、 必要に応じていくらでも大きくできる数のことだったわけです。 無限大のことをとても大きな数と考えるのは間違いであると言われますが、 実際には、とても大きな数でほぼ間違いではないのですね。 その数が固定されていないということにさえ気が付けば。

 ただし、注意点があって、\(x\) が固定されていないということは、 文脈を判断しないと、 必ずしも \(x = x\) のような式が成り立たないということでもあります。 例えば、\(x = 0.999\ldots\) だとして、\(y = 0.9 + x/10\) とおけば \(y\) も \(0.999\ldots\) と表記すべきでしょう。しかし、 \(0.999\ldots\ne 1\) という立場では \(x\ne y\) とせざるを得ません。 \(x = 0.9 + x/10\) を満たす \(x\) は \(1\) だからです。したがって、 \(0.999\ldots\) を普通の実数と完全に同じものとして扱ってはいけません。 \(0.999\ldots\) という表記は1つの数を表しているというよりは、 \(1\) に限りなく近いという一群の数の集合とでも考える方が適切かもしれません。

 ここまで説明してきて、 何が 0.999... = 1 教と 0.999... ≠ 1 教の食い違いを生んでいるのか、 おぼろげながら見えてきたと思います。 つまり、片や \(\lim\) の外の話をしている。 片や \(\lim\) の中の話をしているという食い違いなのです。 それさえ区別すれば、0.999... = 1 も 0.999... ≠ 1 も矛盾しません。 どちらか一方の世界しか存在しないと強弁を張ろうとするからややこしいことになるわけです。

 もし、0.999... をめぐるイプシロン-デルタ論法のウンチクに興味があるなら、 神秘の無限和 も読んでみてください。へえ、イプシロン-デルタって結構身近なことを正確に理解するのにも必要なんだと頷いてもらえると思います。

 さて、さんざん知ったような口ぶりで書いてきましたが、 実は私にもよく分かっていないことがあります。 実無限の立場で考えたらどうなるのだろうかという問題です。 つまり、自然数を順序数 \(\omega\) と考えたらどうなるのか。

 \(\omega\) の無限番目の数と言ったら、 \(\omega\) の \(\omega\) 番目の数ということになりますが、 それは、\(\omega-1\) となり定義できません。定義できないのだから、 自然数のはずの \(\omega-1\) が有限ではないのでは?という矛盾も導けませんけれど、 どうにも分かったような気がしません。

 \(\omega\) の後ろの方がどうなっているのか考え出すと夜も眠れません。 常に、ホニャララを満たす全ての自然数という形、 つまり、無限集合としてしかアクセスできない数達。 その正体とはどんなものなんでしょうね。 誰か私に魔法の種明かしをしてほしいものです。

【0.999... < 1 は正しい?】

 あなたも一度はこれを聞いて不思議に思ったことがあるはずです。 すなわち、「0.999... と 9 が無限に続く数は 1 である」と。 しかし、直感で考えると「0.999... < 1」ですよね? この直感は本当に間違っているのでしょうか。 ご安心ください。ここでは、この直感が必ずしも間違いとは言えないことを説明します。 ただし、説明には高校レベルの数式をたくさん使います。 数列とか\(\Sigma\)とか難しい話はいやだという人は 四捨五入と実数 をご覧ください。

 まず、「0.999... = 1」はどう言う時に正しいのでしょうか? 実は、この式が正しいのは考えている数が実数とか有理数の場合です。 それ以外の数を考えているのなら、この式は必ずしも正しくありません。

 実数とか有理数でないとしたら、他にどんな数があると言うのか? と思う人もいるかもしれません。 しかし、意外と身近に実数でも有理数でもない数は使われているんですよ。 10進表記が正にそれです。

 そんなバカな!10進表記は実数に決まってるって? いやいや、そんなことはありません。10進表記は実数より精度の高い数なんです。 つまり、実数より細かい順序を区別できます。 実数は、それを直接表現するうまい方法がないので、 表現方法として10進表記を流用しているだけなんです。 10進表記の方が精度が高いので、精度の低い実数を表すぶんには問題はありません。

 それではまず、10進表記の順序について説明しましょう。 10進表記は、\(a_0\) を整数部とし、\(a_n~(n=1,2,3,\ldots)\) を小数点以下 \(n\) 桁とする数列 \(\{a_n\}\) と同一視できます。 1.000... なら \((1,0,0,0,\ldots)\) という数列、 0.999... なら \((0,9,9,9,\ldots)\) という数列と等価とみなすことができます。 2つの10進表記 \(\{a_n\}\) と \(\{b_n\}\) があるとき、 辞書式順序という我々のよく知っている順序で比較すれば、両者の大小が決まります。 え?順序にも種類があるの?という人もいるかもしれませんね。 そうなんです。実は実数の順序って、 我々がよく知っている辞書式順序とは違うものなんです。 実数の順序ってとても難しいんですよ。

 一方、 辞書式順序というのは、abc と acc を比較するとき、まず先頭から比較を開始します。 先頭は共に a ですから決着はつきません。次に2文字目を比較します。 2文字目は b と c なので c の方が大きいので決着がついて abc より acc の方が大きいということになります。辞書を引くときの順序ですね。 10進表記を比較するときも、 同じことを数列でやってやります。先頭の数から比較をはじめ、 どちらかの数列の要素で大きいものにたどり着いたときに全体の大小が決まります。 \(\{a_n\}\) より \(\{b_n\}\) が大きいときに \(\{a_n\}\lt\{b_n\}\) と書きます。 比較するのに、実数は一切関係が無いことに注意してください。

 次に、10進表記に対応する実数 \(x\) の求め方を説明しましょう。 10進表記を実数に変換するには以下の公式を使います。

\[ x = \sum_{n=0}^{\infty}\frac{a_n}{10^n} \]

 この計算をした段階で精度が落ちます。つまり、\(\{a_n\}\lt\{b_n\}\) でも \(\displaystyle \sum_{n=0}^{\infty}\frac{a_n}{10^n}=\sum_{n=0}^{\infty}\frac{b_n}{10^n}\) となることがあるわけです。 ただし、\(\displaystyle\sum^{\infty}_{n=0}\) とは厳密には \(\displaystyle\lim_{m\to\infty}\sum^m_{n=0}\) のことです。 この \(\lim\) が曲者なことは後で説明します。

 実際、0.999... と 1 を比較してみてください。 これは 0.999... と 1.000... の比較です。 辞書式順序で比較すれば、疑いの余地なく先頭が 1 の 1.000... の方が先頭が 0 の 0.999... より大きいですね。すなわち、0.999... < 1 です。 つまり、10進表記では大小関係に関して 0.999... と 1 の区別がつけられるのです。 一方、実数の方は、完備順序体になっていないといけないので、 各種演算法則を考慮すると 0.999... = 1 でなければなりません。 つまり、実数では 0.999... と 1 の区別がつけられないのです。

 重要なことは、ほとんどの人は実数を比較するとき、 10進表記の辞書式順序で比較しているであろうことです。 要するに、0.999... = 1 に感じる違和感は、 我々が無意識のうちに実数ではなく10進表記で比較していることに起因するのでしょう。

 よく、0.999... は 1 の別表現なのだが、 1つの数を表す方法は1通りであるという先入観のせいで 0.999... ≠ 1 だと誤解するのだと説明する人達がいます。 しかし、辞書式順序で比較している人にとっては 0.999... と 1 は疑いの余地なく明確に異なる数ですから、 そんな説明では納得してもらえないでしょう。 実際、普通の人が知っている唯一の順序は辞書式順序だろうと思います。 日常生活はおろか理系でも工学的にはそれで事足りますからね。 実数の順序を知っている人なんて数学者かマニアックな変わり者くらいでしょう。

 つまり、0.999... = 1 に疑問を感じる人は、 学校で習った辞書式順序をしっかりと使っているからこそ疑問を感じるのです。 実数の順序と辞書式順序が異なることって明示的には習いませんよね。 その一方で、0.333... = 1/3 で 0.333...×3 = 1 だから 0.999... = 1 などと、 根拠のハッキリしない証明を鵜呑みにしてしまう人もいます。それに比べたら、 0.999... = 1 に疑問を感じる人の方が、むしろ数学的センスはあると言えます。 今まで自分が習ってきたことでは、 うまく説明できない不思議なことが起こっているのですから、 何かがおかしいと感じ取る嗅覚がないと数学の道を歩むのには向きません。

 さて、他にも実数より精度の高い順序は存在します。 実数 \(x\) に対して \([0,x]\) という閉区間を対応させるとします。 すると、\([0,0.5]\subset [0,1]\) のような包含関係がある場合に \([0,0.5]\lt[0,1]\) という順序を考えることができます。 ここで、\([0,1)\) のような半開区間を考えると、 \([0,1)\lt [0,1]\) となりますが、 \(0\leqq a\lt 1\) のとき、\([0,a]\subset [0,1)\) ですから、 \([0,a]\lt [0,1)\lt [0,1]\) となります。 \([0,x]\) は \(0\) 以上の実数と1対1対応していますから、 \([0,1)\) はどの実数とも対応しません。 つまり、集合の包含関係の方が実数より精度が高いわけです。10進表記で考えると、 \([0,1)\) は正に 0.999... と対応していると考えることができます。

 ただし、10進表記にしろ集合の包含関係にしろ、 実数と同じ四則演算を導入することはできません。 無理やり四則演算を定義しても実数とは異なる風変わりな計算法則になります。 実数における和や積と大小の関係を規定した公理が成り立つとは限りません。 なので、10進表記や集合の包含関係を実数の代わりに使うことはできません。

【四捨五入と実数】

 ここでは、高校数学は難しいのでもっと簡単に説明してよという人のために、 別の角度からの説明を試みます。 四捨五入のアナロジーを使って、実数においては 0.999... = 1 が正しいことを説明し、 続いて、実数ではない数で考えると 0.999... ≠ 1 であることを説明します。

 まず、1.2 を四捨五入することを 《1.2》 と書くことにしましょう。 つまり、《1.2》 = 1 です。あるいは 《1.5》 = 2 ですね。 この書き方を使うと、《0.9》 = 《1》 という等式が成り立ちます。 同じようにして、《0.99》 = 《1》 であり、《0.999》 = 《1》 ですね。 すなわち、大まかに同じものは完全に同じと見なすということです。

 ところで、ご存じないかもしれませんが、専門的には、 実数はほとんど同じものは完全に同じと見なすという仕組みで作られています。 ここは、そういうものなんだと飲み込んでください。 なんとなく、上記の四捨五入の話に似てますよね。 実数のこの仕組みを 0.999... に適用することを [0.999...] と書くとします。 すると、[0.999...] = [1] という等式が成り立ちます。 0.999... と 1 はほとんど同じなので完全に同じと見なすわけです。 四捨五入と違うのは、 [0.9] ≠ [1] であり、[0.99] ≠ [1] であり、[0.999] ≠ [1] であるということです。 つまり、見分けがつかないくらいほとんど同じでないとダメということです。

 実は、実数の関係式は、いつもこの [ ] が付いた形で考えるのが正式な解釈です。 つまり、x と y という数があった場合、実数の関係式は [x] = [y] のように書くのが正式な書き方です。

 でも、いつもいつも [ ] を付けて書くなんて面倒くさいですよね。 そこで、数学ではよくあることなんですが、誤解の恐れがない限り、 [x] = [y] を x = y と書いてしまいましょうということになっているのです。 つまり、[0.999...] = [1] を 0.999... = 1 と書いてしまうのです。 いや、めっちゃ誤解の恐れがありますよねぇ。 いささか強引さを感じますけれど、 そういう習慣になっているので仕方がありません。 とにかく、これで 0.999... = 1 に納得していただけたと思います。

 さて、ここまで説明をぼかしてきましたが、 [ ] が付かない生の 0.999... は何を表しているのかという問題があります。 実のところ、いろいろ考えることができて、 10進表記とかコーシー列とか超実数とかいろいろあります。 そんなの分からないよという人は、 素人が素朴に考える実数モドキの数とでも思っておいてください。 大事なことは、生の 0.999... を考えると、 ほとんど同じものを完全に同じと見なすとは限らないので、 0.999... ≠ 1 となってもおかしくないということです。

 どうでしょう。絶対 0.999... ≠ 1 のはずなのに、 頭の良さそうな人が、いや 0.999... と 1 は完全に等しい。 と断言する理由がご理解いただけたでしょうか。 つまりは、[0.999...] と [1] は完全に等しいと言っているのですね。 要するに、 0.999... = 1 という式をどう解釈するのかという定義の問題だったわけです。

【2つの実数の等値判定】

 ここでは、実数の精度が低いことを実感できるもう1つの根拠を、 高校数学における極限の概念を用いて示しましょう。 皆さんは10進表記を使わず、 2つの実数 \(a, b\) が等しいことを確認しろと言われたらどうしますか? そうですね、\(a - b\) を計算してみて完全に \(0\) になれば OK ですよね。

 しかし、この判定には微妙な部分があることをご存じでしょうか? この判定は極限が出てこない間は問題ありませんが、 極限の概念を取り扱うと、完全なるイコールと考えるには微妙な部分があるのです。

 \(\displaystyle a = \lim_{n\to\infty}a_n\) かつ \(\displaystyle b = \lim_{n\to\infty}b_n\) としましょう。 \(\displaystyle a - b = \lim_{n\to\infty}(a_n - b_n) = 0\) なら \(a = b\) です。 つまり、\(a_n\) と \(b_n\) の差の絶対値が、 いくらでも小さくできるのなら両者は等しいということです。重要なことは、 \(a_n\) と \(b_n\) の差は完全な \(0\) とは限らないこということです。 どこまでも \(0\) に近づけられるけれども \(0\) ではない場合もあります。 つまり、細かい差は無視してしまうということです。 \(a - b\) は \(\lim\) の中身を考えると \(0\) とは限らず、 \(\lim\) によって無限小の差が丸められて \(0\) に見えているのかもしれないのです。 つまり、本来ならば無限小の誤差があるのかもしれないのです。

 0.999... は数列 (0.9, 0.99, 0.999, ...) の極限と考えることができ、 1 は数列 (1, 1, 1, ...) の極限と考えることができます。 よって、0.999... - 1 は \(\lim\) の中身まで考えると、 無限小の誤差があるのですが、丸められて 0.999... - 1 = 0 となっているのです。 0.999... = 1 となっても何も不思議ではないですね。 これで実数の精度が低い理由が分かったと思います。

 大学レベルの数学で説明すると、\(a,b\in X\) のときに (\(a-b=無限小\)) なら \(a\sim b\) と書いて \(a\) と \(b\) は限りなく近いと言うとするなら、 \(\sim\) は同値関係となり、 商集合 \(X/\sim\) が実数の集合と見なせるということです。 つまり、\(\sim\) を \(=\) と読み替え、 無限小を \(0\) と読み替えると実数と同じ構造の空間になります。 すると、\(X\) とは何ぞやということになりますが、 素人が素朴に考える実数モドキの集合とでもしておきましょう。 つまり、素人が実数と思っているもの \(X\) と、 数学者が実数と思っているもの \(X/\sim\) は別物で、 この違いを理解できない人が実数において 0.999... < 1 と頑なに主張することになるのでしょう。

【実数で、0.999... = 1 となる理由】

 上記では、 実数や有理数でないなら「0.999... < 1」になり得ることを示しました。 これは逆に、実数や有理数ならば「0.999... = 1」ということです。 ここでは、なぜ 1 になるのか。その理由が分かる説明をしたいと思います。

 まず、0.999... という表記が何を表すのかハッキリさせましょう。 ここが曖昧なままだと、何を説明されても納得できないですからね。 始めに、0.999... = 0.9999... = 0.99999... = … であると定義し、 その上で、\(a\) = 0.999... とおき、\(a\) は以下の条件を満たす実数と定義します。

  1. \(a\) は \(1\) より大きくなることはない。つまり \(a\leqq 1\) である。
  2. \(a\) は \(1\) に最も近い。ただし、必ずしも \(a = 1\) ではない。

 条件1.は、\(a\) が \(1\) より小さい側から \(1\) に近づくことを表します。 条件2.をもっと具体的に書くと以下のようになります。

  1. \(a\lt b\lt 1\) となる \(b\) は存在しない。

 「最も近い」という概念は案外難しく、条件3.がその定義となります。 「\(a\lt 1\) の範囲で \(1\) に最も近い」としてしまうと、 問題設定の段階で \(a = 1\) である可能性を排除してしまうことになるので注意してください。 また、\(a = 1\) なら最も近いことは自明なので、 条件2. 3.は最も近い数が複数あり得るか?と暗に仮定しています。

 ここで、実数の稠密性を考えます。 実は、実数ではなく有理数でも良いのですが、ここでは実数で考えます。 つまり、以下の性質が成り立ちます。

\[ 任意の~x,~y~について、x\lt y~ならば~x\lt z\lt y~となる~z~が存在する \]

 例えば、\(\displaystyle z = \frac{x + y}{2}\) とすれば明らかですね。 この稠密性の対偶を取ると次の命題が成り立ちます。

\[ 任意の~x,~y~について、x\lt z\lt y~となる~z~が存在しないならば~x\geqq y~である \]

 この命題の \(x,y,z\) に \(a,1,b\) を代入すると、 以下の命題が成り立ちます。

\[ a\lt b\lt 1~となる~b~が存在しないならば~a\geqq 1~である \]

 そして条件3.より、\(a\lt b\lt 1\) となる \(b\) は存在しないので、 \(a\geqq 1\) が導かれます。また、条件1.より \(a\leqq 1\) なので、 これを合わせると \(a = 1\) ということになります。 条件2.で \(1\) に最も近い数が複数あり得るか?と暗に仮定しましたが、 結局、\(1\) に最も近い数は \(1\) のみだったということです。

 つまり、全順序な数体が稠密性を満たすならば、 必然的に 0.999... = 1 になるということです。 0.999... = 1 の秘密は実数や有理数の稠密性にあったんですね。 したがって、もし考えている数が稠密性を満たさないならば、 0.999... < 1 となってもおかしくないということです。 10進表記などは正に稠密ではありません。

【補足】

 冒頭で 0.999... = 0.9999... = 0.99999... = … であると定義しているのは、 0.999... という表記の意味を定めるためです。 つまり、9 の部分の長さはいくらでも長くなり、事実上無限大であるということです。 無限小数展開と言ってしまえば簡単ですが、そういうわけにもいきません。 何故かというと、このセクションでの 0.999... 系の表記は、 「...」の部分を完全に 9 で展開することはできないからです。

 たとえ 9 を無限に並べたとしても完全に展開し切ることはできません。 常に「...」が最後に残ります。ここは超準解析的に考える必要があるのですが、 もし展開し切れたとするなら、 \(a\) = 0.999...9 であり、0.000...1 だけ 1 より小さいので、稠密性より、 \(a \lt b \lt 1\) を満たす \(b\) が存在することになり、条件3.に反します。 よって、最後の「...」を展開し切ることはできません。 ですから、0.999... を無限小数展開と呼ぶのは本来は正しくありません。 0.999... という何か新しい表記法を定義しているのだと思った方が正確です。

 もし、0.999... という表記の小数展開できた部分を無限小数と呼ぶのだとすると、 展開できていない部分と合わせてはじめて 1 になるのですから、 無限小数の部分は 1 より小さいということになります。 一部の初心者は無意識のうちにこの構造を感じ取っているのかもしれません。

 ちなみに、0.999... = 0.9999... = 0.99999... = … のように無限に続けられるという考え方の後ろには選択公理が潜んでいるようです。 述語論理のコンパクト性定理がそれです。

 このページでは、 0.999... という表記を色々な意味に解釈するので混乱するかもしれません。 この混乱が、 そのまま 0.999... = 1 の理解に対する混乱になっているとも言えるでしょう。

【稠密性】

 上記の証明より、 0.999... = 1 が成り立つには稠密性が重要な役割を果たしていることが分かりました。 ここでは、もう少し稠密性について掘り下げてみましょう。 念のため、稠密性をもう一度説明しておくと、 \(x \lt y\) を満たす2つの数の間には、\(x \lt z \lt y\) を満たす数 \(z\) が必ず存在するという性質です。

 はじめに、実数はなぜ稠密になるのかご存じでしょうか? 実数を定義する公理には、体と順序の公理に加えて、 次のような性質が公理として挙げられています。

  1. \(x \lt y~\Rightarrow~x + c \lt y + c\)
  2. \(x \lt y~かつ~c \gt 0~\Rightarrow~cx \lt cy\)

 ただし、\(x,y,c\) は任意の実数とします。残る公理はデデキントの切断ですね。

 性質1. 2.は、どちらも我々が実数の計算をするときによく使う基本的な性質です。 これが成り立たないと、ほとんど計算らしい計算はできないと言ってもいいでしょう。 この性質から、以下のようにして稠密性が導かれます。

 まず、性質1.より、 \[ x \lt y~\Rightarrow~x + x \lt x + y \lt y + y \]  次に、性質2.より、 \[ x \lt y~\Rightarrow~\frac{x + x}{2} \lt \frac{x + y}{2} \lt \frac{y + y}{2} \]  つまり、 \[ x \lt y~\Rightarrow~x \lt \frac{x + y}{2} \lt y \]  となり、実数が稠密であることが分かります。

 このことから分かるのは、素人が実数を独自解釈して特殊な数を考え出したとしても、 普通の計算法則を満たす限りは稠密性からは逃れられず、 ほぼ間違いなく 0.999... = 1 になるということです。 0.999... = 1 を否定したいのなら、0.999... の解釈を変更するか、 四則演算をあきらめるくらいのことをしないとうまくはいきません。

 さらに、稠密性は実数の精度を落とす原因にもなっています。 最も精度の高い順序では、隣り合う点がピッタリとくっついている必要があります。 つまり、隣り合う点の間には他の点は存在しません。 例えば10進表記は正にそのような構造をしています。 10進表記では、0.999... < 1 ですが、 0.999... と 1 の間には他の点は存在しません。 まあ、隣り合うのだから当然ですけど。 10進表記の精度が実数よりも高いのは稠密性が成り立たないからです。

 このことから、単純な無限列つまり生の 0.999... 等の集まりでは、 稠密性は実現できないことが分かります。よって、 単純な無限列を同値類に分類するのような操作をしないと稠密性は実現できません。 しかし、0.999... = 1 を主張する人の多くがそこには触れません。 これが、0.999... = 1 が理解されにくい一因になっています。

 これは私の推測ですが、同値類を使って実数の稠密性を実現することは、 \(\lim\) の計算の精度を決めることにもなっていると思います。 稠密性から 0.999... = 1 が導かれることが、 \(\lim\) の振る舞いを規定することになっていると思います。

 さて、締めくくりに稠密性と図形の関係に触れておきましょう。 稠密性を導いた性質1.と性質2.は、図形の平行移動と拡大縮小に関係する公理です。 長さや面積といった量は平行移動しても不変であり、 拡大縮小しても相似の関係を保つということです。 つまり実数とは、 図形的直観を自然に表現できるよう絶妙にデザインされた数なのです。 0.999... = 1 はそうした図形的直観と深く結びついた性質なのですね。 興味のある人はルベーグ積分など測度の話を調べてみると面白いですよ。 例えば、0.999... 等の表記も一種の図形と見なすことができます。 なので、実数の精度が低いのは零集合と関係していると私は思っています。

【無限小数の無限の意味】

 実数において 0.999... = 1 となる理由は上記の証明で分かったと思います。 ここでは、補足説明として 0.999... が無限に長く続くとは、 実はどういう意味なのかを説明したいと思います。

 0.999... < 1 派の人の思い込みを分析してみると、 0.999... の解釈の仕方が複数あることが見えてきます。 そして、0.999... = 1 派の人は1つの解釈のみを正しいとして譲らないため、 議論が嚙み合わなくなって平行線に終わるというやり取りを繰り返しているようです。 そういうわけで、 以下では、0.999... の解釈がどんな構造を取り得るのかを見ていきましょう。

 0.999... = 1 に今一つ納得できないのは、 0.999... が無限に長く続くとはどういう意味なのか、 実はよく分からないのが原因の一つでしょう。 無限という言葉を額面通りに受け取ると意味不明になってしまいます。 そこで、\(a = 0.999\ldots\) として、\(a\) の長さが無限に長いとは、 実はどういうことなのかを有限な式で具体的に定義してみましょう。

 まず、\(f(x) = 10x - 9\) という関数を考えます。 \(f(x)\) に \(0.9999\) を渡すとこうなります。 \[ f(0.9999) = 9.999 - 9 = 0.999 \] 1桁短くなりましたね。これを繰り返すと、\(f(0.999) = 0.99,~f(0.99) = 0.9\) という風にどんどん短くなります。つまり、0.999...9 のような有限小数に \(f(x)\) を適用すると必ず1桁短くなるということです。したがって、 \(S=\{0.9,0.99,0.999,\cdots,a\}\) と定めて \(x \in S\) の範囲で考えると、 \[ x~は有限小数~\Rightarrow~x \gt f(x) \] が成り立ちます。 ただし、\(x\) の値の表記には数字の \(0\) と \(9\) と小数点のみを使うとします。 ここで上記の関係の対偶を考えると、 \[ x \leqq f(x)~\Rightarrow~x~は無限小数 \] ということになります。また、\(S\) の全ての要素 \(x\) について \(x \lt 1\) かどうかは意見が分かれる所ですが、 \(x \leqq 1\) であることには議論の余地はないでしょう。すると、 \[ x \leqq 1 ~\Leftrightarrow~ 9x \leqq 9 ~\Leftrightarrow~ 10x \leqq x + 9 ~\Leftrightarrow~ x \geqq 10x - 9 \] となり、 \(S\) の全ての要素 \(x\) において \(x \geqq f(x)\) となります。 したがって最終的には、 \[ x = f(x)~\Rightarrow~x~は無限小数 \] が成り立ちます。 よってこれを \(a\) が無限に長いことの定義にしてしまいましょう。 つまり、\(a = 0.999\ldots\) が無限に長いとは、 \[ a = f(a) \] が成り立つことであると。実際、数学的に厳密な計算とは言えませんが、 \[ f(a)=9.999\ldots - 9 = 0.999\ldots = a \] となります。

 これで、\(a = 0.999\ldots\) が無限に長いとは実はどういう意味なのかハッキリしました。 \(a\) が実際に無限個の 9 で構成されているのを確かめるのではなく、 \(a = f(a)\) という有限な関係が成り立つとき、 \(a\) の長さは無限だと見なすわけです。すると、 \[ a = f(a) ~\Leftrightarrow~ a = 10a - 9 ~\Leftrightarrow~ 9a = 9 ~\Leftrightarrow~ a = 1 \] となって、\(a = 1\) であることが分かります。

 でも、こう反論されるかもしれません。 \(a = f(a)\) なら、いくら \(f(x)\) を適用しても \(a\) は短くならないから \(a\) が無限に長いのは分かった。 しかし、9 が無限に続いた果てに最後の 9 があったとするなら、 \(f(x)\) を適用すると1桁短くなるのではないか。 つまり、そのような \(a\) は無限に長くとも \[ a \gt f(a)~\Leftrightarrow~ a \gt 10a - 9~\Leftrightarrow~ 9a \lt 9~\Leftrightarrow~ a \lt 1 \] となって、無限に長いけれど \(a \lt 1\) になるのでは?

 はい、そうですね、上記の説明では、 \[ x~は有限小数~\Rightarrow~x \gt f(x)\ \] が成り立つことは示していますが、 \[ x \gt f(x)~\Rightarrow~x~は有限小数 \] が成り立つことは示していません。 つまり、\(a \gt f(a)\) のときに \(a\) が無限に長い小数になる可能性があり、 \(a\) が無限に長いのに \(a \lt 1\) となる可能性を排除できません。 実は、話を実数や有理数に限定すれば、 「\(x \gt f(x)~\Rightarrow~x~は有限小数\)」が成り立ちます。よって、 \(a\) が実数なら \(a\) が無限に長いの意味は \(a = f(a)\) に限定できます。 偉い数学者が実数とはそのようなものだと決めたわけです。 なので、素人が逆らうのはやめておきましょう。 実数のこのような性質をアルキメデスの性質と言います。

 しかし、9 が無限に続いた果てに最後の 9 があるのではないかという素人の直観も、 まったくのデタラメというわけではなく、ちゃんと数学的な根拠はあります。 9 が無限に続いた果てに最後の 9 があるような数のことを非アルキメデス順序体と言います。 実数を拡張して無限大や無限小を扱えるようにした超実数がその代表例です。

 このように、無限小数の無限の意味は少なくとも二通りあります。 一つは、最後の 9 という概念が無い無限です。 この無限は完全な小数展開ができません。常に「...」が最後に残ります。 最後の 9 は無いのですから。したがって、素朴な意味では小数ではありませんが、 アルキメデス性を仮定することで極限の意味の無限小数と同値になります。

 もう一つは、9 は無限に続いているけれど最後の 9 という概念がある無限です。 前者は本当に無制限という意味で無限の中の無限とでも言えばよいでしょうか。 後者は無限だけれども制限があるという意味で無限の中の有限と言えます。 0.999... = 1 に納得がいかない人が後を絶たないのは、 こういう事情があるからなんでしょうね。

【無限級数】

 無限小数の解釈として、 無限小数を素朴な意味での無限級数と考えている人をよく見かけます。 そして、0.999... と 9 を「無限個」並べれば 1 になるのだと主張します。 しかし、実数の体系内には無限は存在しないので、 無限級数という言葉を額面通りに受け取ると破綻した概念になります。 つまり、0.999... を \[ \frac{9}{10}+\frac{9}{10^2}+\frac{9}{10^3}+\cdots \] という等比級数と考えるとして、無限桁目って実数ですか?

 要するに、多くの素人が混乱する原因になっているのは、 0.999... と 9 が無限に続くと言われた段階で、 必然的に実数ではない数を考えざるを得ない状況に追い込まれるからです。 9 が無限に続くということはアルキメデス性を破壊することになります。 0.999... ≠ 1 となっても不思議ではありません。

 このあたりの事情をもっと詳しく知りたい人は、 神秘の無限和 を読んでみてください。

【零集合】

 ここでは、私がたぶんこうだろうと考えているアイディアを説明します。 0.999... という表記を図形であると解釈し、その値を測度と考えることとします。

 最後の 9 という概念が無い無限では、 そのままでは、0.999... を無限小数と考えることはできません。 つまり、\(\Sigma\) を使った和の形で表現することができないのです。 \(\Sigma\) を使った和は、終わりを明示しないといけませんが、 最後の 9 という概念が無い無限では、正に終わりを明示できません。

 強引に表現すれば、0.999... = \(\Sigma\)表記 + \(\alpha\) という形になりますが、 どんなに \(\Sigma\)表記 の部分を延長しても、例えば無限和まで延長しても、 \(\alpha\) の部分を無くすことはできません。最後の 9 は無いのですから。 無限小数とは \(\Sigma\)表記 のことであると考えるなら、 \(\alpha\) の部分が残る限り、0.999... を無限小数で表現できたことにはなりません。

 しかし、\(\alpha\) に目をつむれば無限小数と見なすことは可能です。 つまり、\(\alpha\) の測度は 0 であると見なせば無限小数と見なすことが可能です。 要するに、\(\alpha\) の部分を零集合と見なしてしまうということです。 零集合の部分は測度の観点からは無いのと同じなので、 実質として残るのは \(\Sigma\)表記 の部分のみとなり、 0.999... を無限小数で表現できたと考えることができます。

 まとめると、最後の 9 という概念が無い無限による解釈では、 \(\mu(x)\) が測度を表すとき、\(\mu(0.999\ldots) = \mu(\Sigma表記+\alpha) = 1\) かつ \(\mu(\alpha) = 0\) というファンタジーを用いることで、 0.999... を無限小数と考えることができます。

 ただし \(\alpha\) の部分は、\(\mu(\alpha) = 0\) を満たす限り、 必要に応じていくらでも大きくできるとします。

【最後の 9 は有るか?】

 0.999... = 1 教の信者は、よくこんな説明をします。 0.999... という無限小数には最後の 9 は無い、つまり 0.999... には終わりはない。 だから、0.999... = 1 になるのだと。この説明を何となく受け入れてしまって、 最後の 9 は無いに決まっていると信じている人は多いでしょう。 でも、よく考えると最後の 9 が無いという小数を具体的に構成できるでしょうか? 人間が 1 から作る小数というものには必ず終わりがあります。 つまり、最後の 9 が必ずあります。 最後の 9 が無い小数を作れと言われても、そんな方法存在しませんよね。 果たして、本当に 0.999... に最後の 9 は存在しないのでしょうか? ここでは、この最後の 9 の問題を掘り下げてみます。

 よく、無限大や無限小は存在しないと言われますが、 それは標準的な解析学においての話です。 0.999... の話をする場合、標準的な解析学だけで考えるのは不十分です。何故なら、 0.999... とは 9 を無限に並べた小数のことと解釈する人が多数いるからです。 標準的な解析学では、そもそも、9 を無限に並べることができません。 いくらでも長くできることを無限と見なすことで代用します。 本当に無限に並べるには超準解析のような非標準的な解析学が必要です。

 まず、標準的な解析学の話をしましょう。 実は、標準的な解析学には有限小数しか存在しません。 無限小数とは極限を使った単なる方便なのです。 無限小数は実際には有限小数の列を使って表されます。 そして、有限小数には必ず終わりが存在しますから、 個々の有限小数には最後の 9 が必ず存在することになります。 固定されたひとつの最後の 9 は存在しませんけどね。すなわち、 標準的な解析学には最後の 9 が無い無限小数という概念は厳密には存在しません。

 仮に、本当に最後の 9 が無い無限小数が存在すると仮定すると、 最大の自然数が存在することになってしまって矛盾します。詳しい話を知りたい人は 神秘の無限和 を読んでみてください。

 いまいち飲み込めないという人は、標準的な解析学では 0.999... が \[ 0.999\ldots = \lim_{n\to\infty}1-\frac{1}{10^n} \] という極限で表されることを思い出してください。 これは、実数のアルキメデス性を用いて 0.999... = 1 を示すことに相当します。 まさか、この式に納得できないということはないですよね。 そして、この式では必ず \(n\) 桁目という最後 9 が存在していることが分かります。 このケースで 0.999... = 1 になる理由は、 最後の 9 が無いからではなく \(\lim\) で丸めるからです。

 でも、 何とかして最後の 9 がない 0.999... を表現できないだろうかと思いますよね。 実は、こうやれば何とかなります。つまり、最後の 9 が無い 0.999... とは、 \[ 0.999\ldots = 0.9999\ldots = 0.99999\ldots = \cdots \] を満たす数のことであると定義してしまえば良いんです。 これは、実数の稠密性を用いて 0.999... = 1 を示すことに相当します。 え?インチキだって?まあ、そうですね。 この方法では 0.999... は小数展開できなくなります。 必ず最後に「...」が残りますから。 つまり、厳密には小数でないものを使えば、 最後の 9 が無い 0.999... を表現することは可能です。 普通の人が最後の 9 が無いと聞いて想像するものとはずいぶん違うでしょうけれど。 このケースで 0.999... = 1 になる理由は、正に最後の 9 が無いからです。

 ちなみに、「...」はいくらでも小さくなりますから、 アルキメデス性を仮定すると 0 になってしまいます。 よって、存在しないのと同じなので「...」をちょん切ってしまえば、 その切り口に最後の 9 が現れます。 これは上記の極限による 0.999... と同値です。 つまり、アルキメデス性による 0.999... と稠密性による 0.999... が絶妙につながっているというわけです。

 さて、次に超準解析では無限小数をどう考えるのか見てみましょう。 始めに、移行原理について説明しておきます。 移行原理とは、任意の有限な実数で成り立つ1階の論理式は、 任意の無限大超実数においても成り立つという法則のことです。 超実数とは実数を拡張した無限大や無限小を含む数体のことです。このとき、 有限小数の 0.999...9(9 が \(n\) 個)は、任意の有限な \(n\) に対して \[ 0.999\ldots 9 = 1 - \frac{1}{10^n} \] という1階の論理式を満たします。よって、移行原理により、 \(n\) が無限大超自然数 \(H\) の場合にもこの論理式は成立します。 つまり、0.999...9 は \(H\) 桁の 9 が並んだ小数と考えることができます。 \(H\) は無限大ですから、 これは極限とは異なり本当の意味で無限小数ということになります。 そして、その作り方から最後の 9 があることは明白です。

 このように、 無限小数 0.999... には最後の 9 が存在すると考える方が自然なことが分かります。 最後の 9 は無いという解釈も可能ですが、 多少アクロバチックなことをしないといけません。 特に標準的な解析学で小数と言えば本質的には有限小数しか存在しないので、 最後の 9 は有ると考える方が自然であることに十分注意すべきだと思います。

【デデキントの切断】

 もう一つ、実数の場合に 0.999... が 1 になる根拠を紹介しましょう。 実数全体の集合 \(R\) を2つの集合 \(A, B\) に分割することを考えます。 このとき、任意の \(x, y\) に対して \(x\in A\land y\in B\Rightarrow x\lt y\) が成り立つとき、この分割をデデキントの切断と言います。 ご存じの方も多いでしょう。

 実数に対してデデキントの切断を作ると、\(A\) に最大値があり \(B\) に最小値が無いか、\(B\) に最小値があり \(A\) に最大値が無いかのどちらかになると実数の公理で定められています。

 もし、0.999... という数が 1 より小さい数として存在しているとすると、 0.999... より大きく 1 より小さい数は存在しませんから、 1 を境にしてデデキントの切断を作ると、 \(A\) に最大値(0.999...)があり、\(B\) に最小値(1)があるという状態になります。 これは実数の公理に反するので、0.999... という数を 1 とは異なる数として考えることはできないということになります。

 この他、デデキントの切断は、 実数の位相構造を決定する重要な役割を果たしています。 つまり、実数の区間 \([a,b]\) を分割したとき、その切り口 \(c\) が \([a,c)\) と \([c,b]\) という端点の無い半開区間と端点のある閉区間になるというお馴染みの性質も、 デデキントの切断に関する公理から決まります。 つまり、開集合の補集合は閉集合であり、 閉集合の補集合は開集合であるということです。 何でもないようなデデキントの切断ですが、 位相構造を決めるということは、収束の意味を決めることでもあります。 0.999... が 1 に収束するという性質も、この位相構造から決まります。

【無限等比級数による証明】

 \(0.999...=1\) の典型的な証明を紹介しておきましょう。 この方法は、厳密には正しい証明ではありませんが、 \(0.999...\) を無限等比級数と見なした上で、 極限の線形性を用いることで正当化することが可能です。 \[ \textrm{(証明-1)}~~~~ \begin{eqnarray} x & = & 0.999\ldots\\ 10x & = & 9.999\ldots\\ 10x - x & = & 9.999\ldots - 0.999\ldots\\ 9x & = & 9\\ x & = & 1 \end{eqnarray} \]

 この証明には問題があります。 上記の証明には無限に続く数の掛け算や引き算が、 何のためらいもなく使われています。無限に続く数の四則演算が、 有限な数の四則演算と同じような結果になる保障など何処にもありません。 そもそも、無限に続く数の四則演算が可能なのかすら怪しいです。

 こういう時は、まず有限な式で近似して、その後、 近似の精度を無限に上げていくのが正しいアプローチです。すると有限な近似は、 \[ \begin{eqnarray} x & = & 0.999 \\ 10x & = & 9.99 \\ 10x - x & = & 9.99 - 0.999 \\ 9x & = & 8.991 \\ x & = & 0.999 \end{eqnarray} \]  となります。当たり前の結果しか出ていませんね。 ここで、近似の精度を無限に上げると、 \[ \begin{eqnarray} x & = & 0.999\ldots \\ 10x & = & 9.999\ldots \\ 10x - x & = & 9.999\ldots - 0.999\ldots \\ 9x & = & 8.999\ldots \\ x & = & 0.999\ldots \end{eqnarray} \]  となって、\(x = 0.999\ldots\) でしかありません。 つまり、小学校か中学校で習う循環小数を分数に直す方法は、 実は誤魔化しだったのです。 循環小数を分数に直す計算は、\(9.999\ldots - 0.999\ldots = 9\) が成り立つというもっともらしい誤魔化しがあるからうまくいったのです。 この誤魔化しをして良いのは \(0.999\ldots\) を極限の意味で解釈した場合ですが、 小学生や中学生がそれを知るはずもありません。 しかも、皮肉なことに誤魔化しの方が圧倒的に計算が簡単で実用的です。 結局、極めて便利だからと誤魔化しが大目に見られているだけなのです。

 有限で近似してから無限に精度を上げるという正しい手順を踏んでみると、 循環小数を分数に直す計算が誤魔化しであることが分かりますが、 みなさんは誤魔化しであることを知っていましたか? 実は、私はとあるサイトの説明を見るまで知りませんでした。 たぶん、ほとんどの人が学校で習ったからと信じ切って、 誤魔化しの方が正しい計算だと思っていたのではないでしょうか? これは恐ろしいことですよね。 こんなにも明確な誤魔化しが正しくないことに気付けない。 これは、学校が必ずしも正しいことを教えてくれないこと。 そして誤魔化しを見破ることが極めて難しいという重い教訓でしょうね。 そう考えると、この誤魔化しに違和感を表明し、 0.999... ≠ 1 だと主張する人達に対する印象も変わるのではないでしょうか?

 それでも、まだ往生際悪く、\(8.999\ldots=9\) だから、 間違いは教えていないだろと反論する人もいるかと思います。 しかし、いま証明しようとしていることが \(0.999\ldots=1\) であったことを思い出してください。 \(0.999\ldots=1\) を証明するのに \(8.999\ldots=9\) を認める必要があるということは明らかな循環論法です。 つまり、極限の計算方法を知らない小学生や中学生にとっては、 (証明-1) は証明になっていないのです。

 さて、話を戻しましょう。(証明-1) を正当化するには、\(0.999\ldots\) を以下のような等比級数の極限と解釈すれば正しい証明になります。 \[ S_n=\frac{9}{10}+\frac{9}{10^2}+\cdots+\frac{9}{10^n} \] \[ 0.999\ldots = \lim_{n\to\infty}S_n \]

 \(0.999\ldots\) を極限と解釈すると極限の線型性が使えるようになります。 つまり、\(a_n, b_n\) が収束する時、\(\alpha a_n + \beta b_n\) も収束して以下の等式が成り立ちます。 \[ \lim_{n\to\infty}(\alpha a_n + \beta b_n) = \alpha(\lim_{n\to\infty}a_n) + \beta(\lim_{n\to\infty}b_n) \]

 ここでは、\(S_n\) が収束(絶対収束!)するものと仮定しましょう。 収束しないと、無限小数が実数を表していないということになってしまうので、 当然といえば当然ですね。すると、極限の線型性を使うことができ、 上記の \(0.999\ldots=1\) の証明が正当化できて以下のようになります。 \[ \begin{eqnarray} x & = & 0.999\ldots\\ x & = & \lim_{n\to\infty}\frac{9}{10} + \frac{9}{10^2} + \cdots + \frac{9}{10^n}\\ 10x & = & \lim_{n\to\infty}9 + \frac{9}{10} + \cdots + \frac{9}{10^{n-1}}\\ 10x - x & = & \lim_{n\to\infty}9 - \frac{9}{10^n} ~~~~~~~~ (絶対収束より)\\ 9x & = & 9\lim_{n\to\infty}1 - \frac{1}{10^n}\\ x & = & \lim_{n\to\infty}1 - \frac{1}{10^n}\\ x & = & 1 \end{eqnarray} \]  あるいは、 \[ \begin{eqnarray} x & = & 0.999\ldots\\ x & = & \lim_{n\to\infty}\frac{9}{10} + \frac{9}{10^2} + \cdots + \frac{9}{10^n}\\ 10x & = & \lim_{n\to\infty}9 + \frac{9}{10} + \cdots + \frac{9}{10^{n-1}}\\ 10x - x & = & \lim_{n\to\infty}9 - \frac{9}{10^n} ~~~~~~~~ (絶対収束より)\\ 10x - x & = & 9\\ 9x & = & 9\\ x & = & 1 \end{eqnarray} \]  とすれば、循環小数を分数に直す計算の手順になりますね。

 無限等比級数による \(0.999\ldots=1\) の証明は、 \(0.999\ldots\) を絶対収束する等比級数の極限と解釈した上で、 イプシロン-デルタ論法により、 極限の線型性を証明しないと本当は十分ではないわけです。 こんな初等的なことを証明するのに、 絶対収束するという概念まで導入しないと十分ではないというのは驚きですね。まあ、 有限級数で近似してから極限で無限に精度上をげれば、 絶対収束の概念は回避できますけれど。

 ところで、上記の証明の正当化をよく見ると、最後の結果の一歩手前が \(\displaystyle x=\lim_{n\to\infty}1-\frac{1}{10^n}\) となっています。 そして実数では \(\displaystyle\lim_{n\to\infty}\frac{1}{10^n}=0\) なので最後の結果が \(x=1\) となっていることが分かります。 これに限らず、 \[ 1 = \lim_{n\to\infty}1-\frac{1}{2^n} = \lim_{n\to\infty}1+\frac{1}{n} = \lim_{n\to\infty}1-\frac{1}{n^2} = \cdots \]

 などなど、\(\lim\) の中に細かい構造があったとしても無視され、 まるで四捨五入でもするかの如く丸められて \(1\) になってしまいます。 この \(\lim\) の四捨五入のような性質のおかげで、 実数の世界に無限小が漏れ出してくるのが防がれています。 無限大の方は発散するという扱いで切り抜けます。

 一方で、\(\lim\) の中の話を考えると、そこは特別な空間になっていて、 無限大や無限小を実数のように扱うことができます。 もちろん、最終的にはイプシロン-デルタ論法に翻訳して考えるのですが、 直観的に解釈すれば、 \(\displaystyle\left(1-\frac{1}{10^n}\right)_{n\to\infty}\) は \(1\) よりほんの少し(無限小)だけ小さいということになります。

【アルキメデス性による証明】

 0.999... = 1 教と 0.999... ≠ 1 教の争いは、 いつ始まったのか分からないほど長きにわたりますが、 かつては、0.333... = 1/3 だから 0.333...×3 = 1 で 0.999... = 1 であるとか、 \(x = 0.999\ldots\) とすると \(10x - x = 9\) で \(9x = 9\) だから \(x = 1\) であるなどの証明が盛んに唱えらていました。今でも主流はコレでしょうね。 おっと、1 - 0.999... = 0.000... だから 1 = 0.999... を忘れてました。

 しかし、 上記のような証明は数学者に言わせれば証明になっていない代物なのだそうで、 さすがに現在では、厳密な証明ではないので信用できないという評判が 0.999... ≠ 1 教の闘士の間にも共通認識として広まりつつあります。 つまり、いまだにこんなことを言っている 0.999... = 1 教の信者は、 もうまともに 0.999... ≠ 1 教の闘士に相手にしてもらえなくなりつつあります。

 もちろん、0.999... = 1 教の闘士も手をこまねいて見ていたわけではなく。 ちゃんと証明になっている説明を普及させようとしているようです。 なかなかよくできた証明なので、ここで紹介しましょう。

 まず、\(x = 0.999\ldots\) であるとして、 \(0.9 \lt x\)\(,~\)\(0.99 \lt x\)\(,~\)\(0.999 \lt x\)\(,~\)\(\ldots~\)\(,~\)\(x \leqq 1\) を満たす実数と定義します。この定義は誰しも問題なく受け入れられますよね。 ここでもし、\(x \lt 1\) と仮定するなら \(1 - x \gt 0\) のはずなので、 \(n\) が十分に大きな自然数なら \(1 - x \gt 1/10^n\) とすることができます。 この式を移項して変形すると、\(1 - 1/10^n \gt x\) になります。 \(1 - 1/10^n\) は \(0.999\ldots 9~(9~が~n~個)\) なので、 定義より、\(x\) より小さいはずです。つまり、\(x \gt 1 - 1/10^n \gt x\) であり、\(x \gt x\) となって矛盾します。 したがって \(x \lt 1\) という仮定が誤りであり、 背理法により、\(x \geqq 1\) となります。一方、\(x \leqq 1\) であると定義したので、 これと合わせると \(x = 1\) となります。

 なるほど、難しい考え方は一切用いず分かりやすく証明できていますね。 肝は、十分大きな \(n\) を取るところで、 ここで実数のアルキメデス性を用いています。

 特筆すべきは、0.333...×3 = 0.999... だとか、 0.999...×10 = 9.999... だとか、9.999... - 0.999... = 9 だとか、 1 - 0.999... = 0.000... のような無限に続く数の計算が全く無いことです。 これまで論理的飛躍だと疑問視されていた問題点を見事に回避しています。 この方法で説得されたら、0.999... ≠ 1 教の信者も 0.999... = 1 教へ改宗しちゃうかもしれませんね。 それでもがんばる 0.999... ≠ 1 教の闘士のみなさんは、\(\lim\) の中では、 いくらでも大きくなる数や小さくなる数があるからアルキメデス性は破れている! と反論すれば、まだ自分を見失わずに戦えるかもしれませんよ。

【0.333... = 1/3 は正しい?】

 0.999... = 1 の証明はいくつかありますが、 その中に、0.333... = 1/3 だから 0.333... × 3 = 1 で 0.999... = 1 というものがあります。これを信じている人も多いでしょう。 でも、この証明は 0.999... < 1 である可能性がある段階では単なるデタラメです。詐欺と言ってもいいでしょう。

 よく考えてみてください。0.999... = 1 に納得のいかない人は、 0.9 < 1 だし 0.99 < 1 だし 0.999 < 1 だから、 9 が無限に続く 0.999... も 0.999... < 1 だと思っているのではないでしょうか? 同じことを 0.333... でもやってみてください。 0.3 < 1/3 だし 0.33 < 1/3 だし 0.333 < 1/3 だから、 3 が無限に続く 0.333... も 0.333... < 1/3 とならないと筋が通りません。0.333... < 1/3 なのですから、 それを 3 倍しても 0.333... × 3 < 1 であり、 0.999... < 1 という結論になります。

 この詐欺のトリックは、1/3 は実際に筆算で計算してみた経験のある人が多いが、 0.999... が結果になる筆算をやった経験のある人は少ないことを悪用しています。 実は、1/1 を筆算で計算するとき、少しやり方を変えると 0.999... が導かれます。 筆算で納得できるのなら、そもそも 0.333... = 1/3 を使う必要はありません。

 しかし、よく考えてみれば筆算は有限な計算なので、 筆算で言えることは 0.333...3 < 1/3 でしかありません。 皆さんも、必ず有限桁で計算をやめるでしょ? つまり、0.333... = 1/3 である保証は筆算では得られないのです。 ここは是非慎重に考えていただきたい。 筆算の結果が正しくなる保証があるのは割り切れるときのみです。 割り切れないとき無限に計算を続ければ正しい結果になるかどうかは、 筆算だけでは確認のしようがありません。 何故って、0.333... × 3 を筆算では計算できないからです。

 え?筆算では計算できないけど、繰り上がりがないから 0.999... に決まってるって? まあ、それは認めても良いですけど、 それって、0.333... = 1/3 の証明にはなってないですよね。 だって、0.999... = 1 はまだ証明されてないのですから。 どうでしょう。何となく問題の構造が見えてきましたか?

 結局、自分でやってみたことのあることは無批判に信じやすいということです。 しかし、0.333... = 1/3 を使った証明は数学とは言えません。トリックです。 0.333... = 1/3 が成り立つ根拠を十分に示さないままでは、 はじめから 0.999... = 1 であることを使って 0.999... = 1 を証明するようなものです。 皆さんもだまされないようにしましょうね。

 ちなみに、0.333... を分数に直せば 0.333... = 1/3 を正しく証明できますが、その計算過程は、既に説明した 無限等比級数による証明 すなわち、0.999... = 1 の証明そのものです。これでは、 0.333... = 1/3 を用いて 0.999... = 1 を証明する意味がありませんよね。

 もちろん、0.999... = 1 の通俗的な証明の全てがデタラメや詐欺というわけではありません。 無限等比級数の性質を使った証明は、 厳密さには問題があるとしても大筋において正しいものです。 循環小数を分数に直す方法としても用いられていますよね。 イプシロン-デルタ論法による収束の概念も、無理のない形で暗に織り込まれています。 0.999... × 10 - 0.999... = 9 がそれです。 0.999... = 1 に手っ取り早く納得したいなら、 無限等比級数を使った証明で納得しておくのが無難です。

【1 - 0.999... = 0.000... は正しい?】

 もう一つ、ありがちな 1 = 0.999... の証明の問題点を指摘しておきましょう。 その証明はこんな感じです。 1 と 0.999... の差を計算すると 0.000... となって、 いつまでも 0 しか出てこないので、0.000... = 0 である。 よって、1 - 0.999... = 0 となり、移項すると 1 = 0.999... である。 しかしこの証明、こう反論されるとぐうの音も出ません。 0 が無限に続いた果てに 1 が出てくるのではないか。 確かに、0.999... の 9 は無限に続くと言っているのですから、 0 も無限に続かないと話が合いません。1 が出てくるとするならその後ですね。 0 しか出てこないように見えるのは、0 の数が無限だからかもしれません。

 この証明は、 暗黙の裡に 1 が出てくるなら 1 の前には 0 は有限個しか続かないと仮定しています。 すると、0.999... の 9 も有限個だからおかしいというわけですね。 この仮定は実数では正しいのですが、 今考えている数が実数であることに言及しない人が非常に多いです。 実数のこのような性質をアルキメデスの性質と言います。 アルキメデスの性質を説明しないと、 1 の前に 0 が無限に続くのではと言う人を納得させるのは難しいでしょう。 アルキメデスの性質とは、実数では \[ \lim_{n\to\infty}\frac{1}{10^n} = 0 \] となるということです。しかし、それなら始めから \[ 0.999\ldots=\lim_{n\to\infty}1-\frac{1}{10^n} = 1 \] と説明する方が誤解が少ないのではないでしょうか。 どのみち、納得させようとして正確な話をすれば、 極限の話をしなければならないのですから。

 そういう意味では、無限等比級数を使って証明する方法も同じ問題を抱えていますが、 0.999... × 10 - 0.999... = 9 になることを認めないという人は、 相当重症の猛者でしょうね。

【神秘の無限和】

 ここでは、 理系の人なら普段何気なく使っているであろう無限和について掘り下げてみます。

 同値類で丸められた 0.999... の解釈はいったん忘れて、 0.999... という無限小数を次のような額面通りの無限和と解釈してみましょう。 \[ 0.999... = \sum_{n=1}^{\infty}\frac{9}{10^n} \]  おそらく、この解釈が一番メジャーな解釈ですよね。より厳密には、 \(\mathbb{N}\) を 0 を含まない自然数全体の集合として以下のように解釈します。 \[ 0.999... = \sum_{n\in\mathbb{N}}\frac{9}{10^n} \]  ところで、これをどう計算したらよいかご存じでしょうか? たぶん多くの人が、有限和を積み重ねていけば何れは無限和に到達するというようなちゃらんぽらんな理解をしているのではないでしょうか。 しかし、有限和の積み重ねで到達できるものは、どこまで行っても有限和です。 決して無限和になることはありません。

 つまり無限和とは、どのように計算すればよいのか全く分からない謎の計算なのです。 それでも、何か神秘の力で無限和が計算できるのだとしましょう。 このとき、次の計算を考えてみてください。 \[ N = \sum_{n=1}^{\infty}1 = \sum_{n\in\mathbb{N}}1 \]  無理だろ!と言いたいのは分かります。しかし、無限和が実行可能とするなら、 これも計算できるはずです。 ところが、\(N\) はその作り方から最大の自然数になっています。これは矛盾です。 また、\(N\) は計算できたとするなら有限ではありません。 つまり、無限和は実数のアルキメデス性を破壊してしまいます。 要するに、無限和とは本来実数の体系内では定義できない計算なのです。 無限和をどのように計算すればよいのか分からなかったのは偶然ではないのです。 したがって、無限小数も本来実数の体系内では定義できません。あろうことか、 無限小数という概念の一番メジャーな解釈が実数としては破綻しています。 信じられないかもしれませんが、これが現実です。

 にもかかわらず、多くの人が、 0.999... のことを神秘の無限和というイメージで理解しているのではないでしょうか? しかし、 無限小数は実数の体系内では定義できないのですから本来は実数ではありません。 繰り返しますが、 素朴な意味で、\(9/10^n\) を無限に足した結果としての実数など存在しません。 存在しないのですから、もちろん 0.999... = 1 でもありません。 それを無理やり理解しようとした初心者が、 無限小という量を考えてしまうのも当然なのです。

 でも、実際に無限和を考えるじゃないか。そしてその結果は 0.999... = 1 だろうと言いたいですよね。はい、おっしゃる通りです。 そこで、いよいよ同値類の出番というわけです。 無限和を習ったとき、つまり無限級数を習ったとき、 何か別の面倒くさいものも一緒に習いませんでしたか? そう収束条件というやつを習いましたよね。これが肝なのです。 0.999... の本当の姿とは実は \[ 0.999... = \lim_{m\to\infty}\sum_{n=1}^{m}\frac{9}{10^n} \] のことなのです。数学では、この手の記号の省略をよくやります。 つまり、 \[ \sum_{n=1}^{\infty}\frac{9}{10^n} = \lim_{m\to\infty}\sum_{n=1}^{m}\frac{9}{10^n} \tag{定義1} \] という置き換えを暗黙の裡に行う必要があります。 しかし、記号の意味を額面通りに受け取るなら、両者は全く異なる計算ですよね。 \(\lim\) の付いている方は厳密には無限和ではありません。 いくらでも長い有限和を考えたときの収束先を割り当てる計算です。 イプシロン-デルタ式に考えないとダメですし、 最終的な結果には同値類を適用する必要もあります。そして、 同値類のおかげで収束条件を満たすときには値が実数になることが保証されます。 同値類を適用して収束させないと、 イプシロン-デルタの世界においてもアルキメデス性は破れたままです。 「無限和」という概念は、 収束という概念があってはじめて実数の体系内で定義可能になるファンタジーなのです。

 つまり、無限小数という概念は額面通りに理解してはダメで、 同値類を含めたイプシロン-デルタ式に理解する必要があるのです。 この事実を知っているなら、 0.999...9 と途中で止めると 1 より小さいが、0.999... と無限に並べれば 1 になるのだという説明がずいぶんと乱暴な説明不足であることが理解できるはずです。 でも、その乱暴な説明をする人が多いというのが現実です。 たぶん、多くの人が無限和を神秘の計算と思っているのではないでしょうか。

 ところで、(定義1) に関して注意点があります。 (定義1) の左辺から右辺への置き換えは正しいですが、 右辺から左辺への置き換えは誤りであり決して行ってはいけません。 右辺から左辺への置き換えは、\(\lim\) を単なる和と見なしてしまうことになり、 極限の意味を誤解する原因になります。 実際、級数の極限を単なる和と誤解している人はかなりの数に上るでしょう。

 さて、イプシロン-デルタ論法で、 上記の \(N\) のような計算を考えたらどうなるのでしょうか。 イプシロン-デルタ論法では、\(N\) のような数をいくらでも大きくなる数と考えます。 特定の自然数に固定されていないので、最大の自然数になる矛盾は回避されます。 そして、そのような計算は発散するとして、実数の世界から取り除きます。 0 よりは大きいがいくらでも小さくなる数は、 先に説明した収束という概念で、実数の世界から取り除きます。

 つまり、イプシロン-デルタ論法は、 いくらでも大きくなる数や小さくなる数を \(\lim\) の中に閉じ込めて、 実数の世界をある有限な大きさの世界に収まるようにするのです。 計算のリソースに限りがある世界の中に収まるようにすると言えばよいでしょうか。 イメージとしてはコンピュータの CPU のビット数のような感じです。 コンピュータで表現できる数の範囲はある有限の大きさです。 その範囲の中で計算する限りは結果の正しさが保証されます。 イプシロン-デルタ論法は、リソースの限界そのものを理想化して、 CPU のビット数を任意に大きく設定できると考えた場合の世界と言えるでしょう。 それでもリソース限界に収まりきらないものは \(\lim\) の中に閉じ込めるのです。

【補足】

 額面通りの無限和で、\(N\) が計算できると矛盾が生じることから、 \(N\) を求める計算は未定義であるということにすれば、 額面通りの無限和が矛盾なく定義できるのではと思った人も居るでしょう。 ちょうど 0 による除算が定義できないという風に。

 しかし、\(N\) を求める計算は無限和には必須の計算であり、 未定義とするわけにはいきません。何故って、 1 を無限に足した結果が無限にならないとしたら、 何を根拠としてその計算を無限和と呼んでいるのでしょうか? 仮に、1 を無限に足した結果が有限だとしたら、それこそ矛盾ですから、 それは無限和ではありません。よって、無限和であることを確認するには、 \(N\) が計算できる必要があります。

 また、\(N\) は、 無限和を使った計算の結果を表現するための単位としての役割を果たします。 \(\infty\) は漠然とした記号に過ぎませんが、 \(N\) は細かい計算にも使える具体的な値です。つまり、無限和が計算できるとは、 \(N\) を使って計算結果が表現できるという意味なのです。 例えば、 \[ 1+2+3+\cdots = \frac{N(N+1)}{2} \] のように表現できます。

 したがって、\(N\) を求める計算を未定義とするなら、 無限和自体も未定義とするほかありません。

【驚愕の ...999 = -1】

 0.999... = 1 は有名ですよね。ところで、0.999... = 1 と同じ論法を使うと ...999 = -1 が証明できることはご存知でしょうか?例えば、以下のようになります。

\[ \begin{eqnarray} x & = & \cdots999\\ 10x & = & \cdots990\\ 10x - x & = & \cdots990 - \cdots999\\ 9x & = & -9\\ x & = & -1 \end{eqnarray} \]

 この証明は、無限に続く数の四則演算の意味を厳密には考えていません。 また、実数の極限で考えれば、...999 は無限大に発散するはずです。 ところが、ある解釈の下では、...999 = -1 を導くことができるのです。 ちょっとやってみましょう。

 実数を拡張して無限大や無限小を扱えるようにした数体に超実数があります。 この超実数を扱う分野を超準解析と言います。 まず、超実数で、0.999... の解釈を考えます。実は色々な解釈が考えられ、 解釈によっては、0.999... < 1 だったり 0.999... = 1 だったりします。 これらの解釈のうち、無限大超自然数 \(H\) 桁目で 9 が打ち止めとなる解釈、 つまり、9 は無限に続いてはいるけれど、 限りなく続いているわけではない解釈を採用すると、0.999... < 1 となります。 9 が打ち止めになるので、これは、1 以下の数で 1 に最も近い数ではありません。 なので、上記 0.999... = 1 の証明とも矛盾しません。

\[ 0.999\ldots = 1 - \frac{1}{10^H} = \frac{9}{10}+\frac{9}{10^2}+\cdots+\frac{9}{10^{H-1}}+\frac{9}{10^H}\lt 1 \]

 念のために言っておきますが、\(H\) は無限大超自然数です。 ですから、これは有限桁の \(H\) で打ち止めになっているのではなく、 無限桁の \(H\) で打ち止めになっています。ややこしいですね。 このように、有限の実数の式で成り立つ関係が、 無限大超実数でも成り立つことを移行原理と言います。

 さて、ここからの話は、超準解析に大して詳しくもない筆者の独自解釈です。 正式な超準解析の説明になっていませんのでご注意ください。

 上記のように解釈すると、 0.999... が2つの部分 \(a, b\) に分解できることが分かります。

\[ a = \frac{9}{10}+\frac{9}{10^2}+\cdots \] \[ b = \cdots+\frac{9}{10^{H-1}}+\frac{9}{10^H} \]

 \(a\) は普通の実数の部分、\(b\) が無限小の部分です。 \(a\) は実数で考えた時の 0.999... ですから、1 になると考えられます。 ですから、b は以下の関係を満たすはずです。

\[ b = \cdots+\frac{9}{10^{H-1}}+\frac{9}{10^H} = -\frac{1}{10^H} \]

 ここで、\(b\) を \(10^H\) 倍してやると、

\[ 10^H b = \cdots+900+90+9 = \cdots 999 = -1 \]

 このように、...999 = -1 が導かれます。しかしながら、正式な超準解析では、 \(a\) や \(b\) は数としては認められていないそうです。 \(a\) や \(b\) は超準解析の意味では極限になりません。 極限の半分という感じです。

 ちなみに、以下の等比級数の無限和の公式

\[ 1 + r + r^2 + r^3 +\cdots = \frac{1}{1 - r} \]

 は、\(|r|\lt 1\) の時のみ正しいとされていますが、 上記の解釈を踏まえて考えると、

\[ \cdots 999 = 9\times(1 + 10 + 10^2 + 10^3 +\cdots) = 9\frac{1}{1 - 10} = -1 \]

となり、\(|r|\geqq 1\) の場合にも成り立つと解釈できます。

 さらに、...999.999... = 0 であることを証明しておきましょう。 例によって、無限に続く数の四則演算の意味を厳密には考えません。 以下のようになります。

\[ \begin{eqnarray} x & = & \cdots999.999\cdots\\ 10x & = & \cdots999.999\cdots\\ 10x - x & = & 0\\ 9x & = & 0\\ x & = & 0 \end{eqnarray} \]

 0.999... = 1 で、...999 = -1 なのですから、 それらの和である ...999.999... が 0 というのは辻褄が合っています。 デタラメにしてはよくできているでしょ? この解釈を使うと、\(H\) を無限大超自然数とする時、 以下の関係が成り立つと解釈できます。

\[ \frac{9}{10}+\frac{9}{10^2}+\cdots +\frac{9}{10^{H-1}}+\frac{9}{10^H}+\frac{9}{10^{H+1}}+\cdots = 1 \]

 つまり、無限小のレベルでも 0.999... の 9 が限りなく続く場合、 すなわち、無限の先の \(H\) 桁でも 9 が打ち止めにならず、限りなく続く場合は、 0.999... = 1 と解釈できるということです。 限りなく続くという表現は正確ではありませんが、 要するに、超準解析の中で標準的な解析学の極限を考えるということです。 こちらの結果だけは、正式な超準解析でも認められているようです。

【超準解析】

 ここでは、0.999... = 1 の秘密を超準解析の視点から分析してみます。 まず、次のような有限和に関する公式を確認しましょう。 9 を \(m\) 個並べるとします。 \[ 0.999\ldots 9 = \sum_{n=1}^{m}\frac{9}{10^n} = 1 - \frac{1}{10^m}\tag{公式-1} \]  これは、帰納法を用いれば証明できます。 大事なことは、これは単なる有限和に関する公式なので、 イプシロン-デルタ論法の同値類による丸めの処理は含まれない生の結果だということです。

 一方、帰納法で証明できる事実は、 自然数の標準モデルのみならず超準モデルでも成り立ちます。 つまり、\(m\) は無限大でも成り立ちます。超準解析の視点から見れば、 移行原理で有限の (公式-1) が無限の世界にまで拡張されるわけです。 (公式-1) は、自然数の標準モデルの世界で証明されたにもかかわらず、 帰納法の力により超準モデルの世界をも貫く普遍的な事実に昇格されるのです。

 \(m\) は無限大でも良かったので、 \(m\) に任意の無限大超自然数 \(H\) を代入すると、 0. の後に 9 を \(H\) 個並べた数が \(1 - 1/10^H\) と表されます。 \(1/10^H\) は無限小になりますので、それを \(\varepsilon\) で表せば、 \(0.999\ldots = 1 - \varepsilon\) になります。 つまり、0.999... は 1 よりほんの少しだけ小さいということになります。

 これは、(公式-1) が同値類による丸めを含まない生の結果だからです。 イプシロン-デルタ論法における \(\lim\) の中の世界は、 ちょうどこの超準解析の世界と等価と見ることができます。 つまり、イプシロン-デルタの世界では直接的には無限小という量は扱いませんが、 実際には、微分を定義したりするときの \(\varDelta x\) のように間接的に無限小と見なせる数を考えます。 このような数に根拠を与えているのが超準解析であるということが言えます。

 イプシロン-デルタ論法と超準解析の同値性には、 例えば次のような極限の同値性があります。 それは、実数 \(a\) に対して、任意の無限大超自然数 \(H\) おいて数列 \(a_n\) が \(a_H = a + \varepsilon\) を満たすように無限小 \(\varepsilon\) を取れるなら、 \(\displaystyle\lim_{n\to\infty}a_n = a\) であるというものです。

 この同値性と (公式-1) を使えば、 実数の世界では 0.999... = 1 であることを以下のように示せます。 \(a_n=1-1/10^n\) のとき、 任意の無限大超自然数 \(H\) に対して \(a_H = 1 - 1/10^H\) が成り立ち、\(\varepsilon\) を無限小とするなら、 \(a_H = 1 - \varepsilon\) と表されますから、 \[ 0.999\ldots = \lim_{n\to\infty}a_n = 1 \] となります。つまり、\(\lim\) で丸めれば 0.999... = 1 という結果になります。

 整理すると、イプシロン-デルタの世界と超準解析の世界の間には以下の関係が成り立ちます。 \[ \lim_{n\to\infty}a_n = a ~\Longleftrightarrow~ a_H = a + \varepsilon \]  これを 0.999... に対して見てみると、 \[ \lim_{n\to\infty}a_n = 1 ~\Longleftrightarrow~ a_H = 1 - \varepsilon \] のように表されることとなります。 すなわち、0.999... = 1 も 0.999... ≠ 1 も同じことを違う視点で見ているだけなのですね。 今まで、0.999... = 1 以外にあり得ないと思っていた人は、 \(\lim\) の中の世界をうまく説明できなかったはずです。実際には、 \(\lim\) の中の世界は超準解析によって合理化されると理解すれば、 見て見ぬふりをしてきた心のモヤモヤから解放されますよ。

【自然数論の二重性】

 \(0.999\ldots\ne 1\) の問題を追っていくと、 自然数論の二重性の問題が見えてきます。 我々は普段、標準モデルと呼ばれる有限な自然数論を使っているのですが、 自然数論には超準モデルと呼ばれる無限大の自然数を扱えるモデルも存在しています。 そして、極限を取り扱うような場面では、つまり、\(\lim\) の中の世界では、 この超準モデルが有限の制限から解放されてその顔をのぞかせることになります。 つまり、自然数論は時に標準モデル、時に超準モデルという二重構造をしており、 これが \(0.999\ldots\ne 1\) が成り立つことの見通しを悪くしています。 ここでは、その問題の一端に焦点を当ててみましょう。

 まず、いくつか記号の準備をします。\(0.999\ldots 9\ne 1~(9~が~n~個)\) は \(1-1/10^n\ne 1\) と表すことができます。 そこで、\(P(n):=1-1/10^n\ne 1\) とおけば \(0.999\ne 1\) は \(P(3)\) と表すことができます。 つまり、\(9\) が \(n\) 個の場合に \(0.999\ldots 9\ne 1\) が成り立つことは \(P(n)\) で表すことができます。 \(P(n)\) は有理数の論理式ですが、適当に \(10^n\) 倍すれば、 自然数の論理式に翻訳できるので、 \(P(n)\) をそのまま自然数論の論理式ということにしましょう。

 これを使えば、\(n\) が \(0\) から \(2\) のとき \(P(n)\) が成り立つことを \[ P(0)~かつ~P(1)~かつ~P(2) \] と表記することができます。一般に \(0\) から \(k\) まで成り立つことは \[ P(0)~かつ~P(1)~かつ~\cdots~かつ~P(k) \] と表記することができます。

 ここで、帰納法を用いて \(P(n)\) が全ての自然数について成り立つことを証明したとしましょう。 この事実を表現しようと思ったら、 \(N\) を必要に応じていくらでも大きくなる数、つまり事実上の無限大として \[ P(0)~かつ~P(1)~かつ~\cdots~かつ~P(N) \] と表記するしかありません。 しかし、\(N\) は普通の意味では自然数ではありませんので、 このままでは問題があります。そこで、問題のある \(N\) は表記しないようにして \[ P(0)~かつ~P(1)~かつ~\cdots \] のように表すことが考えられます。実際には、この場合専用の記号があって、 \[ \forall n.P(n) \] と表記します。

 何が言いたいのかと言うと、全ての自然数について成り立つことを \(\forall n.P(n)\) と表記したとすると、表面上は無限大は見えませんが、 気持ち的には \[ P(0)~かつ~P(1)~かつ~\cdots~かつ~P(N) \] を表現しているのだということです。 したがって、「 \(\forall n.P(n)\) ならば \(P(N)\) 」となります。 そして、帰納法で \(\forall n.P(n)\) は証明できますから、 これと合わせると \(P(N)\) が成り立つことになります。

 ここで、\(N\) を任意の自然数と解釈すれば、\(P(N)\) は任意の有限個の \(9\) を並べた \(0.999\ldots 9\ne 1\) が成り立つことと解釈できます。 これは、もともとの \(\forall n.P(n)\) と意味的には同値です。 一方、\(N\) を無限大と解釈すれば、\(P(N)\) は無限個の \(9\) を並べた \(0.999\ldots\ne 1\) が成り立つことと解釈できます。 このように、\(\forall n.P(n)\) と \(0.999\ldots\ne 1\) は意味的に同値です。 違うのは、同じ \(P(N)\) をどう解釈するのかという視点の違いなのです。

 これは、代表的な自然数論の公理系であるペアノ算術が、 基本的には超準モデルに対する公理系になっているからです。 つまり、標準モデル(有限な自然数論)は超準モデル(無限大を含む自然数論)の特別な場合に過ぎないという扱いだからです。 特に帰納法により標準モデルで成り立つことは超準モデルでも成り立ちます。 したがって、ある論理式が任意の有限な自然数に対して成り立つなら、 自動的に無限大に言及する論理式に拡張されてしまうのです。

 このように、自然数論には二重性があります。 普通は標準モデルの有限な自然数しか見えませんが、 実は、薄皮一枚をへだてて超準モデルの無限大の自然数が隠れているのです。 そのため、自然数の集合を無限集合として扱おうとしたりすると、 隠れていた無限大が顔を出します。 例えば、自然数は全部で無限個あるので、無限番目の自然数を考えることができるが、 無限番目の自然数は有限ではないのではないかというような場合、 我々は無意識のうちに標準モデルからはみ出して超準モデルで考えているわけですね。

【無限公理】

 こうしてみると、自然数論は思いの外いびつな構造をしていることが分かります。 妄想をたくましくして私が考えるに。たぶん、集合論の無限公理が曲者なのでしょう。 無限公理とは、無限集合の存在を保証する公理で、 \[ \exists\omega(0\in\omega~かつ~\forall n(n\in\omega\rightarrow n+1\in\omega)) \] のことです。\(\omega\) が自然数全体の集合になります。 見ての通り、もろ帰納法そのものです。 本当は余計な要素を含まないように最小の \(\omega\) にしないとダメですけどね。 ともかく、自然数論の公理系を超準モデルを前提としたものにする必要があるのは、 おそらく、こいつのせいです。

 しかし、この無限公理、本当に正しいのでしょうか?私なんかは、 \(n\) がとてつもなく巨大になったら無限公理は成立しないような気がします。 形式的体系では \(n\) が際限なく巨大化しても無限公理は成立するわけですが、 意味論の世界、つまり、我々人間の理性や本能といったものが、 本当に形式的体系と同じになるでしょうか?

 例え話で説明するなら、数学における形式的体系とは、 物理学におけるニュートン力学みたいなもので、 人間の理性や本能といったものは、 相対性理論や量子論みたいなものなのではないかと思うのです。 つまり、形式的体系は比較的小さな数の場合に成り立つ近似であって、 人間の理性や本能といったものは、そんな風に理想化されてはいないだろうと。 だって、私はどうあがいたって、 この宇宙に存在する全ての素粒子の数を数えろと言われたって無理ですから。

 量子力学では、 観測対象と観測者の両方を考慮しないと本当のところは分からないのだけれど、 仕方なしに観測対象だけを部分系として考えるようなことをするそうです。 聞きかじった知識なのでデタラメだったらごめんなさい。 宇宙全体の素粒子の数を数えるという問題などは、 まさに、観測者が観測対象に含まれてしまっているわけで、 果たして、従来の形式的体系で本当のところが分かるのか、 そこはかとない不安を感じます。

 例えば、自然数全体の個数を自然数で数えることを考えるとよいでしょうか。 何となく観測者が観測対象に含まれるみたいな状況が再現されているように感じます。 ただしここでは、自然数に 0 が含まれることにしましょう。 自然数全体の個数を数えるには自然数がどうしても 1 個足りませんよね。 それでも、我々は自然数全体の個数というものを漠然と想像できます。 この直観というか本能のようなものは何なのだろうか? まあ、自然数に終わりはないのだから、 1 個足りないというのはナンセンスだという突っ込みが入りそうですが。 そのあたり、何やら 0.999... ≠ 1 の話に似ているような気がします。

【極限の誤解と 0.999...】

 実数の極限を誤解している人に極限のことを説明するのに、 数列 \(\{a_n\}\) の極限値のことを、 たどり着いた値ではなく目指す先の値であると説明しているのをよく見かけます。 例えば、0.999... は 0.9, 0.99, 0.999, ... の極限であり目指す先は 1 であると。 私も、そのように考えていたのですが、 最近になって、この説明では確かに分かり難いかもと思うようになりました。

 目指す先と言うからには、 何事もなく順調に進めば何れは極限値に到達すると感じます。 もし、順調に進んでも到達できないのであれば、 何を根拠として目指す先と言っているのかという疑問がわきます。 常識的に考えれば、 到達できる可能性がわずかでもあるからこそ目指す先と言えるのであって、 決して到達できないことが分かっている場合、 その方法は「目指す先」を目指しているとは言えないでしょう。 たどり着かない方法を目指す方法というのは、よく考えると不自然です。 その「目指す先」は本当に目指す先でしょうか? 日常的文脈なら、 決してたどり着かないけれど気持ちとしては目指しているというのもありでしょうが、 数学の文脈で、気持ちとしては目指しているでは根拠にならないでしょう。 それに、目指す先が無理数だった場合、無理数の存在をどう保証するのか? ということにもなりますよね?

 そもそも、0.999... と 1 が等しくないと思う人にとっては、 目指す先とは 1 ではなく 0.999... そのものでしょう。 そして、単調増加で上に有界な数列の場合、 まさしく、順調に進んでも決して極限値にはたどり着きません。 例えるなら、山のあなたになお遠く幸い住むと人の言う。と言ったところでしょうか。 数学に詳しくない人が聞いたら、 極限値とは何やら妖しげな桃源郷のようなものかと思われるかもしれません。

 つまり、物理的に考えれば、 0.999... と 9 が無限に続いた数すなわち無限小数などというものは本来は存在せず、 到達できない数であるにもかかわらず、 あたかも 9 を並べ終えたかのように目標地点に設定しているところに、 そもそもの無理があるのでしょう。 0.999... = 1 という式は 「存在しない数」 = 1 ということになり、 問自体がナンセンスなのです。正に桃源郷です。 そのため、極限値はたどり着いた値ではなく目指す先の値ということにしてお茶を濁しているのでしょう。 1 の場合は有理数なので、目指す先の値ということにしておけば何とか誤魔化せます。 無理数の場合、目指す先が無限小数にならざるを得ず、桃源郷を探す羽目になります。

 また、より巧妙な言い方に極限値とは近づく先のことだというものがあります。 距離を定義したところに工夫が見られます。 要するに、典型的なケースでは極限値に到達することをあきらめるのですね。 しかし、最終的に1つの値に到達しないのだとすると、 近づく先が複数あるんじゃないの?とか、 近づく先が固定されてないのでは?とか、 近づく先とはそのコーシー列自身しかないのでは?という疑問がわきます。 これは、有理数列の極限値で無理数を定義するときに困ったことになります。つまり、 近づく先ではあっても無理数の一意性が保証された目指す先ではないのかもしれない。 0.999... = 1 のような議論をするには近づく先だけでは不十分ですね。

 実際には、 実数の極限値とはコーシー列を限りなく近いという関係を使って同値類に分類したとき、 \(\{a_n\}\) を代表元とする1つの類のことであって、 厳密に言えば目指す先や近づく先のことではありません。というか、 この同値類が定義できてはじめて「目指す先」と見なすことが可能になります。 何を根拠として目指す先と言っているのか答えられるようになるということです。 ひょっとしたら、多少遠回りでもコーシー列や同値類という考え方を説明する方が、 どうしても 0.999... = 1 に納得できないという人には有効かもしれません。

 例えば、こんな説明が可能でしょう。 表現 0.999... とは長さを自由に設定できる有理数列 x = (0.9, 0.99, 0.999, ...) のことであり、 表現 1 とは x と同じ長さの有理数列 y = (1, 1, 1, ...) のことである。 2つの数列の長さを好きなだけ長く取るとき、x と y の右端の数の大きさを互いにいくらでも近づけられる場合は同類という関係で分類すれば、 x と y は同じ同値類に属しているというのが、 実数における 0.999... = 1 の大まかな意味なわけです。 このとき、x と y の属する同値類を実数の 1 と定義し、 0.9, 0.99, 0.999, ... の目指す先はその同値類と定義します。 そう、「目指す先」の意味を新たに定義し直し、 無限小数に有限的な解釈を与えるわけです。 厳密には、同値類を導く同値関係がきちんと成立するか確かめる必要はありますが、 それをクリアすれば、目指す先の一意性も保証できます。 でも、まあ、これでもきっと分からないと言われそうだな。

 ちなみに、これら同値類を実数として使うためには、 さらに同値類間に整合的な四則演算が定義できるか確かめる必要もあります。

 ところで、上記の「目指す先」の定義が何故妥当なのかというと、 以下のように考えられるからです。 数列の長さを好きなだけ長く取れるとは、 事実上その長さを無限大と見ることに等しく、 x と y の右端の数の大きさを互いにいくらでも近づけられるとは、 2つの数の距離が無限小と見ることに等しい。 このとき、同じ同値類に属するとは、 無限小の誤差は無視して同じと見なすことなので、 0.9, 0.99, 0.999, ... は無限の先で極限値 1 に到達したと見なせます。 つまり、この解釈を使えば、 0.9, 0.99, 0.999, ... は 1 に決してたどり着かない数列ではなくなるのです。 もちろん、ここで言う無限大や無限小はあくまで仮想的な例え話です。 いわゆる実無限が存在するわけではありません。

 超準解析における極限の説明は、この点においても優れています。 超準解析には無限が存在するので、 \(H\) を任意の無限大超自然数、\(a\) を極限値の実数、 \(\varepsilon\) を無限小とするなら、 \(a_H = a + \varepsilon\) となるとき、 数列 \(\{a_n\}\) は \(a\) に収束すると考えます。 そう、超準解析では極限を誤差を含んだたどり着いた値と考えるわけですね。 これは、素人が 0.999... = 1 に抱く疑念、 つまり、0.999... は 1 に限りなく近いが 1 ではないのではないか、 という直観そのものであるところが興味深いですね。 ただし、無理数の存在は初めから認めてしまわないといけません。 まあ、超実数は実数の拡張なので当然と言えば当然ですが。

 最後に、同じ極限でも、実数より細かい構造を見ることができる集合の極限で 0.999... を考えるとどうなるかを紹介しておきましょう。 0 以上の実数 \(x\) に対して \([0,x]\) という閉区間が対応しているとします。 このとき、次のような実数の閉区間 \(A_n\) を考えます。

\[ A_n = [0,1-\frac{1}{10^n}] \]

 つまり、

\[ A_0 = [0,0],~A_1=[0,0.9],~A_2=[0,0.99],~A_3=[0,0.999],~\ldots \]

 となります。各 \(A_n\) は \(0\) から \(\displaystyle 1-\frac{1}{10^n}\) に至るパスになっていて、それぞれ実数 \(\displaystyle 1-\frac{1}{10^n}\) と対応しています。 つまり、\(0.99\leftrightarrow A_2\) であり、 \(0.999\leftrightarrow A_3\) であり、 \(\displaystyle 0.999...\leftrightarrow \lim_{n\to\infty}A_n\) であるということです。 このとき、\(A_0\subset A_1\subset A_2\subset \ldots\) なので極限集合が存在して

\[ \lim_{n\to\infty}A_n = \bigcup_{n\in\mathbb{N}}A_n = [0,1) \]

 のようになり、何と \([0,1]\) にはなりません。半開区間の \([0,1)\) になります。

 要するに、実数より精度の高い実数の区間で 0.999... を考えると、 1 に対応する \([0,1]\) は目指していた先ではなかったということです。 目指していた先は半開区間の \([0,1)\) であり、 0.999... の極限値とされる 1 にはギリギリ届きません。 まあ、どちらの区間も実数の精度で見ると長さ 1 の区間ではあるんですけどね。 ただし、 集合の極限を目指す先の値と解釈するのが妥当かどうかは私には分かりません。

 このような状況も、素人が 0.999... は 1 よりわずかに小さいのではないか? と考えてしまう原因になっているのでしょうね。

【アルジャーノンに花束を】

 妙なタイトルをつけやがって、何なんだここは!と思った人、 すいません、単なるあとがきです。 さて、0.999... = 1 をめぐる様々な解説に納得していただけたでしょうか? このページでは、よくある 0.999... = 1 の解説とは異なり、 0.999... ≠ 1 も否定せず、解釈しだいでどちらも正解であることを示しました。 何故、そんなことをしたのかというと、 0.999... ≠ 1 と主張する人たちが変人扱いされ、0.999... = 1 が絶対の真理であるかのように宣伝されている風潮に違和感を覚えたからです。

 まあ、0.999... ≠ 1 と主張する人たちは、 往々にして支離滅裂な論理展開をする人で、 ある程度高度な論理展開をできる人たちからしたら突っ込みたくなる気持ちも分かります。 しかし、支離滅裂な人たちの直観が間違っているとは限らず、 ただ単に、自分の考えを正確な数学の言葉に整理することができていないだけで、 一面の真理を主張している人も居るように私は感じています。

 インターネット上で、0.999... = 1 が理解できない人に対して、 数学をあきらめろと言い放つ人を何人か見ました。 このような人が多数派であるとは思いたくありませんが非常に残念なことです。 0.999... = 1 という問題は決して簡単な問題ではありません。 例えば、0.999... = 1 だと主張する人ですら極限を誤解していることはよくあります。 容易には理解できないからと言って数学をあきらめる必要はありません。そして、 数学とは誰もが認める少数の仮定から誰もが納得できる結果を導くための学問であり、 相互理解のための道具です。 自分とは考えが違う人に数学をあきらめろと言うことは、 俺はお前を理解するつもりはないし、お前は誰にも理解されることはない。 と言っているのと同じです。なんと傲慢で残酷な宣言ではないでしょうか。 自分が理解されないでいる時に、 同じことを言われたらどう感じるかと想像する想像力は忘れないでほしいものです。

 私も若いころは、十分に論理的な思考ができず、 自分の考えを数学を専門とする人から否定された経験があります。 私は今でもその時の自分の考えは間違っていなかったと思っていますが、 十分な数学的訓練を受けていなかった私の説明は、 数学を専門とする人からしたら稚拙で検討に値するものではなかったのでしょう。 私が20代のころの話ですが50代になった今でも思い出してしまうのは、 その時の私が相当くやしい思いをしたからなのでしょうね。

 その後、私は数学を専門とする道には進みませんでしたが、 理系の人間だったので、数学の書籍はたくさん読んで悪戦苦闘しました。 そうこうするうちに、昔に比べれば格段に論理的思考ができるようになりました。 そしていつの間にか、0.999... ≠ 1 と主張する人たちを見て、 実数で考えるなら、0.999... = 1 に決まっているのにバカだなぁと心の中で見下すようになっていたのです。 そんな自分に気が付いた時、ハッとしました。 かつて数学を専門とする人から否定されてくやしい思いをしたはずの自分が、 今はくやしい思いをさせる側になってしまったのか。このままではいけないと。

 かつての私は、自分の考えを論理的に説明することはできませんでした。 しかし、今のお前なら、0.999... ≠ 1 と主張する人たちの考えを整理して、 数学の言葉に翻訳することもできるだろう。 神様にそう言われたような気がしたと言うとちょっと大げさかもしれませんが、 そういうわけでこのページを書いてみようと思い立ちました。 何より、これから老後へと突入し、知力の衰えていく私には、 今しか書く機会はないでしょうから。

 そうやって書き始めたこのページですが、無限級数のことについて調べてみると、 その教育方法に首をかしげるようなことがあり、これは、0.999... ≠ 1 と主張する人が次から次へと出てくるのも当然だなあと思うようになりました。 一方で、私みたいに細かいことはスルーしてしまう人は、 この数学教育の矛盾をうまくすり抜けてしまうんでしょうね。

 具体的には循環小数の教え方に問題があるように思います。0.333... という無限小数のことを小数点以下に 3 を無限に並べた小数(ただし、 同値類による丸めは無し)と認識している人は多いと思いますが、 これはどこで習うんでしょう?たぶん小学校か中学校でそういう風に習うんでしょうね。 もし、0.999... = 1 と教えるつもりであるのならば、 これは、明らかな嘘であり、それどころか、無限などという言葉を使っているので、 直観的に分かりやすいというわけでもありません。 標準的な小学生や中学生に無限を正確にイメージしてもらうのは無理というものです。 実際、無限に並べた小数という概念を正当化するには、 同値類による丸めが必要ですが、小中学生が自力で解決するのはほぼ不可能でしょう。

 こんな教え方をするより、 この問題の事情を理解している人達が指摘するように、 0.333... とは 0.3, 0.33, 0.333, ... と 1 ÷ 3 の筆算を繰り返せばいくらでも続けることができる状態のことで、 それは分数の 1/3 に近づいていくので、 近づく先が 1/3 という意味で 0.333... = 1/3 と書きますと教えれば良いんじゃないですかね。 筆算の余りがどんどん小さくなることから、 近づいていくことは比較的容易にイメージできるでしょう。 しかも、0.3, 0.33, 0.333, ... は全て有限小数ですから、 既に習ったことの応用で理解できます。 確かに多少まだるっこしいですが、無限という言葉を使うよりは具体的でしょう。 つまり、実際に手を動かして事実を確認することができます。 一方、無限と言われてしまうと、ほとんどの小中学生は、 そこで思考停止してしまうのではないでしょうか。

 そして、思考停止しなかった一部の人にとっては、 たとえ無限に繰り返そうと、筆算の余りは決して 0 にはならないことから、 小数点以下に 3 を無限に並べた小数(ただし、 同値類による丸めは無し)が 1/3 にならないことは明白です。 実際には、0.333... = 1/3 は受け入れるのに 0.999... = 1 は受け入れないという人が多いのですが、それはさておき、 1/3 にならないことは、筆算に移行原理を適用すれば分かります。 つまり、任意の有限小数 0.333...3 に対して 3×1/3 = 3×0.333...3 + (余り) が成り立ち、全ての場合で (余り) ≠ 0 なので、 0.333...3 が無限に長くなっても (余り) ≠ 0 になります。 なのに、無限に並べた小数が 1/3 などど明らかな嘘をどうして教えるのでしょう。 本当に、無限に並べた小数が 1/3 と教える方が分かりやすいでしょうか? 実際には、多くの人が誤解したまま分かったつもりになっているのだと思います。

 もちろん、極限を用いれば無限に並べた数を正当化できますが、 それでは上記の近づく先と教えるのと同じことですよね。 あえて誤解を誘発するリスキーな教え方をする必要はないでしょう。 何より、無限に並べた数とは正確には極限の意味だと後付けで誤魔化しても、 筆算で無限に並べることと極限の違いを自力で理解できる人はほとんど居ないでしょう。 理解できるのは、たぶん、数学科に進学するような人か、 たとえ理系でも一部の数学マニアくらいでしょうね。 何故そう思うのかというと、高校で習う無限級数でもまた、 無限に足すことと極限の意味を混同させるような教育が行われているからです。 無限に足した小数と極限の意味の無限小数は全く異なる概念なのですが、 それをきちんと説明する教育者は果たしてどれくらい居るでしょうか? それが面倒なら始めから近づく先と教えれば簡単ですよね。

 ひょっとしたら歴史的経緯で、 無限に並べると教えろと学習指導要領か何かで決まっているのかもしれませんが、 この教え方には問題があるでしょう。 それとも、無限に並べた小数などとは教えていないのに、 生徒が勝手に無限と受け取ってしまうのでしょうか。 そうだとすると、そのようなありがちな誤解をさせない工夫が必要ですね。

 0.999... ≠ 1 という誤解の問題は、 誤解する人個人の資質の問題として語られがちですが、実際には、 誤解をさせるような不適切な教育が行われていることの方が主な原因でしょう。 あるいは、典型的な誤解のパターンがあると分かっているのに、 それを解消しないまま放置したことが原因でしょう。それなのに、 どう教えても一部の学徒は 0.999... = 1 に納得してくれないと嘆く人も居たりします。 しかし、教えている内容に嘘や誤魔化しが含まれているのなら、 納得してもらえないのは、ある意味当然でしょうね。 勇気をもって、9 を無限に並べた小数と考えた場合は 0.999... ≠ 1 になってしまうから、 そう考えてはダメとはっきり事実を教えるべきと思います。 数学的に厳密ではないと懸念する人もいるかもしれませんが、 9 を無限に並べれば 1 になるという主張自体が、 極限で誤魔化すまでは厳密ではないので今更ですね。

 現状問題なのは、0.999... ≠ 1 という主張には間違っていると突っ込みが入るのに対して、9 を無限に並べた小数は 1 であるという同じく間違った主張は黙認されるという状況です。 これは多くの人の極限に対する理解をゆがめてしまっています。 同値類で丸めなければ 1 にはなりませんし、 9 を無限に並べた小数が実数にもならないのです。 この状況は少しずつでも変えていかねばならないでしょう。

 そんなこともあり、極々小さいページを作るつもりでいたのが、 あれもこれもと書いているうちに結構長いページになってしまいました。

 まあ、私が一方的に 0.999... ≠ 1 と主張する人の考えはこうだろうと決めつけて書いたページなので、 実際にはきちんと考えを汲み取れていないかもしれません。それでも、0.999... = 1 以外にあり得ないと思っていた人たちに問題提起することはできたと思います。 0.999... ≠ 1 と主張する人たちにも、 こんな整理の仕方もあるんだなぁくらいの気持ちで参考にしてもらえると、 このページを書いた甲斐があるというものです。