「高校範囲では実数同士の四則演算が成立することは証明していない」について

以下のようなツイートをしたところ、一部から反響がありました。


そこで今回はこの言葉の真意についてお話したいと思います。

はじめに

この言葉をポロッとこぼしたきっかけは以下のツイートでした。

この計算自体は数IIぐらいで習うものだと思いますが、確かにこの計算はいくつか気になる点があります。

  1. 無限に続く小数に対して「100倍=小数点を2つ右に動かす」と考えて大丈夫なの?
  2. 無限に続く小数同士で引き算して大丈夫なの?
  3. そもそも無限に続く小数って何?

他にもいろいろ疑問点が湧くかもしれません。しかし究極的には「実数って何だ?」というところに行き着くのではないかと思います。この記事では上記の3つの疑問点を軸にして、高校範囲でどのように実数を扱っているのかについて自分なりの考えをお伝えしようと思います。

「100倍=小数点を右に2個動かす」は無限小数にも成り立つ?

一般的な問題を考えるためには、手に馴染むような身近な例が役に立ちます。ちょうど 0.\dot{1}\dot{2} を使った話が出ていたので、これを使って考えてみましょう。

電卓で  4 \div 33 を計算してみます。すると電卓の窓には次のように表示されるでしょう。


0.1212121212...

まさに 0.\dot{1}\dot{2} と書くような数字が出ました。同じ要領でこれを100倍した  400 \div 33 を計算してみると...

12.12121212...

と表示されたと思います。確かに100倍すると小数点が2個動くというのは正しそうです。

もうすこしこの現象を詳しく観察してみます。4 \div 33 を電卓で計算すると 0.12121212... と出た訳ですが、どうやって計算したのでしょうか。これは「割り切れない割り算を永遠に続ける」というものによって生まれるものです。筆算で書くとこのような感じですね。

同じパターンが繰り返されるため、1, 2, 1, 2, ... と繰り返すことが分かるという寸法です。同様に 400 \div 33 の計算を考えると、十の位に1, 一の位に2が立ち、この時点であまりが4になります。ここまでの筆算はこんな感じですね。

ここから先は 4 \div 33 と同じパターンなので、1, 2, 1, 2,... と続くことがわかります。4 \div 33400 \div 33 の筆算の形を比較すると、この2つは小数点の位置だけの違いであることがわかります。当然、結果の無限小数も単純に小数点を2つ動かしたものになります。
同じ論法によって、有理数に対しては100倍が単純に小数を2個右に動かす操作に対応することが一般的に証明できます。小数が答えになる筆算は小学校で習うものですし、「無限に計算を続ける」という考え方が加わっているとはいえ、この程度であれば「高校範囲で証明完了している」と言ってよいと思います。

無限小数同士の引き算とは?

引き算の筆算の方を見てみましょう。

一見良さそうですね。こちらも小学校で習う筆算を利用して解釈してみようとするわけですが、一つ大きな問題があります。それは「筆算の引き算は一番下の位から順番に行う」という事実です。なんでわざわざ一番下の位から行うからというと、原因は繰り下がりです。上の位から「10を借りてくる」必要がある場合があり、そうするとより上の位での引き算の結果に影響を及ぼしてしまうからです。逆に言えば、「繰り下がりが起こらないことが保証されてさえいれば」別に上の位から引き算しても問題ないわけです。今回の場合はまさに繰り下がりが起こらないことが保証されているので、この寸法で計算できるというわけです。・・・というのでは満足できません。なぜなら、「繰り下がりさえなければ上から引き算を計算してよい」というのは有限の長さの小数を対象にしたルールであって、無限に続く小数についてはなにも言及していないからです。

じゃあ無限に続く小数の引き算って何だ?という問題に逆戻りする訳ですが、こういった掴みどころのない問題を議論するときには、「何を正しいとするか」をしっかり押さえることが大切です。無限小数に100を掛ける操作について議論したとき、無限に続く小数とは「割り算の筆算を永遠に続ける操作」と同一視していました。そこで、
①一旦無限小数有理数の形にしてしまい、
有理数同士の引き算を計算し、
③その結果を再度無限小数に戻す
という操作によって定義すれば、今回の引き算は定義できそうです。式で書くとこんな感じです。
12.\dot{1}\dot{2} - 0.\dot{1}\dot{2} := \dfrac{400}{33} - \dfrac{4}{33} = \dfrac{396}{33} = 12 = 12.\dot{0}
しかしこのルートにはいくつか議論の穴があります。

  1. 無限に続く小数は有理数に必ず直せるのか?
  2. 直せたとして、どんな直し方をしても結果は変わらないか?
  3. 筆算のルールの正しさはどうやって示すのか?

次節ではこれらの疑問について考えていきます。

そもそも無限に続く小数って何?

前節で出た最初の疑問「無限に続く小数は有理数に必ず直せるのか?」について考えてみましょう。答えだけいうと、高校で習うように「無限小数を分数の形に直せるための必要十分条件は、小数が循環すること」というものです。この主張は「有理数ならば小数に直すと必ず循環小数になる」「どんな循環小数でも、それを実現する有理数が存在する」の二段になっています。前者は読者の演習問題とすることにして(ヒント:整数同士の割り算の筆算をするとどこかで同じパターンがループすることを示しましょう)、後者について考えてみます。

「どんな循環小数でも、それを実現する有理数が存在する」は「どんな循環小数でも」という部分と「それを実現する有理数が存在する」という部分で構成されています。前半部分について深く考えてみると、実は高校数学でこっそり押し込められている闇が隠れていることがわかります。
私たちが人生で最初に循環小数に出会ったときは、おそらく整数同士の割り算を実行しているときでしょう。先ほど扱った「4 \div 33」かもしれませんし、「1 \div 3」かもしれませんし、「114514 \div 334」 かもしれません。これらの計算をすると「結果として」循環小数が現れているのを経験的に知っているわけです。これらの結果として現れる循環小数たちは、「無限小数」という言葉を使わずとも「割り算」という概念で捉えられる世界と紐付いているわけです。ところが「どんな循環小数でも」と言ったときはどうでしょうか。0.334334334... だったり 0.114514114514114514... だったり、こちらが用意した割り算を実行して出てきた訳ではないものたちを相手にするわけです。これらって意味をもつものなのでしょうか。いいえ、まだ割り算の結果として現れるかどうかが分かっていない、いわばただの記号の羅列なのです。つまり、「どんな循環小数でも、それを実現する有理数が存在する」を言い換えると「循環するように数字という記号を並べた対象は、割り算という手続きによって意味付けられるか」という問であるわけです。この意味付けがなされない限りは、数字の羅列は数字の羅列でしかなく、なんら意味を持たないものなのです。

そこで無限小数とは数字を無数に羅列したものであるという風に定義しておきましょう。

実を言うと、冒頭に紹介した無限小数の引き算を使った論法は、高校数学で「どんな循環小数でも、それを実現する有理数が存在する」の「証明」として与えられるものです。しかし「どんな記号の羅列でも」という見方に気づいてしまった以上、これらの間の引き算は「未定義」と考えるより他ありません。未定義操作を使って出てきたものが「証明」というのは議論として破綻しています。ただしひとつだけ、この論法を救う方法があります。それは「形式的操作」という考え方です。

無限小数同士の引き算を「形式的操作」として捉える。具体的には、前節で議論していた「有限桁同士の引き算で、繰り下がりがないことが保証されていれば、上の桁から順に引き算してよい」というルールを、無限小数に対しても適用します。するとあら不思議、結果として  a=12.1212... \Leftrightarrow 99a=12 \Leftrightarrow a=\dfrac{a}{33} という結果が出て、4 \div 33 を計算するとちゃんと 12.1212... が出てきます。つまり謎の引き算ルールを形だけ見てえいやと定めてみると、本当に欲しかった分数がなぜか手に入る という論法です。証明したいことは「それ(循環小数)を実現する有理数が存在する」ことでした。なので、どんな手を使ってでも、結果としてその循環小数を実現するような有理数を見つけられれば、それを発見した方法については最終的な主張の正しさに全く影響しないということになります。この立場を取ると、無限小数同士の引き算を使った計算は余白での計算でしかなく、証明としては「とある情報筋によるとこんな分数がありまして...ほらこれじゃん!」といった流れになります。(もし反響があればこの証明をまた記事として書こうと思います)

大方語り尽くしましたが、前節の残りの疑問にも答えていきます。2つ目の疑問「直せたとして、どんな直し方をしても結果は変わらないか?」については「2通りの直し方があったとして、それらは同じ値になるか」ということを示せばよいです。対偶をとって「値の異なる分数について、筆算を続けるとどこかでパターンが異なってくる」を示せば良いですが、これは値の差の大きさに応じて十分小さなくらいまで割り算を実行すれば示すことができます。ということで正しいことがわかりました。

最後に「筆算のルールの正しさはどうやって示すのか?」ですが、先ほどの立場では「分数を得る過程での引き算操作は、目的のものを得るための魔法の操作でしかなく、正しいも間違いもない」となります。しかしながら、すでに有理数との対応関係が分かっている循環小数同士の引き算なら話は変わります。先ほどの例だと「12.121212...=\dfrac{400}{33}」「0.121212...=\dfrac{4}{33}」が分かっているときに「\dfrac{400}{33} - \dfrac{4}{33} = 12(左辺は有理数としての引き算、右辺は魔法のルールで引き算)」となるかどうかは明らかではありません。これは今回の立場から示すのはあまりに技巧的になりすぎるので、最後におまけとして証明をつけておきます。

実数とその間の四則演算

ここまでやってくると、無限小数というのはかなり得体の知れないものということが分かってきたかと思います。循環する小数であれば、なんとか頑張って有理数と同一視することができた訳ですが、もはや循環しないものはやはり「数字という記号の羅列」としか言いようがないものだからです。でも高校範囲での実数は、まさにこういう記号の羅列でしかない「小数で表される対象全体」として「定義」されるのです。

得体が知れなさすぎるので、高校範囲までで有理数ではない実数として挙げられる代表的なものとして \sqrt{2} に注目してみましょう。無限小数で書くと

\sqrt{2}=1.41421356...

という風に習うと思います。でもこれって何なんでしょうか。なんでこの数字の羅列と紐づけて定義されているのでしょうか。結構謎ですよね。中学でルートを最初に習うときに \sqrt{2} とは x^{2}=2 の解のうち正のもの、というふうに定義すると思いますが、そんな解は存在するんでしょうか。中学校で「有理数の範囲ではそのようなものはない」ということは証明しますが、「実数の範囲では存在する」なんてことは一切証明されていないはずです。これをちゃんと保証するためには、実数同士の掛け算を定義する必要があり、それは「なんか定義されてそう」という雰囲気だけで押し切っているのです。

大学数学の門をたたくと、実数を実体化させる方法をいくつか学びます。例えば...
1. デデキントの切断を利用する方法
\sqrt{2}\{ x \in \mathbb{Q} | x^{2} < 2\} と同一視する方法。巧妙に議論することによって四則演算が定義できるなど、様々な性質が定義できます。
2. コーシー完備化を利用する方法
\sqrt{2} \{1, 1.4, 1.41, 1.414, .14142, 1.41421, 1.414213, ...\} という有理数列と同一視する方法。巧妙な制約や同値関係を用いることで、四則演算などの様々な性質が定義できます。

デデキントの切断の立場では、 \sqrt{2} が先ほどの無限小数で表されることは
 1.4^{2} < 2 < 1.5^{2}, 1.41^{2} < 2 < 1.42^{2}, 1.414^{2} < 2 < 1.415^{2}, ...
という不等式の列によって保証され、コーシー完備化の立場では
 \lim_{n \to \infty} (a_{n})^{2} = 2,  a_{n} = \underbrace{1.414...}_{n 桁}
という極限によって保証されます(意味付けられます)。2つの概念はいずれも有理数の世界までの言葉で書かれていることに注意してください。ちなみに高校範囲で扱う極限の議論では「実数はすでに存在していて、その世界での極限はカクカクシカジカの性質を満たしている」ということを認めるところから出発します。つまり無限小数は極限で定義される」という立場に立とうとしても、極限自体が実数の存在に依拠しており、実数自体の定義に使うと循環論法に陥るという構図になってしまっています。

まとめ

まとめると

  • 高校範囲の数学では、実数は無限小数と呼ばれる数字という記号の羅列全体として定義される
  • 循環する記号列に対しては、有理数との対応関係があることが分かる
  • 循環しない一般の無限小数に対しては、残念ながら意味付けができない
  • 意味付けがないために実数同士(無限小数同士)の四則演算は定義しようがない
  • 高校範囲の極限操作は実数の存在に依拠しているため、実数の定義そのものに用いることができない

というのが私の考え方です。

付録:無限小数同士の引き算の正当化

大学数学を使わない縛りだと証明があまりに大変なので、大学数学の手法を用いて実数を構成(デデキントの切断やコーシー完備化など)したと仮定した上で証明します。
2つの有理数  \dfrac{p}{q}, \dfrac{r}{s} が次のように無限小数で表されたと仮定します。
 \dfrac{p}{q} = a_{0}.a_{1}a_{2}a_{3}...
 \dfrac{r}{s} = b_{0}.b_{1}b_{2}b_{3}...
ここで S_{n}=a_{0}.a_{1}...a_{n}, T_{n}=b_{0}.b_{1}...b_{n} と置きます。引き算での繰り下がりが発生しないという仮定を置くと
S_{n} - T_{n} = (a_{0}-b_{0}).(a_{1}-b_{1})...(a_{n}-b_{n})
が成立します。各々極限を取れば(ここで大学数学の技法で示された事実を用いる!)
 \dfrac{p}{q} - \dfrac{r}{s} = \lim_{n \to \infty} (S_{n} - T_{n}) = (a_{0} - b_{0}).(a_{1}-b_{1})(a_{2}-b_{2})...
が示されます。