Δの意味は難しいし面白い
双デカルト圏の余加法Δ(加法は∇)を考える。これをデータフロー計算または状態書き換え計算の文脈でどう解釈するか? これは勘違いしやすい。僕も勘違いしていた。トレース付き双デカルトで計算処理(プロセス)をモデル化するとき、逐次計算と並列計算の違いは定式化できない。つまり、ある種の逐次計算と並列計算は、双デカルト圏のなかで同じ射でモデル化できる。つまり、同じに見えちゃう。
双デカルト圏は、逐次処理と並列処理の区別ができるほどに精密ではないということだが、逆に逐次処理と並列処理の違いを捨象した結果を得ることができる。もともと、双デカルト圏は、非決定性計算の最終結果をモデル化するもので、計算の途中経過はあまり問題にしない。
双デカルト性は、直和と直積を同じに扱うことなので、Δは「直積の対角=複製」と「直和の重ね合わせ(フォールド)の逆=ベキ等加法の逆=公平なランダム弁」の両方の解釈を持つ。複製器と考えれば並列処理による解釈、ランダム弁と考えれば(非決定性の)逐次処理的な解釈。
非決定性の逐次処理的のときは、順次多数回の試行結果の蓄積またはバックトラックによるトライアンドエラーの蓄積を結果とする。並列処理のときは、バックトラックはしないで失敗プロセスは単に破棄(または放置)する。多数回試行は、同時に行い、それらの結果を集約する。
いずれにしても、結果の集約にはある程度の時間がかかる。結果の集約だけを見てる立場では、逐次処理と並列処理を区別できない。
Δは、データフローならデータの複製、状態書き換え計算なら状態(計算環境)の複製を意味する。逐次計算なら、公平なサイコロによる実行経路選択になり、バックトラックまたは多数回試行を問題にする。多数のプロセッサの空間的な集約と、多数回試行の時間的な集約の結果は一致する、という仮説(これはエルゴード仮説かな?)を信じる定式化が双デカルト性(直積と直和の一致)。
非決定計算んの枠組みでなかでは、逐次処理と並列処理の区別が見えなくなる。特に、∇がベキ等加法だから、空間的な寄せ集めも、時間的な履歴の蓄積の違いを吸収してしまう。タプルとストリームとセットの関係をよく考えると、タプルをストリームにする方法はイッパイあるが、セットにするとストリームの違いがわからなくなる。
それと、混乱しがちなのは、状態空間の直和の上で並列処理を走らせると、2つのプロセッサが見ている空間は直積となる。その直積空間の一部が運動の相空間となる。静的な構成の状態空間は運動の場=配位空間で、実行時に多体系として見える動的な相空間とは違う。直和配位空間の入出力は直積となる。