有名な数、無名の数

前回のエントリー 無限角形は円と同じか?[id:rikunora:20090207] の続きです。
id:ROYGB さんの「全ての実数をコーシー列で定義できるのか」というコメントがヒントになって、何やら考えてみました。

ゲド戦記」という傑作ファンタジーがあります。
魔法使いのお話なのですが、その中に「真の名」という、とてもおもしろい設定が登場します。
あらゆるものには「真の名」があって、その名を知れば、
そのものを魔法の力で意のままに扱うことができる、という設定です。
「真の名」は、そのものの本性を表す。
本性を知れば、そのものが自由に扱える、というわけなのです。

この「真の名」を、数の世界にあてはめてみたらどうなるか。
そう思って、あらゆる数を「有名な数」と「無名の数」に分けることを考えてみました。
数の世界での「真の名」とは、その数を具体的に無限小数の形で印字できることなのだとしましょう。
* 有名な数 = その数を印字することができる有限長のプログラムが存在する。
* 無名の数 = 有限長のプログラムでは決して印字することができない。

有名な数とは、その本性が知られていて、人間が直接取り扱うことができる数のことです。
一方、無名の数とは、その本性が知られておらず、人間が直接取り扱うことができない数のことです。
ここで、「印字することができる」というのは、数を完全に印字し終える、という意味ではありません。
「時間とメモリーが許せば、小数点以下いくらでも多くの桁数を出力できるアルゴリズムが存在する」
という意味です。
例えば、円周率は有名な数に分類されます。
円周率を最後まで完全に印字することはできませんが、「いくらでも多くの桁数を出力できるアルゴリズム」は知られています。
有名な数の補集合が無名の数なのですから、あらゆる実数は、有名な数か、無名の数の、どちらかに分類できます。
有名な数とは、意味からすれば「構成可能数」、あるいは「計算可能数」と呼ぶべきなのかもしれません。
でも、それぞれ(私のよく知らない)専門的な意味がありそうなので、とりあえずこのように呼んでみました。
「コルモゴロフ複雑性」には、有名な数の考え方にとっても近いものがあります。(というより、ここからパクッた)

有理数は全て有名な数です。
代数的無理数は全て有名な数です。
πは有名な数、eも有名な数、ファイゲンバウム定数なんかも有名な数です。
有名な数の集合は、有理数よりも、代数的無理数よりも大きくて、ある種の超越数も内包しているのです。

実数の中に、有名な数は加算無限個しか存在しない。
なぜなら、有限長のプログラムは順序付けて並べることができるから。※1

実数の中に、無名の数は存在する。
なぜなら、もし実数が全て有名な数だったなら、実数は加算無限になってしまうので。

実数の中に、無名の数は非加算無限個存在する。
実数の中から加算無限個だけある有名な数を除いた残りが無名の数なのだから、そうなる。

さて、以上のように実数を「有名、無名」の2つに分類してみると、いくつかの疑問が湧いてきます。

疑問その1.
 もしこの世に、無名の数というものが全く存在しなかったとして、それで何か不都合があるのだろうか?

疑問その2.
 有理数から実数を構成することを考えてみると、
 有名な数が実数に含まれることはわかるのだが、
 無名の数が実数に含まれることは、必ずしも明らかではないように思える。。。

まず疑問その1.から。
ここで不都合というのは、何らかの計算ができなくなって困る、という意味です。
有名な数は、四則演算について閉じています。
それどころか、具体的に実行できるあらゆる演算操作について、閉じていることでしょう。
演算操作が在ること=有名な数なのですから。
演算操作ができるにもかかわらず無名の数である、といった状況は考え難い。
一例として、微分という演算操作を考えてみましょう。
もし世界が有理数だけで成り立っていたら、微分ができないので困ってしまいます。
数の世界を実数にまで広げれば、微分ができるので不都合がなくなります。
それでは、実数にまで一気に広げるのではなく、有名な数まで広げてみたら?
ひょっとすると、この世には有名な数だけでは微分できないような状況があるのかもしれません。
しかし、そういった不都合な状況は決して人の目に触れることが無いのです。
なぜなら、実際に人の目に触れるのは、記述可能な「有名な微分」だけだから。
同様に、方程式の答が無名の数になることも、おそらく無いでしょう。
方程式が記述できた時点で、その答は「有名になってしまう」と思うので。
何らかの方法で、人が扱った時点で、その数は「有名になってしまう」。
だとすれば、最初からこの世は有名な数だけで、
無名の数というものが一切無かったのだとしても、何も困らないという気がします。

これは何も「実数はマチガッテイル」という主張ではありません。
実数は実数で、ちゃんとした世界を形作っています。
でも、実数というのはとても深淵で、扱うのが難しく、ヘビーです。
それに比べると、有名な数だけしか無い世界というのは、ずっと簡単でライトです。
有名な数だけの世界には、非加算無限というものが無い。
例えて言うなれば、有名な数だけの世界とは、コンピューターの中のデジタルな世界に似たようなものです。
デジタルな世界には、無限小というものが無い。
デジタルな世界の中では、無限であるとか、連続であるといった、難しいことは一切考える必要がありません。
有名な数だけの世界も、デジタルな世界に似て、難しいことを考えずに済むのではないでしょうか。

次なる疑問その2.
理屈の上で、有理数から実数を構成する方法とは、どういったものなのでしょうか。
1つの方法は、有理数から作り得るあらゆるコーシー列を考えて、その収束先をまとめる、というものです。
(無限角形は円と同じか?[id:rikunora:20090207] 参照)
ここで疑問なのは、「有理数から作り得るあらゆるコーシー列」の中身についてです。
具体的にコーシー列が作れる、ということは、印字するプログラムを作れる、ということと同じなのではないかと。
だとすれば、この方法で作り出すことができるのは、実数の世界ではなくて、有名な数の世界なのではないか、と思うわけです。
具体的に構成を示すことができないような、無名の数に収束してゆくコーシー列が存在していたとしても、それはそれで矛盾はありません。
そういった無名の数が存在するのだ、とすれば実数の世界が構成できるし、
無名の数なんて存在しないのだ、とすれば有名な数だけの世界ができあがる。
そして、どちらの世界も自分の中で完結していて、それぞれ矛盾をはらんでいないように思うのです。

実数の構成方法にはもう1つ、デデキントの切断というものがあります。
大小関係によって数直線を2つの集合に分けたとき、その切断点がただ1つだけ定まる。
切断点が有理数で無かったとき、それを無理数としよう、といったものです。 wikipedia:デデキント切断
この場合でも、具体的に人間が示すことができる切断点は全て有名な数なのだとすれば、
無名の数の存在は必ずしも必要でない気がします。

以上の疑問1.2.から言いたかったことをまとめます。
1.「有名な数モデル」は、「実数モデル」の簡易な代替品として使えるのではないか。
  どのあたりが簡易かというと、非加算無限というものを全く考えずに済むところ。
2.実数の構成方法と、有名な数モデルの構成方法に、はっきりとした差異が無いように思える。
  ひょっとすると私たちは、有名な数モデルの構成方法を知ってはいるが、
  無名の数まで含めた実数の構成方法をはっきりと知らないのではないか。
  (単に私が知らないだけ、という可能性の方が高いけど)
1.2.を合わせると、もともとこの世に無名の数が全く存在しなかったのだとしても、
ほとんど困らないんじゃあないかな、と思ったわけです。

ネット上で「カントール対角線論法」というキーワードを検索すると、
この証明に疑問を呈しているサイトを少なからず見受けます。
私自身は、対角線論法は正しいものと信じていますが、理解し難いものであることも確かです。
対角線論法なんてものは、マチガッテイル!」と主張するサイトを眺めてみると、
どうやら中心となる論点は「可能無限と実無限」といったあたりかと感じられました。
対角線論法を受け容れられない人は、実数の世界ではなくて、有名な数の世界を扱っているのではないか、
私にはそのように思えます。
有名な数の世界には、非加算無限がありません。
全てが構成的に扱えるので、とても安心感があります。
対角線論法を受け容れられない人は、よく言えば現実的で、悪く言えば頭が固い。
一方、実数をすんなり受け容れられる人は、よく言えば頭が柔らかく、悪く言えば空想癖がある。
歴史の上でも、カントールの考え方は簡単には受け容れられなかったようで、クロネッカーなどは猛反対したのだと聞きます。
なので、現代でも受け容れられない人がいるのは、不思議なことではない。
実数の世界も、有名な数の世界も、物理的には存在しません。
現実の物理的な世界は、とても小さな有限個の粒子でできています。
なので、実数の世界も、有名な数の世界も、どちらも頭の中だけにしか存在しない観念の所産です。
数の世界が存在するかどうかは、つまるところ「考えられるか、られないか」で決まることでしょう。

仮に、この世に無名の数が全く無かったとしたら、どうなるか。
数の世界から、神秘がなくなります。
世界が有名な数だけでできている、ということは、人知によって世界の全てを把握できる、ということを意味します。
そうなると、数学の持つ魅力が急速に失せてしまうように、私には感じられます。
ミステリアスだから、いいんです。
どんなに人間ががんばっても、知り得ない数が無数にある。
それどころか、知り得ない無名の数の方が、知っている有名な数よりも圧倒的に多い。
人間はいつまで経っても無限の階段の入り口に立っていて、進んでも進んでも、その先に到達しない。
そう考えた方が、世界というものがずっと豊かであるように感じられませんか。

さて、上の疑問その1.で、「この世のに無名の数が無かったとしても、何も困らないのではないか」といったことを書きました。
ところが、私の知る限り1つだけ、困った実例があります。
それは「チャイティンのオメガΩ」[id:rikunora:20080605] という数なのです。
チャイティンのオメガΩとは、チューリングマシンの停止確率を表す数のことです。
この数の困ったところは、定義可能ではあるのだが、計算可能ではない、ということ。
オメガを望みの桁数だけ印字するプログラムを作ることはできません。
なので、オメガは無名の数です。
でもオメガにははっきりとした定義があるので、この世に存在しないとは考えにくい。
こういう実例があるので、「この世に無名の数なんて無いんだよー」とか言って、
有名な数だけの世界で安穏と暮らすことはできないんです。
きっとオメガだけではなく、定義可能だけれど計算不可能な数は、他にもたくさんあることでしょう。
(逆に言えば、この点にさえ目をつぶれば、
 有名な数だけの簡易的な世界の中で、安穏と暮らして行けると思うのです。)

実際に全ての有名な数を列挙することは可能なのでしょうか。
有名な数は加算無限個しかないのだから、当然、整列させることができる?
いや、どうやらそうでもないみたいです。
というのは、ある数が、有名か無名かを完全に見分ける方法が無いんです。
たとえば、ある数列が「円周率の10万桁目から、1桁おきに抜き取った数」だったとして、
それが簡単に見分けられるでしょうか?
実は有名なのだけれど、現時点では無名となっている数が、いくらでもあります。
また、あるプログラムが停止しているのか、無限ループに突入してしまったのか、見分ける方法も無い。
とあるプログラムがじぃーっとしていて反応がないように見えても、3日後に突如動き出すかもしれない。
あるいは3年後、100年後に生き返ったように動き出すかもしれない。
それが停止しているのか、無限ループに突入しているのか、途中段階では見分けが付かない。
以上は結局のところ、プログラムの停止問題に帰着して、
停止問題が解決できないのだから、有名か無名かを見分けることもできない。
なので、全ての有名な数を列挙することは不可能だと思われます。

有名な数を列挙することは不可能。
この性質を利用して、もう1つ、定義可能だけれど計算可能ではない数を思い付きました。
仮に、有名な数を順序よく一列に並べることができたとします。
これ、本当はできないことなんですけど、仮にできたとしましょう。
そして、対角線論法のように、1番目の数から1桁目をとってきて、2番目の数から2桁目をとってきて、
3番目の数から3桁目をとってきて、、、といったことを実行します。
有名な数の中には有限桁で終わってしまうようなものもありますから、その場合には0をとってきます。
このようにして対角線を連ねて作った数、これは定義可能だけれど計算不可能な数ですよね。
この数には、オメガのように名前が付いているのかな?
もし名前が付いていなかったら、シャレで「有名な定数」って呼んだらいいと思いますよ。


                                                                                                                                              • -

※ええと、毎度のお約束なんですけど、私はこの道を深く研究しているわけでもなく、特別な専門家でもありません。
なので上に書いたことはトンデモなく違っている可能性や、専門家から見ればひどくつまらないことかもしれません。
こんな注意書きはわざわざ書かなくてもいいのかもしれませんが、無責任にヘンテコなことを広げるのも問題なので。


                                                                                                                                              • -

※1 なぜ有名な数は加算無限個なのか
プログラムというものは、全て有限長の二進数だからです。
二進数を、短いものから順番に並べていったものは、自然数と同じものです。
同時に、二進数を、短いものから順番に並べていったものは、あらゆるプログラムを並べたものでもあります。
(ここで言うあらゆるプログラムとは、ちゃんと動作するもの、
 しないもの、いつかは停止するもの、しないもの、それらの全てを含んだもののことです)
有名な数を印字するプログラムというのは、あらゆるプログラムの一部です。
あらゆるプログラムが高々加算個なのだから、有名な数を印字するプログラムも加算個になります。


                                                                                                                                              • -

※ 2/12 追記 自己レスです。
WEBとは便利なもので、調べるといろんなことがわかってきました。
有名な数だけの世界、というのは「数学的直観主義」という立場にほぼ同じ。
「有名、無名」というのは、計算機科学で言うところの
「計算可能関数、計算不能関数」ということ。
よく知られた実例として「ビジービーバー関数」なんてのがある。