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

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

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

参照用 記事

交替律と分合律

昨日の記事「交替律の色付き絵」にて:

最近、分合律だけではうまくいかない状況があったのですが、交替律(interchange law)は成立している模様でした。



  • A*B + C*D → (A # C)*(B + D)

トランザクションと例外を混ぜた計算のとき、この法則が使えます。

興味を持つ人がいるとは思えないけど、備忘メモを自分のために書いておこうかな、と。

掛け算の記号に×、足し算の記号に+を使いますが、必ずしも直積と直和とは限りません。圏C上に2つのモノイド積×, +があるか、あるいは (C, +) がモノイド圏で、別のモノイド圏 (A, +) がCに作用している(A→End(C) がある)状況を考えます。

赤を×、青を+として、上から下に絵を見ていけば:

  • (A×B) + (C×D) → (A + C)×(B + D)

逆方向に下から上なら:

  • (A + C)×(B + D) → (A×B) + (C×D)

とりあえず、上から下に見ることにして、(C×)をD側にくっつけて、(+C)をA側にくっつけます。

“極限”として、Cの存在が消えてしまうようにします。つまり、C×D = D、A + C = A です。これが成立するためには、Cが、「×の単位」でもあり「+の単位」でもあればよいでしょう。Cがそうゆう、2つのモノイド積(またはモノイド積と作用)の共通の単位とすれば、次が成立します。

  • (A×B) + D → A×(B + D)

逆方向(下から上)の議論をするなら:

  • A×(B + D) → (A×B) + D

すぐ上の式は分合律(dissociative law, linearly distributive law)です。

2つのモノイド積(またはモノイド積と作用)に共通の単位対象があるような状況だと、交替律の特殊ケースとして分合律またはその逆向きが出てきます。この分合律(テンソル強度の一種)は、環境(コンテキスト)を持つ計算と例外処理を組み合わせるときに出てくるものです。

分合律が交替律の特殊ケース(退化形)であるならば、イミュータブルな環境をミュータブルな環境の特殊ケースとして捉えられるのではないかと予想できます。ちゃんと確認してないので、勘違いの可能性もありますけどね。

もし予想のとおりなら、ミュータブルな環境における計算もイミュータブルな場合の拡張として似た扱いができます。特に、ストレージIOを含む例外付き計算の一般化クライスリ圏が、イミュータブルな場合の自然な拡張として作れるはずです。作れたらいいな … 。