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

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

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

[参照用 記事]

スパンの圏と行列の圏

最近気付いたことを大雑把に記します。細部は記述していません。

ファイバー積(引き戻し、pullback)が存在する圏Cに対して、スパンの圏Span(C)が定義できます。特にCが集合圏Setである場合を考えます。Span(Set)の話ですね。Span(Set)のなかに、関係圏Relを埋め込めるので、Span(Set)はRelの拡張だとも言えます。

この圏Span(Set)は、一般化された行列の圏として表現できることに気付きました。

  • Span(Set) \stackrel{\sim}{=} Mat|Set|Set

\stackrel{\sim}{=}の右側は一般化された行列の圏ですが、これは後で説明します。\stackrel{\sim}{=}は圏同値です。かなり“強い”圏同値なので、イコールだと思ってもいいでしょう。つまり、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つの条件を満たさないからです。

  1. ホムセットが集合である。
  2. 結合(composition)の結合律(associative law)が等式として成立する。
  3. 恒等の単位律が等式として成立する。

S = SPAN(Set) では、

  1. S(A, B) は巨大な集まりで、小さな集合(small set)とは言えない。
  2. 結合律は等式としては成立しない(成立することを保証はできない)。up-to-isoでなら成立する。
  3. 同様に、単位律も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)|/\stackrel{\sim}{=}

こう定義した場合、(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つのモノイド積\otimes, \oplusを持っていて、それらのあいだに分配律がup-to-isoで成立するような圏だと思えばいいです。もっと詳しいことは「デカルト半環圏の定義を確認してみる(デカルト半環作用圏のために)」に書いてあります。\oplusは対称なモノイド積です。\otimesも対称だと仮定したほうが話がスムーズでしょう。

C = (C, \oplus, O, \otimes, I) を半環圏とします。Oは\oplusに対するモノイド単位、Iは\otimesに対するモノイド単位です。具体例としては、(Set, +, 0, ×, 1) や (VectR, \oplus, {0}, \otimes, 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の\oplusと\otimesを使います。baをa;bとも書きます。idnは、対角成分にIを、その他はOを並べた正方行列とします。

MATCは圏に似てますが、通常の圏ではありません。その理由は:

  1. MATC(n, m) は小さな集合とは限らない。
  2. 結合律は等式として成立するとは限らない。
  3. 単位律も等式として成立するとは限らない。

事情は、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) \stackrel{\sim}{=} MAT|Set|Set が分かります。ホム類ごとに同型で割れば Span(Set) \stackrel{\sim}{=} Mat|Set|Set も従います。

スパンの圏よりは、行列の圏のほうが計算がしやすい気がします。インデックス集合を有限集合に限るなら、無限和が不要なので、VectRのような圏からも行列の圏は作れます。半環圏に対して、スパンの圏のようなものを作りたいとき、行列の圏で代用できるケースはありそうです。