このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

メイヤー代数、メイヤー指標、メイヤーオートマトン

「メイヤー先生からモナド類似構造へ」で、「モナド類似物」という歯切れの悪い言葉を使っていたので、もっとスッキリした呼び名を与えて、ストレージIOの文脈における「モナド類似物」の解釈を与えようと思います。

内容:

  1. 言葉使い
  2. メイヤー指標
  3. メイヤーオートマトンとその解釈

言葉使い

代数、モノイド、マグマ」において、「代数」と「モノイド」という2つの言葉を区別するのは無理だろう、と言いました。なので、「代数」と「モノイド」を厳密に区別する気はありません。メイヤー先生の原則に従った「Command-Query分離された状態遷移系」から出てくる代数系は、双モノイドとコモノイド(余モノイド)の組で、さらに加群の構造を持ちます。これをメイヤーモノイド、メイヤー双モノイドと呼んでも別に悪くはない気がしますが、より意味が曖昧な「代数」を付けて「メイヤー代数」なら、まーなんとでも解釈(言い訳?)できるので、これがよかろうと思います。

Cの自己関手の圏End(C)内のモノイドがモナド、コモノイドがコモナドなんですが、んじゃ、End(C)内の双モノイドや、モノイド上の加群、コモノイド上の余加群とかは何と呼ぼうか? って話があります。一時、「双モナド」か「両モナド」かと悩んでいました(今はどっちでもいい感じ)。「カテゴリカル・モデリングに向けて」では、End(C)内の加群を、苦しまぎれに「モナド加群」と呼んでいます。「モナド的代数系と一般化クライスリ圏」では「モナド的」という形容詞を出してみました。

アルテンキルヒ達(Thorsten Altenkirch, James Chapman, Tarmo Uustalu)が「モナド類似物」(monad-like entities)と言っているのを知って、「インデックス付き圏のフビニ/グロタンディーク同値」あたりから、「類似物」を使い出しました。この流れで、メイヤー・モナド類似物? -- うーん、「類似物」って言葉も語感がよろしくないですね。

形容詞「モナド的」はまーまーだと思うのですが(例:モナド的メイヤー代数)、モナド的(monadic)は「単項の」という意味もあるし、圏論内でもmonadicityなんて概念があります。「かぶっちゃダメ」とか言ってると身動き取れなくなりますが、できれば混乱を避けたい気持ちもあります。

End(C)で考えると、代数系の台対象(underlying object)が関手となるので、関手的(functorial)はどうでしょうか。メイヤー代数を自己関手圏で考えたものは関手的メイヤー代数(functorial Meyer algebra)と。ピッタリだとも思えないけど、他に思いつかない。これでいいや。

メイヤー代数上の加群は素直にメイヤー加群でよかろう、とそう思ったのですが、加群てmoduleだったんですよね。Meyer moduleだと、プログラミングで出てくるモジュールだと思われそう。日本語の「加群」ならいいのですが … 。メイヤー加群は「Command-Query分離された状態遷移系」に対応するので、代数の用語はやめてメイヤーオートマトンにしましょうか。代数的な文脈ではメイヤー加群、状態遷移を考えているときはメイヤーオートマトン、内容的には同じなのでこれらは同義語です。

メイヤー指標

代数や余代数は指標によって定義されることがあります。インスティチューションでは、指標と指標射からなるベース圏の上にモデル圏が森の木のように“生えた”構造を考えます。メイヤー代数もメイヤー指標で定義可能です。

集合圏で考えることにすれば、メイヤー指標は、1つの隠蔽ソート(hidden sort)を持つ隠蔽指標(hidden signature)です。次のものから構成されます。

  1. Commandを表す記号の集合C
  2. Queryを表す記号の集合Q、各記号qには値のソートVqが割り当てられている

CもQも無限集合でもかまいません。Vq達は既に知られた集合だとして、可視ソート(visible sort)と呼びます。集合Cから生成された自由モノイドをM、Vq を q∈Q に渡って直積に組んた集合をVとします(M := C*、V := Πq(Vq) )。

MにもVにも、対角写像と単元集合1への自明な写像によりコモノイド構造を導入できます。モノイドMによるVへの作用(スカラー乗法)a:V×M→V を与えれば、指標 (C, Q) から作ったメイヤー代数を構成できます。

以上の構成では、aは自動的に作ったものではありませんが、Vより大きなV'を次のように構成すれば、aもタダで手に入ります。

  • V' := V×M とする。
  • (v, x)∈V' に対して、a((v, x), y) := (v, x・y) と定義する。・はMのモノイド乗法。

この構成により、M := C*、V' := (Πq(Vq))×C* 上にメイヤー構造が導入されます。これは、与えられたメイヤー指標に対する自由メイヤー代数です。

メイヤー指標Σを持つメイヤー代数は、Σ上の自由メイヤー代数の部分代数や、なんらかの関係を入れた商代数となります。メイヤー代数の場合は、標準的な部分代数と商代数もタダで定義できます。到達可能性と識別可能性という概念を使い、マイヒル/ネロード(Myhill/Nerode)風の定理を導きます -- この話は長くなるのでまた別な機会にしましょう。

メイヤーオートマトンとその解釈

メイヤーオートマトンは、メイヤー代数上の加群です。(M, V)を台とするメイヤー代数自体が、Vを加群の台(状態空間)とする加群となります。これは、スカラー体もベクトル空間とみなせるのと同じです。メイヤーオートマトン(メイヤー加群)は、クライアント・サーバー型のストレージのモデルになるので、対応関係(解釈)を述べます。

(M, e, m, !, Δ) が双モノイド構造、(V, !, Δ) がコモノイド構造、a:V×M→V がメイヤー代数としてのスカラー乗法とします。それとは別に、(S, α, δ) があり、メイヤーオートマトン(メイヤー加群)となっているとします。α:S×M→S は加群としてのスカラー乗法(状態遷移)、δ:S→S×V は余加群としてのスカラー余乗法(観測操作)です。

代数的概念 ストレージとしての解釈
双モノイドの台 M 更新操作の集合
単位元 e なにもしない操作
乗法 m 更新操作の順次結合
単位法則 なにもしない操作はなんの影響もないこと
結合法則 3つ以上の更新操作の順次結合を合理的に定義可能なこと
余単位 ! 操作の破棄
余乗法 Δ 操作の複製
余単位法則 複製した操作を捨ててもなんの影響もないこと
結合法則 操作の複製は何度でも安全に行えること
コモノイドの台 V 観測値(またはキャッシュ値)の集合
余単位 ! 値の破棄
余乗法 Δ 値の複製
余単位法則 複製した値を捨ててもなんの影響もないこと
結合法則 値の複製は何度でも安全に行えること
スカラー乗法 a 観測値またはキャッシュへの更新操作
双代数法則 観測値またはキャッシュへの更新結果を予測可能なこと
加群の台 ストレージの状態空間
スカラー乗法α ストレージへの更新操作
スカラー余乗法δ ストレージへの問い合わせ
加群の双代数法則 ストレージへの更新による“観測値の変化”を予測可能なこと


メイヤー指標がアプリケーションに対するインターフェースを与え、メイヤー代数がクライアントの実装(リクエスター)、メイヤーオートマトンがクライアントとサーバーを含めたストレージ全体の実装となります。