このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

circ-Kleisli構成

circ-Kleisli構成をきまじめにかつ一気に定義すると、かなり面倒。circ-Kleisli構成=Circ構成の後にKleisli構成だと思う。このことを確認できれば、話は単純になる。←勘違い、そんなことではない。

現象の観察結果なので、“一気の定義”が先に来てしまった。以下、現象論的定義:

Cはを有限余完備圏として、直和構造(+, 0)で対称モノイド圏とみなす。i, jは直和の標準入射、∇が余対角射だとする。自己関手F:C→Cが、自然変換ε:I→F、μ:FF→Fでモナドになっているとする。自然変換δA,B:F(A)+F(B)→F(A+B) は、F(i):F(A)→F(A+B), F(j):F(B)→F(A+B) から δA,B = (F(iA,B)+F(jA,B));∇A+B:F(A)+ F(B)→F(A+B)として定義する。δ: +(F(-),F(-)) →F(+(-, -)):C×C→C。δは余分配(変換)とでもいうべきか。

新しい圏Dを次のように定義する。|D| = |C|、α:A+X → F(B+X) in C がDの射:A→Bとする。α:A→B, β:B→C in D('C'がだぶった、心眼で区別する)とは、α:A+X→F(B+X), β:B+Y→F(C+Y) in Cのこと。α':A+X+Y→F(B+X+Y) in Cは、(α+εY);δで定義する。このδは、F(B+X)+F(Y)→F(B+X+Y)である。同様に、β":B+X+Y→F(C+X+Y) は (B+σ);(β+εX);δ;ηとして定義する。σは対称、ηはF(C+Y+X)→F(C+X+Y)の同型。

α'とβ"のKleisli結合*を圏Dでのαとβの結合とする。つまり

  • α;β in D = α'*β" in C

ここで、f*g = (f;F(g));μC in C。


定義の途中で、余対角∇や余分配δが出てくるから、余対角を持つ対称モノイド圏とか余分配を持つモナドとかの条件が付くのだろう。が、計算してないからいまいちハッキリしない。

モナドFは色々変化させたい。モナドFに従ってcirc-Kleisli(F)も変わる。C上の全モナドは比較や構成を射として圏だから、F|→circ-Kleisli(F)は、Monad(C)→Ext(C)のような関手となるだろう。Ext(C)はCの拡張圏の圏。これは、現象的には、

などなど。

IDL、CDL(constraint def./desc. language)の意義や使い道はいちおう分かった。プログラミング言語とデータ記述言語、エルブラン型定理との関係をハッキリさせたい。公理的意味論≒プログラム証明はうまくいかない気がしているのだが、その理由が知りたい。プログラム証明をやるには、プログラミング言語に推論規則が最初から付いている必要がある -- が、それっていったいどういうことだ?

どうでもいいけど、インスティチューションはSignを中心とした村だな。村と村の交通/交流が必要だ。町村合併とかも。