第一話 冪乗と超冪とハイパー演算子
あるところに、肥沃で広大な大地を治める王国があった。その名前は、ナーロッパ王国。ナーロッパ王国は魔法の技術のおかげでたぐい稀なる繁栄をしていた。
魔法とは、様々なものに影響を及ぼすことができる異能の技のことである。特に戦闘において魔法は有効性を発揮し、ナーロッパ王国がナーロッパ地方を統一するのに貢献した。
そして、魔法が敵に効くかどうかはレベルによって表される。レベルが低い人の魔法はレベルが高い人に無効化されるが、レベルの高い人の魔法はレベルの低い敵に効く。
なので高レベルの魔法使いは低レベルの魔法使い相手に無双することができる。
人々はステータスウィンドウという技を使ってレベルを確認することができる。この技は本人が念じるだけで発動することができる。発動されるとその人の眼前にある程度の大きさを持ったウィンドウが表示され、そこにその人のレベルが書いてある。
魔法使いたちはより高いレベルを求めて競い合った。
ある日、このシステムに重大な欠陥が見つかった。なんとステータスウィンドウは誰でも簡単に改竄することができるのだ。変更してしまおうと、念じてしまうだけで簡単にできてしまう。
その結果、絶対的な強者が現れた。彼は魔法を極めし者として魔王と名乗った。彼の名前はトラック。何者よりも高いレベルを持つ者だ。彼は暴虐の限りを尽くし、ナーロッパ王国を壊滅させた。
茶髪に黒の瞳を持つ少年である俺、レオンもその被害者の一人だ。彼が8歳の時、トラックによって両親を殺されたのだ。ナーロッパではよくあることである。
そして、魔王トラックは最後にこう言い残して消えた。「この世界に我と対等なる魔法使いは存在しないようだ。ならば十年の時、異世界に行ってよう。そして貴様らとまた相見える時、私を止められなければ貴様らには死あるのみだ」
ナーロッパ王は魔王を倒すために国家全域に、「より高いレベルを求めよ」と布告した。人々は大きなレベルを求めて切磋琢磨していた。
その流行は庶民の子供にまで波及していた。
「俺のレベルは9999999999999999999999だ!」
「なにを!僕のレベルは9999999999999999999999999999999999無量大数だぞ!」
「クソ、負けた!」
「レオン、お前のレベルは幾つだ?教えろよ」
「999!だ」
これこそ今の俺のレベルだ。
「は?」
「俺のレベルは999!だ」
「999とか雑魚すぎ。はい、僕の勝ち!」
こいつはこんなこと言われているが、実のところは俺の方が高いレベルを持っている。なぜなら、x!(xにはいろんな自然数が入る)という表記は、つまりx、x−1、xー2、、、3、2、1とそれx以下の自然数を全て掛け算したものになるからだ。
ここでいう自然数とは1以上の整数のことだ。
例えば3!=3×2×1=6となる。これはxに入る数字が大きければ大きいほど爆発的に増加する。例えば10!=3628800である。そして俺の言った999!はもっとずっと大きい。100以上の数が900個掛け算されているので、少なくとも1800桁はある。対して、無量大数はせいぜい69桁の数字。なのであの少年よりもずっとレベルが高い。
だが、それを理由に魔法で攻撃したりしない。なぜなら俺の力は全て魔王を倒すために捧げているのだから。魔王を倒すこと以外に力を使うつもりはない。
それは俺の慕うおじさんであるウィスアスさんとの約束だった。
ウィスアスさんも、魔王討伐のためにレベル上げをしている多くの人々と同じだ。だがウィスアスさんは、悟りを開いて巨大な数を知り、魔王を超えるレベルを得ようとしている特殊な人だった。
「わしのレベルは僧羯邏摩じゃ」
まだ幼い俺にもその数が巨大であるということはわかった。
「俺も悟り、する!」
その頃の幼かった俺は同じように悟りをすれば魔王のレベルを越せると思っていた。
「悟りもいいが、お前はそれより得意なことを伸ばすべきだ。お前は数学が得意だっただろ?ならば数学を精進するべし。だが、精進によって得た力を絶対に魔王を倒すため以外に使ってはならんぞ」
だがら俺は数学を本気で学び、魔王以外の敵に対して魔法を使わなかった。
そしてもう15歳になった。魔王の設定した猶予まであと2年とちょっとしか存在しない。
「もうわしはダメかもしれん」
「ダメって、そんな!魔王が来るまであと三年もないのに!」
「だが、年には勝てん。わしのレベルは不可説不可説転にまで達したというのに情けない話じゃの。そんなわけでお前にこれを託す」
地図が渡された。
「王都の地下にわしの仲間がいる。この地図にはわしがお前を推薦するということを書いてある。この場所についたらこの地図を渡すのじゃ。さすればお前もわしの仲間として認められようぞ。だが、わしの容態については絶対に語るんじゃないぞ?」
「それはなぜですか?」
「若い者の邪魔をしてはならんからの。わしが死地にあることを聞けばもしやするとここに戻ってくるかも知れん。そのせいで魔王を倒せなくてはわしは死んでも死にきれん」
俺はそれが何か魔王を倒す秘密結社のようなものなのか、と予想した。
「ようこそ、地下組織『巨大数』へ。私の名はアーリャだ。よろしく」
そして俺を出迎えたのはアーリャと名乗る俺より少し年上の少女だった。
眼鏡をかけていてクールな人である。俺よりも身長は少し低いが、短く切りそろえられた金髪に眼光の光る碧眼と整った顔立ちをしている。
「ウィスアスじいさんの紹介か。あのじいさんが人を紹介するとは思わなかったな。まああのおじさんの紹介だから大丈夫だろう」
「はい、レオンと申します。よろしくお願いします」
「その口調はベルナイドが二人に増えたように思えてしまうからやめてくれ。私もアーリャって呼んでくれていいい。あ、ベルナイドってのはウィスアスじいさんの孫息子な」
「はあ、じゃあ口調を柔らかくすればいいかな?てか、ベルナイドさんって紹介とかあんましないの?」
「しないも何もお前が初めてだ」
「え?」
「というかそもそも『巨大数』のメンバーはお前含めて四人だ。お前以外は、私、ベルナイド、ウィスアスじいさん」
「意外と少ない!?」
「我々が発見した方法はあまりにも強すぎるからな。第二の魔王を生み出しかねない。だから精神の高潔さと優秀さを兼ね備えた人材じゃないと『巨大数』には入れんのだよ」
「マジか。俺って意外と高く評価されてたのか。意外と嬉しな。そうだ、ウィスアスじいさんの孫にも顔見せなきゃいけないかな?あの人はどこにいる」
アーリャさんは俺をベルナイドのもとに連れて行ってくれるらしい。その際に気がかりなことを言われた。「ベルナイドは超がつく正真正銘の変態だ。覚悟しろ」一体どんな人なんだろう。
「ベルナイドです。ベルとでもベルナイドとでも好きなようにお呼びください。口調も好きなようにしてください」
そして現れたのは緑色の髪を持つ、無口で温厚な目にクマのある貧相な少年だった。もしかすると俺よりも年下かもしれない。だが変態には見えなかった。
「俺はレオンだ。よろしく」
「美しい」
不意に、ベルナイドはつぶやいた。
「え?」
「超越最高至極至高至聖!この表記法、美しい!」
ベルナイドは羽根ペンを取り出すと、紙に無造作に何かを書き始めた。
「ダメだ、美しくなかったです」
そして勝手に落胆した。
「なあ、変態だろ?」
アーリャのその評価には同意せざるを得なかった。
「取り乱してすいません。改めて、『巨大数』に歓迎します。ここの目的はご存知ですよね?」
「ステータスウィンドウのレベルを魔王よりも高い数値に改竄して、魔王を魔法で倒せるようになることだろ?」
ウィスアスおじさんもステータスウィンドウをより高いレベルに改竄するため、より大きな数字を追い求めて悟りを開こうとした。
ここも同じような、より大きな数字を求めている組織なのだろう。
「はい、その通りです。なので我々は魔王のレベルを超えるために、巨大数について日夜研究を重ねています。まずはあなたのレベルをうかがいたいですがいいでしょうか?」
「ああ、10の10の10の10の10の10の10の10乗乗乗乗乗乗乗レベルだ」
俺の故郷ではこのレベルよりも上の人は誰一人としていなかった。少なくとも俺の知る限りこれを超えるものはいない。
これにはまず冪乗という概念を導入する必要がある。冪乗というのは、次のようなものだ。aのb乗とは、aをb回掛け算した数のことである。
例として、2の3乗は2を3回かけるので8である。10の3乗は1000。
そして10の100乗は1の後に100個0がついた数字であり、グーゴルとも呼ばれる。
さらにそのaのb乗という、bの部分にもさらに冪乗表記を使う。そうすると、aの「bのc乗」乗という莫大な数字を表記できる。2の3の4乗乗は、2の81乗だ。同じように、10の10の100乗乗はグーゴルプレックスとも呼ばれる。俺のレベルはそれらをさらに巨大にしたものだ。
「まあ、普通だな」
「我々が発見した方法を使わなければこんなものです。ですが推薦されたということは素質はあるのでしょう」
しかし評価は思いの外良くなかった。
「その我々の発見した方法、ってのは何?」
「『定義』だ」
「定義?」
「はい。新しい巨大数の表記法を自らの手で開発し、その定義をステータスウィンドウの中に書き加える。そうすれば、この世界に存在しなかった表記方法で巨大数を表すことができます」
俺は衝撃を受けた。これまでに存在しない方法を使って数字を書き表わせるということに。そしてチートだろそれずるい、という思いよりも未発見の世界への好奇心の方がはるかに上回った。
「例を挙げましょう」
「まて、お前が教えるとまだ純粋なレオンが洗脳されかねん。ここは私に任せろ」
「そんなつもりはないのですが、仕方ないですね」
というわけでアーリャに巨大数の定義に関する講義を受けさせてもらうことになった。
「まず覚えてもらうのは『超冪』だ。定義は最も簡単だ」
そしてアーリャさんは俺の横に来て羽根ペンを使っていろいろ書き始めた。字が綺麗である。
「f(a、b)を、aのaのaの…(b回続く)...乗乗と定義する。例を挙げよう。aに4、bに3を代入した場合だ」
f(4、3)
=4の4の4乗乗
=4の64乗
「4の64乗というのは、4の5乗の13乗と同じぐらい。4の5乗で1000だから、だいたい36桁の数字になるのか。たった3と4だけでこんな巨大な数字が表せるなんて」
「すごいだろ?だが、本質はそこじゃない。変数bに巨大な数字を埋め込んでからが本領発揮だ」
f(10、1000)= 10の10の10の...(1000回続く)...乗乗
「すごい、こんな簡単に冪乗では表し切れることが到底不可能な数字になってしまうなんて」
「ああ、そうだろう。ここで演習問題を出す。レオンのレベルを超冪を使って表記してみろ」
「ええと、こうかな?」
f(10、8)
「こうしてみると俺のレベルが全然小さかったってことがわかるな。ああ、クッソ恥ずかしいぜ!」
「だが、超冪でさえ巨大数の世界では弱い」
「巨大数インフレしすぎだろ」
「そういう世界だ。それに私やベルナイドでさえ魔王に到達することはできていない」
「マジかよ必死で頑張るわ」
「話を戻すが、掛け算と冪乗、冪乗と超冪、と何か法則性を見つけられないか?」
「ええと、冪乗で表しているのは掛け算の個数?それで、超冪で表しているのは冪乗の個数だから、あ、同じだ」
5の3乗=5×5×5
f(5、3)=5の5の5乗乗
「よく気がついたな。なら、その要領で超冪よりも上も考えることができるんじゃないか?」
「ああ、行けそうだ。試しに、g(a、3)って置いてみる」
g(a、4)= f(a、f(a、f(a、a)))
「よくできたな。試しにaに2を入れてみろ」
g(2、4)
=f(2、f(2、f(2、2)))
=f(2、65536)
「aに2を入れたからいいけど、3とかだったら超冪でも表記無理だなこれ。一瞬で超冪も過去のもになっちゃったぜ」
「ああ、上出来だ。だが、厳密な定義ではないな」
「定義は厳密にしないといけないの?」
「ああ、定義をより正確に厳密にした方がわかりやすいし、よほどひどかったらステータスウィンドウに反映されない恐れもある」
「何よりも美しいです」
さっきまでずっと紙と格闘していたベルナイドが口を挟んだ。
アーリャがベルナイドに厳しい視線を送ることでベルナイドは元の計算に戻った。
「より正確な定義をするにはどうすればいい?」
「この場合は、『漸化式』を使う」
「あ、漸化式なら知ってる」
「田舎から来たのによく知ってたな」
「ウィスアスさんからもらった本で勉強してたので」
「なるほど、それなら納得だ。じゃあ、やってみろ」
「ええと、まず最初にgの変数であるbを一つづく小さくしていく式を立てなきゃいけないか」
「漸化式を立てるのが難しい場合は、とりあえず変数を入れて計算していろいろと比べてみると良い」
「アドバイスさんきゅ」
とりあえずaに2、bに3を入れてみる。
g(2、3)=f(2、f(2、2))
そこでさっき作ったaに2、bに4を入れた数字と比べてみる。
g(2、4)=f(2、f(2、f(2、2)))
「あ、これ中に同じのが入ってる!」
全く同じものが存在する。
g(2、4)=f(2、g(2、3))
「そうだろう?じゃあ次は、どんなbでも成り立つのかどうか確認しようか」
g(2、5)
=f(2、f(2、f(2、f(2、2))))
=f(2、g(2、4))
「つまり、こういう構造が存在しているってわけだ!」
g(2、b)=f(2、g(2、bー1))
「理解が早いな。そうすることで、gの関数の変数であるbを減らすことができるな。ところで、bは全ての自然数について当てはまるか?」
「ああ、当てはまる」
「本当にそうか?b=1の時もあてはまるか?」
g(2、1)=f(2、g(2、0))
「あ、これだと超冪を0回しなきゃいけないことになるけど、超冪を0回するってことがわからない」
「そう、定義不足だ。だからb=1についてどんな数字になるのか定義しなきゃいけない」
「ええと、g(2、1)は一回2を超冪するわけだから、2を1回冪乗計算すればいいわけで、つまり2だ」
「それは、2じゃなくて3や4とか、全ての自然数で成り立つか?」
「ああ、成り立つ。ということは、次の式が建てられるな」
g(a、b)=f(a、g(a、b−1))
g(a、1)=a
「ああ、それが超冪よりも上の関数の基本形だな。fが超冪を表す関数の場合、gは超冪よりも強い。我々はこのgのことをペンテーションって呼んでる」
「ねえ、これってfが冪乗を表す場合はgで超冪を表してない?」
「よく気づいたな。大正解だ」
「しかも、fが掛け算の時はgは冪乗になる。この漸化式すごい」
「そうでしょう、美しいでしょう?」
俺はこのベルナイドの意見に同意せざるをえなかった。
「ああ、美しい」
「おい、レオン、そっちにいくな、こっちにもどれ!」
アーリャに揺さぶられることで俺は正気を取り戻した。
「危ない、狂気に取り込まれるところだったぜ」
「私は狂気じゃありませんよ、正気です」
「変態から見た正気を狂気っていうんだよ」
アーリャの辛辣なツッコミが飛ぶ。
「話戻すけどさ、このgとfの関係も漸化式にすることできない?」
「へえ、もう『ハイパー演算子』に到達するか」
「これは、なかなかの逸材ですね。定義という概念を理解して一時間も経たずにここまで来るのは私のプライドが折れてしまいそうです」
アーリャもベルナイドも感心しているようだ。
「ハイパー演算子?」
「遮ってすまんかった。とりあえず、レオンが思いついたその漸化式について書いてみてくれ」
「わかった。とりあえず、fを一般化するためにn回目のfということで、f_nっておくことにする。で、gはf_n+1にする。そうすると次のような式が成り立つね」
f_n+1(a、b)=f_n(a、f_n+1(a、b−1))
f_n+1(a、1)=a
「やっべ、変数が3つになっちまった。けどこれでもいいのか?」
「ああ、問題ない。続けろ」
「ええと、次はf_1についての定義をすればいいんだよな。というか、f_1は何の関数にすればいいんだろう」
「そうだな、f_1は足し算の関数にしておけ」
f_1(a、b)=f_1(a、b−1)+ 1
f_1(a、0)= a
「足し算の関数ってこれで合ってるよな?」
「心配か?なら変数に数値を与えて計算しよう」
f_1(5、3)
=f_1(5、2)+1
=f_1(5、1)+1+1
=f_1(5、0)+1+1+1
=5+1+1+1
=8
「あ、ちゃんと5+3=8になっている」
「よくやった。じゃあ、この漸化式の厳密な定義を書いてみろ」
「おけおけ」
「あと、後々のために関数の名前はfじゃなくてhyperにしておけ」
「hyperってもしかして俺が立てようとしている漸化式がアーリャの言ってた『ハイパー演算子』っていうこと?」
「そうさ」
「ってことは俺が第一発見者じゃなかったのかよ。少し残念だぜ」
「そういうな、再発見も巨大数においてはとても重要な要素だからな」
①ハイパー演算子の漸化式
x=hyper_n(a、b)について、次のように定義する。
(以下、nおよびbは自然数である)
hyper_n+1(a、b)=hyper_n(a、hyper_n+1(a、b−1))
hyper_n+1(a、1)=a
hyper_1(a、b)=hyper_1(a、b−1)+ 1
hyper_1(a、0)= a
「この漸化式でいいか?」
「上出来だ。数学的にはp、q、rは自然数しか入らないとか但し書きを書く必要があるが、巨大数を考える上ではそれほど重要じゃないから気にしなくていい。そもそも定義に場所をとりすぎてステータスウィンドウに収まりきらなければ本末転倒だしな。じゃあ、それぞれのhyper_pがどんな演算を表しているのか試算してみよう」
「hyper_2は、掛け算かな?」
「それを証明するためには『数学的帰納法』を使うといい」
「漸化式についての命題が全ての自然数について成り立つことを証明するときに使うやつだっけ。わかった。ええと、hyper_1は足し算についての関数だから」
hyper_2(a、b)=a×b
と仮定する
(b>1の時)
hyper_2(a、b+1)
=hyper_1(hyper_2(a、b)、a)
=hyper_1(a×b、a)
=a×b+a
=a×(b+1)
より、hyper_2(a、b)=a×bが成り立つとき、hyper_2(a、b+1)=a×(b+1)が成り立つ
(b=1の時)
hyper_2(a、1)
=a
=a×1
より、hyper_2(a、b)=a×bは、a=1について成り立つ
よって、全ての自然数bについて関数hyper_2(a、b)=a×bが成り立つ
「同じような方法で、hyper_3が冪乗計算であること、hyper_4が超冪計算であること、hyper_5がぺテーションの計算であることがわかるね。しかも、①のハイパー演算子の漸化式の定義を使えばいくらでも強力な関数が作れる」
「hyper_4の時点でaやbに10ぐらいのある程度大きな数字を入れておけば、桁数の桁数の桁数さえ全くわからなくなるからな。hyper_100とかになればどれだけ巨大になるかわかったもんじゃない」
「インフレしすぎて10がゴミ粒にしか見えねーや」
「だが、hyper_10000を使っても魔王のレベルには到底到達することができないだろうがな」
「魔王ってどんな巨大数を使ってレベルを改竄したんだよ…」
「それでも有限の数であるのは確かだ。いつか我々でも到達できる日が来るだろう。
そのために、『巨大数』はより巨大な数を追い求める」
「アーリャ、数の巨大さ以外にもっと重要なことがありますよね?」
ベルナイドがまた口を挟んできた。
「『表記方法の美しさ』も重要だ、と言いたいのか?悪いが私にはそんな変態性癖に構ってられる暇はないのでね」
「へ、変態ですと。そんなこと言うのであれば私にもそれ相応の対処を取らせてもらいます」
「それ相応の対処って、まさか!」
アーリャが目に見えて焦り出す。
「もう遅いです!後悔して下さい!『チェーン表記』」
ベルナイドは紙に3→3→65→2と書いた。
「わ、私の推しが!やめて!文字に起こさないで!ぱっと見の数字の大きさと実際に表している巨大数のギャップが大きすぎて萌えちゃう!しかも中にいる65の優しいお兄さん感がやばすぎて、あ、あ、もうムリィ!」
アーリャはクールとは真反対の高い可愛らしい声で叫ぶと、白目を剥いて倒れた。しかも痙攣している。天国にいるかのように幸せな表情に口からだらしなく舌を垂らしており、端正な顔立ちが台無しである。
「え、これ大丈夫なの?」
「尊みが深すぎて意識が飛んだだけです。大丈夫でしょう。だけどあなたに巨大数について教える人がいなくなったのは問題ですね。とりあえず今、『巨大数』の持つ最強の表記方法である『矢印表記』と『チェーン表記』については私から説明しましょう」
そうしてベルナイドの講義が始まった。
アーリャをこのまま放っておくと良くないので部屋のソファーに寝かせておいた。いつもは床で転がったままらしいが。