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

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

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

参照用 記事

表現、加群、前層、インデックス付き圏、導来子

デイヴィッド・スピヴァックは、データベースを関手圏を使って定式化しました。それで僕は、「関手圏って役に立つんだなー」と思ったわけですが、改めて見渡してみれば、そこいらじゅう関手圏だらけですがね。

内容:

群が作用する集合、あるいは群の表現

G = (G, e, ・) が群のとき、Gが作用する集合AをG-集合と呼びます。作用とは、α:A×G→A という写像で、単位律 α(a, e) = a と結合律 α(α(a, x), y) = α(a, x・y) が成立するものです。左右を入れ替えた G×A→A を考える場合もありますが、本質的な違いはありません。Aがなんらかの意味で幾何的な集合のときは、G-集合をG-空間とも呼びます。

αをカリー化して、α' = λx∈G.(λa∈A.α(a, x)) を考えると、α'は、GからAuto(A)への写像になります。ここでAuto(A)とは、f:A→A という写像で可逆(同型写像全単射)なもの全体からなる集合です。Auto(A)は写像の結合(合成)を演算として群になります。ですから、α':G→Auto(A) は、与えられた群Gを、集合A上の写像達により表現することになっています。

Auto(A)の要素は集合Aの置換とも呼ばれるので、α':G→Auto(A) は群Gの置換表現ってやつですね。集合Aの代わりにベクトル空間Vを使って、写像も線形写像に限ると、Auto(V) は可逆な線形写像からなる群となり、G→Auto(V) は群の線形表現です。Vに基底を入れて行列を考えるなら、可逆正方行列によって群を表現することになります。

モノイドが作用する集合、あるいは加群

群は逆元を要求するので、コンピュータの計算現象にはなかなか適用できません。逆元の条件をはずしたモノイドなら、計算の文脈でも頻繁に登場します。

群のときと同様に、M = (M, e, ・) がモノイドのとき、Mが作用する集合AをM-集合と呼びます。作用の定義は群のときと同じです。作用αをカリー化して、α' = λx∈M.(λa∈A.α(a, x)) を考えると、α'は、GからEnd(A)への写像になります。End(A)は、f:A→A という写像です。可逆性は要求しません。End(A)は写像の結合(合成)を演算としてモノイドになります。α':M→End(A) は、モノイドMの写像表現ですね。Aを状態空間と考えれば、Mが状態遷移を与えます。特に、MがアルファベットΣから生成された自由モノイドのとき、Σ*-集合とはオートマトンのことです。

モノイドMとM-集合の概念を、そっくりベクトル空間の圏に移しましょう。同じ記号Mを使いますが、Mはベクトル空間です。モノイド乗法mは、m:M(×)M→M という線形写像です。(×)はテンソル積です。なので、mはM上の双線型写像と考えられます。他に単位元 e∈M があって、単位律と結合律が成立するので、結局、M = (M, e, m) は、多元環(必ずしも可換とは限らない代数)です。ベクトル空間Aに多元環Mが作用するとは、Mによる右(左も可)スカラー乗法が定義されていることなので、AはM上の加群となります。

集合圏におけるモノイドMに対するM-集合を、ベクトル空間の圏で考えると多元環M上の加群となります。背景となる圏が違うだけなので、僕は、M-集合とM-加群をあまり区別しないで使っています。状態遷移系やオートマトン*1のことも加群と呼んでもいいような気もします(違和感を持つ人もいるでしょうが)。

圏が作用する集合、一般化加群

モノイドMは圏の特別な場合でした。対象がただ1つの圏がモノイドなのです。M-集合(Mの表現)とは、圏とみなしたMから集合圏Setへの関手 F:M→Set です。|M| = {0} として、F(0) = A と置きます。x∈Mは、x:0→0 という射ですから F(x):F(0)→F(0)、つまり、F(x):A→A、さらに F(x)∈End(A) となります。逆に、特定の集合Aと M→End(A) というモノイド準同型写像を与えれば関手が確定します。

M-集合が関手のことだと分かったので、Cが圏のとき、関手 F:CSetC-集合、または圏C表現と呼んでもいいでしょう。Cの対象は1つとは限らないので、X∈|C| ごとに集合 F(X) が決まります。スピヴァックの関手データモデルなら、Cはデータベーススキーマで、C-集合はデータベースインスタンスです。集合圏の代わりにベクトル空間の圏を採用すれば、圏Cの線形表現となります。特に、Cが順序集合や有向グラフのときは箙<えびら>(quiver)の表現として知られているようです。

ホムセットに足し算が定義された圏(Ab-豊饒圏)Cを考えましょう。対象が1つだけなら、圏の結合を掛け算と考えて、C多元環となります。多元環の表現と多元環上の加群は同じことで、足し算を保存する関手 F:CAb となります。圏の対象がイッパイあるときも、足し算を保存する関手 F:CAb を、表現または加群と考えてよいでしょう。

今までの話から、圏Cから出る関手 CSetCVectCAb などは、表現または加群の概念の一般化だとみなせます。したがって、関手圏 [C, Set]、[C, Vect]、[C, Ab] などは、圏C表現の圏またはC上の加群の圏となります。特別な場合として、群/モノイドの表現、オートマトン、データベースインスタンス、箙の線形表現、多元環上の加群などがあります。

参考エントリー:

前層、インデックス付き圏、導来子

Cに対して、関手圏 [Cop, Set] は、C上の前層の圏と呼ばれます。個々の関手が前層です。習慣上、反変関手を前層と呼びますが、矢印の向きだけの問題なので、前層の圏とは要するに関手圏のことです。

おそらく歴史的には、空間X上の開集合の包含順序から作られたやせた圏をCとしたケースが前層(や層)の起源でしょう。しかしスピヴァックは、Cとしてデータベーススキーマ(テーブルとカラムの仕様)を使って関手データモデルを構成しました。集合圏の代わりにモナドのクライスリ圏Kを使った [C, K] の例も色々と出しています(Kleisli Database Instances)。

単一のデータベーススキーマだけではなくて、考える範囲のデータベーススキーマの全体をSchとすると、S∈|Sch| に対する S|→[S, Set] はSch上で定義された関手 DB:SchCAT に拡張できます。DB(S) = [S, Set] がS上のでデータベースインスタンスからなる圏です。

DB:SchCAT は、Schをベース圏(インデキシング圏)とするインデックス付き圏となります。Sch を指標圏とみなしたインスティチューションの構造が入ります(「一般関手モデル:インスティチューションとの関係」参照)。また、DB:SchCAT は、導来子(derivator)とみなせそうです(グロタンディークの導来子の条件を多少弱める必要があるかも知れませんが)。

と、なにやら関手圏がやたらに出てきます。関手圏て、現象を記述する基本的な言葉なのかもなー、と思ったりします。

*1:状態遷移系とオートマトンはほとんど同義語で、あまり厳密な区別はないと思います。