ベキのKleisli圏とKleisli圏のベキは違う
過去のエントリーを読み直した。
指標Σの項モナドをTΣ(-)とする(もともとはTIΣと書いてあった)。LΣ(-) := Pow(TΣ(-))と定義する。ここで、Powは共変ベキ・モナドである。一方、圏Cに対する木下ベキ構成をPOW(C)とする。
C上のモナドFのKleisli圏をKl(C, F) = Kl(F) と書くことにする。モナドTΣ(-)とLΣ(-) を十分に大きな圏(アンビエント圏)A上で考える。そのとき、POW(Kl(A, TΣ(-))) と Kl(A, LΣ(-)) が一致する(圏同値)と言ったが、これは間違い。
実際は、POW(Kl(A, TΣ(-)))のほうが大きくて、Kl(A, LΣ(-)) からの埋め込み(忠実関手)が存在する。
まず、Kleisli射を{yj ::= ej(x1, ..., xn) } の形の方程式系として表す。Kl(A, LΣ(-)) の射は、{yj ::= Ej(x1, ..., xn) | Ej ∈LΣ(X)} の形に書ける。Ej は、Ej⊆TΣ(X) である(定義より)。jが1からmまで動くとすると、この方程式系は、(Pow(TΣ(X)))m (m個の直積)でエンコードできる。
一方、POW(Kl(A, TΣ(-)))の射は、方程式系 Y→TΣ(X)))の集まりなので、Pow[(TΣ(X))m]でエンコードできる。明らかに、標準的な埋め込み (Pow(TΣ(X)))m→Pow[(TΣ(X))m]が存在する。
テンプレートとコンテキストの用語で言えば:
- POW(Kl(A, TΣ(-))) -- コンテキストセットの圏
- Kl(A, LΣ(-)) -- セット値コンテキストの圏
セット値コンテキストから導かれるあらゆるインスタンス・コンテキストの集まりは、コンテキストセットになっている。これが標準的な埋め込み。POW(Kl(A, TΣ(-)))を使うことがホントにあるかどうか? よく分からない。
ほとんど(すべて?)のスキーマ言語は、Kl(A, LΣ(-))しか使わないだろう。別にスキーマ・メタ項のモナドMΣ'があると、Y→MΣ'(X)とKleisli射(セット値コンテキスト) X→LΣ(S) があると、Y→LΣ(S) という新しいセット値コンテキストが作れる。この“代入”を可能とするには、MΣ'(X)に含まれる項を、X→LΣ(S)のコンテキスト(むしろ環境)により評価する意味写像が必要になる。この“メタ項の意味写像”が、2つのモナドを接着することになる。
いま書いたようなことが次にも書いてある。