最近気付いたことを大雑把に記します。細部は記述していません。
ファイバー積(引き戻し、pullback)が存在する圏Cに対して、スパンの圏Span(C)が定義できます。特にCが集合圏Setである場合を考えます。Span(Set)の話ですね。Span(Set)のなかに、関係圏Relを埋め込めるので、Span(Set)はRelの拡張だとも言えます。
この圏Span(Set)は、一般化された行列の圏として表現できることに気付きました。
- Span(Set) Mat|Set|Set
の右側は一般化された行列の圏ですが、これは後で説明します。は圏同値です。かなり“強い”圏同値なので、イコールだと思ってもいいでしょう。つまり、Span(Set)とMat|Set|Setを同一視してもかまわない、ということです。
内容:
スパン
Span(Set)の前に、SPAN(Set)を定義します。大文字だけで書いたSPAN(Set)は圏に近いですが、圏ではありません。
S = SPAN(Set) と置くと、Sとは次のようなものです。
- |S| = |Set|
- S(A, B) は、A←X→B という形のスパンの集合。
- (A←X→B)∈S(A, B) と (B←Y→C)∈S(B, C) の結合(composition)は、コスパン(X→B←Y)のファイバー積X×BYを使って (A←X×BY→C)∈S(A, C) と定義する。
- 恒等 IdA∈S(A, A) を、自明なスパン(A←A→A)として定義する。
S = SPAN(Set) が圏にならないのは、次の3つの条件を満たさないからです。
- ホムセットが集合である。
- 結合(composition)の結合律(associative law)が等式として成立する。
- 恒等の単位律が等式として成立する。
S = SPAN(Set) では、
- S(A, B) は巨大な集まりで、小さな集合(small set)とは言えない。
- 結合律は等式としては成立しない(成立することを保証はできない)。up-to-isoでなら成立する。
- 同様に、単位律もup-to-isoでしか成立しない。
ホムが大き過ぎるし、計算法則もユルユル。扱いにくいのは事実です。しかし、集合A, Bを固定してS(A, B)を眺めると、これは圏になっています。この圏の射 f:(A←X→B)→(A←Y→B) は、スパンのボディのあいだの写像 f:X→Y で左右の脚と可換なものと定義すればいいのです。特に、A = B = 1 = 単元集合 とするなら、S(1, 1)は集合圏Setと圏同型(圏同値より強い)となります。また、S(A, 1)はオーバー圏Set/Aと圏同型です。
個人的には、S = SPAN(Set) をそのまま使ってもいいと思うのですが、通常は細工をして圏にします。A, BごとのS(A, B)は圏なので、対象のあいだの同型概念が定義できます。同型な対象を同一視すれば、結合律と単位律が等式で成立するようになります。
- (Span(Set))(A, B) := |S(A, B)|/
こう定義した場合、(Span(Set))(A, B)が小さな集合なのか? これはあやしいですよね。例えば、(Span(Set))(1, 1)はSetと同一視可能です。Setの同型類の集まりは、基数の集まりと同じサイズを持つので「小さくない」と僕には思えるのですが、ハッキリした説明を見たことがないです。
とはいえ僕は、サイズもユルユルも気にしないので、何もしないもとの状態 S = SPAN(Set) で考えます。気になる人はホムを同型で割ってください -- サイズはともかくもユルユルは改善されます。
圏係数の行列
まず、Kを可換半環とします。MatKを、K係数の行列の圏とします。行列の圏については「はじめての圏論 その第2歩:行列の圏」で説明しています。n, m∈N に対して、MatK(n, m)は、K係数のm行n列の行列全体の集合です。
行列の係数域を半環から半環圏に一般化しましょう。半環圏は、半環と似た構造を持つ圏です。2つのモノイド積, を持っていて、それらのあいだに分配律がup-to-isoで成立するような圏だと思えばいいです。もっと詳しいことは「デカルト半環圏の定義を確認してみる(デカルト半環作用圏のために)」に書いてあります。は対称なモノイド積です。も対称だと仮定したほうが話がスムーズでしょう。
C = (C, , O, , I) を半環圏とします。Oはに対するモノイド単位、Iはに対するモノイド単位です。具体例としては、(Set, +, 0, ×, 1) や (VectR, , {0}, , R) などがあります。
n, m∈N に対して、{1, ..., n}×{1, ..., m}→|C| の形の写像の全体を MATC(n, m) とします。|C|が小さい集合とは限らないので、MATC(n, m) も小さい集合とは限りません。それで、大文字でMATと書きました。
a∈MATC(n, m) と b∈MATC(m, k) に対して、行列の積 ba∈MATC(n, k) は普通の行列と同じように定義できます。足し算/掛け算は、Cのとを使います。baをa;bとも書きます。idnは、対角成分にIを、その他はOを並べた正方行列とします。
MATCは圏に似てますが、通常の圏ではありません。その理由は:
- MATC(n, m) は小さな集合とは限らない。
- 結合律は等式として成立するとは限らない。
- 単位律も等式として成立するとは限らない。
事情は、SPAN(C)が圏とは限らないのと同様です。
n, mを固定したときのMATC(n, m)は圏になります。|MATC(n, m)|は先に定義したC係数の行列の集まりとして、a, b∈|MATC(n, m)| に対して、f:a→b をCの射の行列だとします。つまり、f:{1, ..., n}×{1, ..., m}→Mor(C) です。dom(f(i, j)) = a(i, j), cod(f(i, j)) = b(i, j) を満たすとします。
対象の行列を1-セル、射の行列を2-セルと考えると、MATCには2次元の圏もどきの構造が入ります。
- 縦結合は厳密な結合律、単位律を満たす。
- 横結合(行列の積)はup-to-isoで結合律、単位律を満たす。
- 全体として双圏の公理を満たす。
- しかし、ホムセットが集合とは限らない。
行列概念をもう少し一般化しておきましょう。行列のインデックスに自然数以外も許すことにします。
行列は縦横2次元の配置ですが、係数(成分)の位置は {1, ..., n}×{1, ..., m} でインデックスされます。言い方を換えると、インデックス集合は自然数の区間です。
インデックス集合の概念を拡張するために、集合の族(family of sets)Jを考えます。そして、Jに属するA, Bに対して MATC(A, B) を考えることにします。そうやって作った行列の双圏(ホムセットが小さいとは限らない)をMATJC と書くことにします。インデックス集合をJ内に取る以外はMATCと変わりません。
SPANとMATの対応関係
以上で、圏Cに対してSPAN(C)とMATJCが定義できました。SPANとMATの定義の仕方はまったく違うので、SPANとMATを比較することは一般には出来ません。しかし、C = Set のときなら、SPANとMATを比較できて、SPAN(Set)とMAT|Set|Setは(大きなホムセットを許す)双圏として同値になります。
今までの定義に基いて計算してみると、集合に関するSPANとMATが同じであることは、直感的には割と明らかです。しかし、厳密に示すのは面倒です。インデックスの集合が有限集合とは限らないので、行列の積の定義を変更しなくてはなりません。有限和から無限和への拡張です。
無限和を自由に行うには、有限的な法則だけをもつ半環圏では不足で、無限演算(∞項演算)としてのモノイド積が必要です。集合圏Setの場合は、足し算が圏論的直和、つまり余極限で与えられるので、余完備性として無限和を記述できます。集合圏に限るなら、無限直和を入れても分配律が成立するので、MAT|Set|Setの行列計算はうまく定義できます。(余極限とは限らない無限モノイド積は面倒そうです。)
SPAN(Set)とMAT|Set|Setの対応を具体的にどう決めるかというと:
- |SPAN(Set)| = |MAT|Set|Set| = |Set| なので、対象のレベルでは恒等で対応させる。つまり、対象類は共有する。
- A, B∈|Set| ごとに、ホム類の対応 ΦA,B:(SPAN(Set))(A, B)→MAT|Set|Set(A, B) を作る。
- x = (A←X→B) がスパンで、左右の脚を Lx:X→A, Rx:X→B として、ΦA,B(x) := (Lx-1(a)∩Rx-1(b)| a∈A, b∈B) と定義する。
要するに、左右の脚の逆像により、スパンのボディXを細かく区切るわけです。区切られた各々の部分集合は、A×Bの要素でインデックスされます。なので、集合係数の行列とみなせるのです。
この定義をもとに、他の定義をしたり必要な性質を確認していけば、SPAN(Set) MAT|Set|Set が分かります。ホム類ごとに同型で割れば Span(Set) Mat|Set|Set も従います。
スパンの圏よりは、行列の圏のほうが計算がしやすい気がします。インデックス集合を有限集合に限るなら、無限和が不要なので、VectRのような圏からも行列の圏は作れます。半環圏に対して、スパンの圏のようなものを作りたいとき、行列の圏で代用できるケースはありそうです。