プロトキン/パワー風の状態とRDBとポインター
プロトキン/パワーの定式化自体は分かんなかったが、背景の一般概念のほうは利用価値がある。スピヴァックのスキーマ理論とも関係する。
アドレスとは区別してロケーションというものを考える。アドレスがアドレス空間の“点”であるのに対して、ロケーションはアドレス空間の領域を指す。現実的には区間状の連続領域だが、それに制限することはない。ロケーションの全体をLocとする。例えば、Loc ⊆ Addr×N+ のように定義する。
型とスキーマを同一して、スキーマは図式=有向グラフとして定義して、頂点ラベルをソート記号、辺ラベルをカラムとかフィールドと呼ぶ。頂点を一個指定して、それを主ノードと呼ぶ。主ノードのラベルが他と重複はないとして、主ノードとそのラベルを同一視する。つまり、主ノードと主ソートは同じこと。
主キーまたは主ロケーションとは、Locを値にするフィールドで、単射であることを要求する。さらに、異なるロケーションはオーバーラップしてないとする。これは分離条件と呼ぶことにする。主ロケーションとは自分のロケーションと解釈する。主ロケーション=自ロケーション。
主ロケーション=自ロケーションを持つスキーマをテーブルスキーマまたはオブジェクトスキーマと呼ぶ。
主ロケーション以外にLoc値をとるフィールドは外部ロケーションと呼ぶ。外部ロケーションには分離条件を課さないが、オーバーラップがあるとろくな事がないのは事実。
アドレス空間を固定するとロケーションも固定される。そのロケーションに値を取るような複数のオブジェクトスキーマと関連する値スキーマを一緒にするとシステムスキーマができる。このスキーマの極限がシステムの合成イメージになるのだろう。
状態の更新
CRUD操作とはよく言ったものだ。「状態=主ノードの有限集合への割り当て」とする。有限集合の要素をレコードとかインスタンスと呼ぶ。状態の更新は次の基本操作の組み合わせで表現される。
- creation : 余域側の有限集合に新しい要素が追加される。
- read : 余加群の観測演算を実行する。
- update : 加群の作用を実行する。
- delete : 余域側の有限集合に以前の要素がなくなる。
値の集合Vはフロベニウス半群であり、次の演算を持つ。
- 定数の生成: 1→V
- 右自明半群演算: V×V→V
- 複製、対角: V→V×V
- 消去、破棄: V→1
対角(余乗法)と破棄(余単位)でコモノイドになるが、単位は要求してなくて、右自明演算は結合的なだけ。ステパノフが言っている正則型とは、フロベニウス半群だと思う。また、ステパノフの正則関数とは、フロベニウス半群の準同型と考えるべきだろう。