時間の空間、時点は不要、空間ワープ、無音ステップ、実行の同値性
「並列処理、時間の空間、マンダラ」あたりの続き。なにやらゴチャゴチャと考えている。
最近気付いたことは、時間の空間の基本要素は1セル(矢印)である「ステップ」であって、0セルである「時点」は不要だということ。0セルはあるにはあるのだが、副次的な働きしか持たない。通常は考える必要がない。考えてしまうことによって、色々と不都合があったのだと思う。
Tが時間の空間のとき、T0は0セル=時点の集合だが、これはまーどうでもいい。T1を考える。T = T1 と略記(乱用)することにする。Tは、順序(部分順序)集合だ。しかし、≦ よりは < が意味を持つので、< を使うことが多い。
s, t∈T に対して、s < t でも t < s でもないとき、t 〜 s と書く。t 〜 s は、tとsが空間的に配置されていることを示す。このような順序構造は、グラフGの辺の集合 G1 = Edge(G) に対しても入れることができる。s, t∈G1に対して、s < t は、sとtをこの順で含む道の存在で定義される。
TとXが順序集合のとき、普通は単調写像fを準同型 f:T→X とするが、これはダメだ。全然ダメなのである。そうではなくて、
- s < t ならば、f(t) < f(s) ではない。
これが、fが準同型である条件。別な言い方をすると、順序の逆転現象(s < t かつ f(t) < f(s))が起きないなら準同型。
時間の空間の1セルはステップと呼ぼうと思う。ステップのあいだに順序があるのであって、時点に順序を考える必要はない。ステップの順序と矛盾しない順序を時点(0セル)の集合に入れることはできるが、たいして使わないだろう。
一番基本的な時間の空間は、{[0, 1], [1, 2], ..., [n-1, n]} というものだ。これを単に n と書いてもいいくらいだ(混乱があるけど)。Steps(n) := {[0, 1], [1, 2], ..., [n-1, n]} として、Steps(0)は空集合だとする。Sが状態遷移グラフとして、r:Steps(n)→S が一番基本的な実行となる。このとき、r([0, 1]) と r([1, 2]) が図形としては不連続となる。時点1において空間方向への瞬間移動(ワープ)が発生する。
また、無音記号、無音遷移に対応する無音ステップが必要かもしれない。時間は経過するが何も起きないことを表す。空間ワープや無音ステップは、実行の本質ではない。模倣関係においても、弱模倣のとき無音遷移を無視したり足したりする操作がある。実行の同値性(ある種のホモトピーだと思う)を考えるときは、空間ワープや無音ステップを無視する必要があるのだろう。
空間ワープ、無音ステップを考える必要があるのは、タイムシェアリング、コンテキストスイッチ、命令のシャフリング(マルチプレクサ、デマルチプレクサ)などを考えれば明らかだろう。
部分順序を持つステップの集まりである時間の空間に対して、直和と貼り合わせは自然に構成できる。解釈が難しいのは直積。単にグラフの直積なのか? それとも「2次元の時間」が出てくるのか? 単なる符丁としての2次元か? 本質的な多次元構造なのか? これが分からない。難しい。
[追記]
- ワープは、時間が経過しないのに状態点の移動が生じる。
- 無音遷移は、時間は経過するが状態点はそのまま(自己ループ、id)。
コンテキストスイッチとタイムフィラーの定式化だな。ワープと無音遷移は、有向グラフの辺ラベルとして予約記号にしておけばいいのか?
[/追記]