「数学コラム Rayo数より大きな数の構築を試みる2 Cat関数 (2020/01/15)」





さて。前回の続きから。

int Cat()
{
  int n=1;
  for (;;)
  {
    n *= 2;
    if (円周率の[TREE3]桁番目の数 < 5) break;
  }
  return n;
}

この関数の返す値はいくつでしょうか?

まず、円周率は無限なので、
  α = 円周率の[TREE3]桁番目の数
は存在します。
そしてα=0,1,2,3...,9のどれか一つ。

ここまでは確か。



だがαの値はわからない。
少なくとも現段階の人類にαを計算できる科学力はない。
α=0,1,2,3...,9のどれか一つなのは間違いないのだ。

つまり。
実直に言って、Cat関数の値は
  50%の確率で<5を満たすのでCat関数の値は2
  残り50%の確率で<5を満たさないのでCat関数は無限ループ=∞

半分無限、半分有限の位置に
存在するという摩訶不思議な関数です。



もちろん!
現実的に言えばα=0,1,2,3...,9のどれか一つであり。

人類にはその値がわからないだけで、
神の目から見たら真の値は一つに確定している。
Cat関数の値も無限/有限のどちらかに確定してるのですが。

やはり人間にはαがなんなのかはわからないので
人間視点からの現状ベストな見積もりは
  Cat関数 = 50%で無限、50%で2
でしょうか。



そもそもこのCat関数。^_^;

何故に一体。
どこから、どういう目的で出てきたのかと言われましたら。

前回構築したIL関数

int IL()
{
  int n=1;
  for (;;)
  {
    n *= 2;
    if (n%10 == 5) break;
  }
  return n;
}


  IL関数 > Rayo数
でした。
IL関数はRayo数より強い。


ただし、IL関数は
絶対にbreak条件が発動しないように作られており、
確信的なズル・不正をしている。
おいこらてめー!ズルしてるじゃねえか。それは認められない。

ってなわけで。
breakの発動条件を緩くして
  50%の確率でbreakは発動しない。無限。Cat関数 > Rayo数
  50%の確率でbreakは発動する。有限。Cat関数 < Rayo数
にして。

これなら「無限ループを使ってる」・・・・
とは言い切れない。

使ってる可能性もあるが
使ってない可能性もある。
確定無限ループじゃない。

サイズを(確率的に)少し減らした代わりに
不正度も下げたのがCat関数なわけです。




いや、ここまで来るともうめちゃくちゃなのは
わかってるけど。

いちおう期待値的なサイズ比較で言えば

IL関数(100%無限ループ。期待値∞) > Cat関数(50%無限ループ。期待値∞/2) >(?!) Rayo数。有限の数

※ちなみに
Rayo数は「10100文字で記述できる式を全てを調べて、その中で最大+1を返す数」。
なので、

全ての式を調べるのならIL関数もCat関数もRayo数の中に含まれてるはずじゃ?」と
思われるかもしれませんが、
含まれません。

なぜならRayo数には「サイズ無限、および無限ループだけは含まない」という
重要な取り決めがある。
(あくまで最大の数を調べるのが目的なので。無限は大きすぎる。)


IL関数もCat関数も
無限ループを扱っていて、
そのルールを破っているから
Rayo数の中には出てこないのです。




基本的なアタックポイントはずっとこれです。^^;

Rayo数は「無限、無限ループだけは除外する」という取り決めがあるので、
こっちは「(意図的に)無限ループを使用した式」を用いて
なんとか攻撃の糸口を作ろうとしている。

だからあえてではなく、
関数と表現してる。


んで、「無限=∞」サイズを持ち出すと完全に不正になるので、
あくまで無限ループ。
無限ループにハマって数が際限なく伸びてる
途中のnとサイズを比較することで
どこかで
  n > Rayo数
が発生すると主張している。



次回に続く。