言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

時間旅行は可能か?

体調が悪くて、明日死んだらどうしようと悩んでいるうちに、素晴らしいアイデアが浮かんだので書いておく。それは時間旅行は可能か?もし可能だとしたら、それは一体どういう結果を生むのかという問題についてだ。

結論を先に言うと、時間旅行が不可能な数学的理由は無いと考えられる。あなたは過去に旅して、両親の結婚に干渉する事が出来る。それによって、両親から生まれる子供の人生は変わるだろう。しかし、残念ながらあなたの人生を変える事は出来ない。

関数型言語の実行モデルは歴史と同じ性質を持つと考えられる。ある出来事、例えばあなたの存在を考えた時、その誕生について後から変更する事は出来ない。これは、関数型言語の副作用の禁止に対応する。副作用の禁止によって、ある事件から派生する同時刻の結果は、お互いに干渉する事が出来ない(お互いの未来に干渉する事は可能である)。

主流の命令型言語のモデルは、時間旅行が可能なモデルに基づいて作られている。結果から原因を変えてしまうことが可能で、プログラミングに関する大きな品質上の問題がその性質から来ている。それに代わるのが関数型言語に期待される役割なのだが、実用上の要請から命令型言語をシミュレートする手法が深く研究されている。

歴史のメタファを使うと、その手法は時間軸に直行するメタ時間。第五次元を旅するという事になる。関数型言語は歴史に干渉する事が出来ないが、歴史全体を一つの対象と考えて、それを変換する関数を書く事は可能である。興味深い事に、それによって何でも可能というわけでは無く、通常の歴史と変換された歴史の間にはある数学的関係が存在する。また、その場合でもやはりメタ時間を逆行する事は出来ない。

このような平行宇宙の議論は、計算理論的にもうなずける話なのである。と言うわけで、将来研究が進めば、ある数学的関係を満たす範囲内で時間旅行が可能だと考えている。残念ながらあなたの人生そのものを時間旅行によって変える事は出来ないが、有り得たかも知れない人生を眺める事は可能になるだろう。