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

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

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

参照用 記事

デカルト圏の掛け算から作るインデックス付き圏の例

最近、圏論ネタの比率が高いなー。

インデックス付き圏(indexed category)の例で、比較的簡単でとても役に立つモノを紹介します。コモナドからの余クライスリ構成の知識を前提とするので、あんまりself-containedじゃないですけど、関連する説明が次の記事にあります。「モノイドからモナドを作る」だけ読めば、類推でだいたい分かるような気もします。コモノイドはモノイドの双対、コモナドモナドの双対です。

  1. モノイドからモナドを作る
  2. コモナドは何の役に立つ
  3. コンピュータ系実務者のための双対性(概略)
  4. 単一代入のモノイド、スタンピングモナド、モナド工場

Cデカルト圏とすると、Cの任意の対象Aに対して、対角射ΔAと終射(終対象への唯一の射)!Aを組み合わせた (A, ΔA, !A) はコモノイドになります。この事実は、ほとんどデカルト圏の定義と言ってもいいでしょう。デカルトCの対象は、自動的に(あるいはタダで)コモノイドになるので、いちいち (A, ΔA, !A) とか書かないで、「コモノイドA」のように書きます。

C対象Aを選んで、コモノイドAによるスタンピング関手(掛け算関手)を考えます。この関手は、インフォーマルなラムダ記法で書けば次のようになります。

  • λX.(X×A)
  • λf.(f×idA)

AとidAを同一視して、無名のラムダ変数「-」を使えば、スタンピング関手を (-×A) と簡単に書けます。

コモノイドAによるスタンピング関手 (-×A) は圏C上の自己関手で、対角射ΔAと終射!Aを使えば、圏C上のコモナドを作れます。このコモナドによる余クライスリ圏を C~[A] と書きます。Aを変えれば、もちろん C~[A] も変化します。

f:A→B がCの射のとき、余クライスリ射(余クライスリ圏C~[B]の射の対応物)ψ:X×B→Y in C に idX×f を前結合(pre-compose)することにより別な余クライスリ射 (idX×f);ψ:X×A→Y in C を得ることができます。この対応は、C~[B] → C~[A] という関手を定義します(確認してみてください)。

以上に述べた構成により、デカルトCをベースとするインデックス付き圏が作れます。こうして作ったインデックス付き圏 C~[-] は、イミュータブルな環境を参照する計算をモデル化するのに好都合です。このインデックス付き圏は次の特徴を持ちます。

  1. すべてのファイバーの対象類が同じである。
  2. ファイバーのあいだの関手は対象類の上では恒等である。
  3. 終対象の上のファイバーはベースの圏と同型である。
  4. 以上のことから; すべてのファイバーにおいて、ベースの圏をファイバーに埋め込む関手があり、その埋め込み関手は対象類の上では恒等である。

インデックス付き圏 C~[-] は、一般のインデックス付き圏と比べて対称性と等質性が非常に高く、Cに対してなにか特権的なものに思えます。思うだけで、それ以上はあんまり分かんないけど。