論理の力だけで自分を実行しているハードウェアを破壊するプログラム
今回は、前回と前々回の記事をベースにして考えます。
未読の方は以下のふたつを読んで下さい。
タイムマシンコンピュータ System.ClosedTimelikeCurves.TimeMachine(T)クラス
タイムマシンコンピュータを利用してNP完全問題を多項式時間内に解く
ただし一つだけ気をつけていただきたいことがあります。
このプログラムの実行には過去へ情報を送る、タイムマシンコンピュータが必要です。
例
using System; using System.ClosedTimelikeCurves; class Program { static void Main() { TimeMachine<bool> timeMachine = new TimeMachine<bool>(); bool value = timeMachine.FromFuture(); timeMachine.ToPast(!value); } }
このプログラムは一切外部への出力を行いません。
(まあ強いて言えば過去の自分自身へ情報を送っているので、その分は「外部への出力」といえなくもありませんが。)
外部にあるロボットアームを操作して、自分自身を実行しているコンピュータをハンマーで叩いたりは出来ないのです。
にも関わらず!
そう、にも関わらずです!
このプログラムは自身を実行しているハードウェアを破壊します!!
どういうことか見て行きましょう。
このプログラムは、まず未来の自分から情報を受け取ります。
そして、わざと、その情報を変えて過去へ送るのです。
そうするとどうなるでしょう?
そう、どうなるもこうなるもありません。
そんなことはありえないのです。
このプログラムは実際には実行されなかったのです。
このプログラムを最後まで正確に実行することは不可能です。
具体的に何が起きるのか?という可能性はだいぶ絞られます。
このプログラムを実行しているハードウェアが途中で破壊されたか、そもそも最初から実行されなかった(実行しようとした人がその直前に心臓発作か何かで死んでしまったなど)かのどちらかです。
どちらのケースにせよ、このプログラムは過去の自分以外の外部に出力を行わないにもかかわらず、外の世界に影響を与えるのです。
関連
このプログラムは一見何の役に立つのかさっぱりわかりませんが、ものは使いようです。
以下がこのプログラムの建設的な応用法です。