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

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

強モナドってか? -- まだcirc-Kleisli構成

対称モノイド圏上のモナドFで、Fによるcirc-Kleisli構成のためにF(A)+F(B)→F(A+B)が必要だと書いたが、実際には、モナド単位B→F(B)と組み合わせて、F(A)+B→F(A)+F(B)→F(A+B)として使う。つまり、ほんとに必要なのはF(A)+B→F(A+B)だった。

F(A)+B→F(A+B)は、テンソル強度(tensorial strength)というらしい。テンソル強度を持つモナドは強モナド(strong monad)らしい。つまり、対称モノイド圏+強モナドがcirc-Kleisli構成のsettingになるようだ。

強度があれば、f:A→F(B) に対して、f'X:A+X→F(B)+X→F(B+X)が定義できる、これは“F-resulticなf”のX拡張と呼べるだろう。F-resulticを保つモノイダルラベリングだ。circ-Klisli構成では、f:A+X→F(B+X)に対して、f':A+X+Y→F(B+Y+X)という射が必要。X+YがY+Xになっている所がミソで、対称でひねった“twisted Y拡張”だ。FがIdentityなら、f':A+X+Y→B+Y+Xとなる。g:B+Y→C+Yのとき、f'Y:A+X+Y→F(B+Y+X)、g'X:B+Y+X→F(B+X+Y)となり、うまいことKleisli composableである。

モナドについては、Moggiの"Computational lambda-calculus and monads"(http://www.disi.unige.it/person/MoggiE/ftp/lics89.pdf)に書いてある。circ-Klisli構成とMoggiの議論、どうも状況は似たような感じだが、ハッキリとは関連を把握できない。

とりあえず、強モナドの定義を引き写しておく:


tensorial strength tA,B:A×TB→T(A×B)
×の単位性 rA:1×A→A
×の結合性 αA,B,C:(A×B)×C→A×(B×C)

(等式1)
1×TA-[t1,A]→T(1×A)-[T(rA]→TA

1×TA-[rTA]→TA

(等式2)
(A×B)×TC-[tA×B,TC]→T( (A×B)×C)-[T(α)]→T(A×(B×C))

(A×B)×TC-[α]→A×(B×TC)-[A×tB,C]→A×T(B×C)-[tA,B×C]→T(A×(B×C))

(等式3)
A×B-[A×ηB]→A×TB-[tA,TB]→T(A×B)

A×B-[η]→T(A×B)

(等式4)
A×TTB -[A×μB]→A×TB-[tA,B]→T(A×B)

A×TTB -[TA,TB]→T(A×TB)-[T(tA,B)]→TT(A×B)
-[μA×B]→T(A×B)

天下りだと辛いので、Moggiはラショネールを述べているが、モノイド閉圏の自己enrichmentが出てくる。そんなのが必要だとも思えないのだが、、、テンソル強度が要るのか?ほんとに。

テンソル強度t:A×TB→T(A×B)から、ペアリングT(A)×T(B)→T(A×B)を作れると、Moggiは言っている。σを対称、-#モナドの拡張として、σTA,TB;tTB,A;(σTB,A;tA,B)#だそうだ。


TA×TB-[σ]→TB×TA-[t]→T(TB×A) -
[(TB×A -[σ]→A×TB-[t]→T(A×B))#]

ペアリング(と呼ぶらしい)の公理化はないのか?