最近、圏論ネタの比率が高いなー。
インデックス付き圏(indexed category)の例で、比較的簡単でとても役に立つモノを紹介します。コモナドからの余クライスリ構成の知識を前提とするので、あんまりself-containedじゃないですけど、関連する説明が次の記事にあります。「モノイドからモナドを作る」だけ読めば、類推でだいたい分かるような気もします。コモノイドはモノイドの双対、コモナドはモナドの双対です。
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~[-] は、イミュータブルな環境を参照する計算をモデル化するのに好都合です。このインデックス付き圏は次の特徴を持ちます。
- すべてのファイバーの対象類が同じである。
- ファイバーのあいだの関手は対象類の上では恒等である。
- 終対象の上のファイバーはベースの圏と同型である。
- 以上のことから; すべてのファイバーにおいて、ベースの圏をファイバーに埋め込む関手があり、その埋め込み関手は対象類の上では恒等である。
インデックス付き圏 C~[-] は、一般のインデックス付き圏と比べて対称性と等質性が非常に高く、Cに対してなにか特権的なものに思えます。思うだけで、それ以上はあんまり分かんないけど。