圏論における普遍性と普遍射

数学における普遍性の概念は、どういうものなのか一言で説明しにくいものだけど、圏論では普遍射を使って定義するのが普通。
と思ったら、『ベーシック圏論』は副題(訳書での追加?)が「普遍性からの速習コース」だけど、本文中に普遍射という言葉がそもそも出てこない。普遍元は出てくるけど、これも脇役的な扱いという感じがする。

目次:

  1. 普遍性と普遍射の説明
    1. n次元ベクトル空間に関する普遍性
    2. 普遍射
    3. 内側からの特徴付け、外側からの特徴付け
    4. 普遍性の定式化
  2. 例: 集合の直和とベクトル空間の直和
    1. 集合の直和
    2. ベクトル空間の直和
    3. 直和の持つ普遍性
    4. 圏論的な定式化
    5. 直積
  3. 例: 商集合
    1. 商集合の作り方
    2. 商集合の持つ普遍性
    3. 普遍要素による定式化
  4. 例: 核(カーネル)と余核(コカーネル)
  5. 例: ベキ集合
  6. 例: 像(イメージ)
  7. 普遍射を使わない定式化と表現可能関手

1. 普遍性と普遍射の説明

1.1. n次元ベクトル空間に関する普遍性

n次元ベクトル空間Vを取る。(スカラーKは何でも良いのでひとつ固定して考える。例えばK=ℝとしておく。) 次にVの基底(a1、…、an)を何でもよいので一つ取る。
このときベクトル空間Vは次のような性質を持っている。

ベクトル空間Wを好きに取る。
この時、集合{a1、…、an}からWへの写像
 \{a_1,\ldots,a_n\} \overset{f}{\longrightarrow}W
は、常にただひとつの仕方で、VからWへの線形写像
 V \overset{\bar{f}}{\longrightarrow}W
に拡張できる。
(なぜなら、写像\bar{f}が線形性を満たすためには、 k1a1+…+knan∈Vに対して、
 \bar{f}(k_1 a_1 + \cdots +k_n a_n) = k_1 f(a_1) + \cdots + k_n f(a_n)
と定義するしかないから。)
また、逆にVからWへの線形写像gがあると、gの定義域を{a1、…、an}に制限することで、{a1、…、an}からWへの写像\tilde{g}が一意に決まる。
よって、上の性質は次のようにも言える。
ベクトル空間Vと{a1、…、an}は次の性質を持つ。
ベクトル空間Wを好きに取る。この時、
 集合{a1、…、an}からWへの写像 \{a_1,\ldots,a_n\} \overset{f}{\longrightarrow}W
と、
 VからWへの線形写像 V \overset{\bar{f}}{\longrightarrow}W
とは、ちょうど1対1で対応する。
この性質を指して、ベクトル空間Vは {a1、…、an}に対して普遍性を持つ、と言われる。
ただこれだけだと、fと\bar{f}との間にどのような関係があるかを言っていないので、そこをもう少し正確に述べる必要がある。

1.2. 普遍射

上の性質で、ベクトル空間Wは好きに取って良かったので、WとしてV自身を取る。すると

  • 集合{a1、…、an}からVへの写像、と
  • VからVへの線形写像

がちょうど1対1で対応する。
ここで、VからVへの線形写像として、恒等写像1Vを取る。するとこの線形写像に対応する{a1、…、an}からWへの写像は、包含写像\{a_1,\ldots,a_n\} \overset{\eta}{\longrightarrow}V (各akにakを対応させて集合をVに埋め込む写像)となっている。
このηを使うと、 fと\bar{f}の関係は、

写像ηと\bar{f}と合成した写像 \{a_1,\ldots,a_n\} \overset{\eta}{\longrightarrow} V \overset{\bar{f}}{\longrightarrow} W ( 写像\bar{f}を{a1、…、an}に制限した写像)が \{a_1,\ldots,a_n\} \overset{f}{\longrightarrow}W と等しくなる」
と述べることができる。
この関係を数式で表すと普通は関数合成を「∘」で表して、
 \bar{f}\circ \eta = f
と表記される。でも、関数合成に「∘」を使うと
 A\overset{f}{\to}BB\overset{g}{\to} Cを合成すると A\overset{g\circ f}{\to}C となる。
のように、関数の順番がひっくり返った形になるので、関数合成される順番を入れ替えた演算子「⊳」を導入する。これを使うと
 A\overset{f}{\to}BB\overset{g}{\to} Cを合成すると A\overset{f \triangleright g}{\to}C となる。
と表記される。また普通の関数合成「∘」と同じ意味で「⊲」も使うことにする。*1
導入した「⊳」を使うと、fと\bar{f}の関係は、
 \eta \triangleright \bar{f} = f
となる。

またこの関係は「次の図が可換図式になる」と言うこともできる。*2
  \begin{array}{ccc} \{a_1,\ldots,a_n\} & \overset{f}{\longrightarrow} & W \\ \eta \downarrow  & & \parallel \\ \;\;\, V & \overset{\bar{f}}{\longrightarrow} & W  \end{array}

結局、問題の普遍性は次のように述べられる。

ベクトル空間Vと、基底からVへの包含写像η: {a1、…、an}→V は、次の性質を持つ。
ベクトル空間Wを好きに取る。この時、
 集合{a1、…、an}からWへの写像 \{a_1,\ldots,a_n\} \overset{f}{\longrightarrow}W
と、
 VからWへの線形写像 V \overset{\bar{f}}{\longrightarrow}W
とは、
 \begin{array}{ccc} \{a_1,\ldots,a_n\} & \overset{f}{\longrightarrow} & W \\ \eta \downarrow  & & \parallel \\ \;\;\, V & \overset{\bar{f}}{\longrightarrow} & W  \end{array}
を可換図式にする関係によって、ちょうど1対1に対応する。
そして、このときfと\bar{f}との関係を定めている写像ηを「普遍射」と呼ぶ。

さてここまでの話で
「集合{a1、…、an} はVの基底なのだから、{a1、…、an}に対して普遍性を持つのはVだけ」
だと思えるかもしれない。けれどもそうではない。

  • Vの代わりに、何でもいいのでn次元のベクトル空間Uを取る。
  • {a1、…、an}からUへの写像ηとして、η(a1)、η(a2)…、η(an)がU上の基底になる(=U上1次独立になる)ような写像を取る。

すると、このUとηに対しても上の関係が成り立つことを確認できる。つまりn次元のベクトル空間ならどれでも写像ηをうまく取れば上の普遍性を持っている。
さらに、集合{a1、…、an}の方もVの基底である必要は全く無く、n要素の集合ならどれでも良いことも分かる。

よってn次元ベクトル空間Vとn要素の集合Sがあったとき、適切な写像η: S→Vが必ずあり、次が成り立つ。

ベクトル空間Vと写像η: S→V は次の性質(普遍性)を持つ。
ベクトル空間Wを好きに取る。この時、
 集合SからWへの写像 S \overset{f}{\longrightarrow}W
と、
 VからWへの線形写像 V \overset{\bar{f}}{\longrightarrow}W
とは、
  \begin{array}{ccc} S & \overset{f}{\longrightarrow} & W \\ \eta \downarrow  & & \parallel \\ \;\;\, V & \overset{\bar{f}}{\longrightarrow} & W  \end{array}
を可換図式にする関係によって、ちょうど1対1に対応する。
またベクトル空間Vの次元がn以外の場合は、この普遍性を持たない。
つまり

  • ベクトル空間Vがn次元 ⇔ ベクトル空間Vは、n要素の集合に対して上記の普遍性を持つ。

が成り立っている。

1.3. 内側からの特徴付け、外側からの特徴付け

ここまで述べてきたベクトル空間についての普遍性は、ベクトル空間の次元について普通とは違う特徴付け(あるいは定義)を与えている。

  • 「ベクトル空間Vの次元がn」の通常の定義: 1次独立になるn個のベクトルを取れるけど、n+1個は取れない。
    • これは、ベクトル空間Vの内側にあるものだけで特徴づけられている。
  • 「ベクトル空間Vの次元がn」に対する普遍性による特徴付け: ベクトル空間Vはn要素の集合に対して普遍性を持つ。
    • これが成り立つかどうかは、ベクトル空間Vの内部だけでは決まらず、Vとその他あらゆるベクトル空間との関係で決まる。

この場合に限らず、普通は内部構造によって定義されている概念が、普遍性を用いて外側から特徴付けたり定義したりできる場合がある。この「外部から視点」「他との関係性」で特徴づけを与える、というのが普遍性を考えるひとつの効用になる。

1.4. 普遍性の定式化

上に出てきた可換図式は、圏論的には少し不純な感じがある。
Sは集合、fは一般的な(集合間の)写像、VとWはベクトル空間、ηと\bar{f}は線形写像というように、集合の圏Setの話とベクトル空間の圏VecKの話が混ざって出てきている。
そこでVecKからSetへの忘却関手Gを考える。(普通、忘却関手はUで表すけど、何となくGを使う。) 忘却関手Gは、

  • ベクトル空間Vに対してG(V)はそれを単なる集合として見たもの
  • 線形写像f:A→B に対して G(f): G(A)→G(B) はそれを集合間の写像として見たもの

となる。
この忘却関手Gを使うと、問題の普遍性は次のように述べられる。

集合S∈Setと忘却関手G: VecKSetに対して、ベクトル空間V∈VecK写像η∈Set(S, G(V))の組が普遍性を持つ。
と言われるのは、以下の時:
どのベクトル空間W∈VecKを取っても、

  • f ∈ Set(S, G(W)) と
  • \bar{f}VecK(V, W)

が、以下を可換図式にする関係 (つまり\eta \triangleright\bar{f} = fの関係)で1対1対応する。
  \begin{array}{cccc} & \;\;\,S & \overset{f}{\longrightarrow} & G(W) \\ {\bf Set}& \eta \downarrow  & & \parallel \\  & \;\;\, G(V) & \overset{G(\bar{f})}{\longrightarrow} & G(W) \\ \hline {\bf Vec}_K & V & \overset{\bar{f}}{\longrightarrow} & W \end{array}

そして、ここでの圏SetVecKの代わりにさまざまな圏CD対象AC、関手G:DCを取り、次の形の関係を与えることで、さまざまな普遍性が定式化される。(写像の矢印の向きが全て逆向きになる場合もある。)ここでFAが普遍性を持つ対象で、ηがその普遍射。
  \begin{array}{cccc} & \;\;\,A & \overset{f}{\longrightarrow} & G(B) \\ {\bf C}& \eta \downarrow  & & \parallel \\  & \;\;\, G(F_A) & \overset{G(\bar{f})}{\longrightarrow} & G(B) \\ \hline {\bf D} & F_A & \overset{\bar{f}}{\longrightarrow} & B \end{array}
以下、普遍性の例をいくつかあげていく。

2. 例: 集合の直和とベクトル空間の直和

2.1. 集合の直和

集合Aと集合Bの直和A⊔Bというのは、Aの要素とBの要素に重なりがないとみなして(もし同じ要素があればそれらを区別して)和をとったもの。例えば、 A={1, 2, 3, 4}、B={3, 4, 5, 6}の場合、
 A⊔B = {1, 2, 3, 4, 3', 4', 5, 6}
とか、
 A⊔B = {1A, 2A, 3A, 4A, 3B, 4B, 5B, 6B, }
のように表すことができる。
数学の本では、(必要なら要素をあらかじめ取り替えて)A∩B=∅として和集合A∪Bを取ることも多いので、「直和」としてはっきり出てくる機会は少ないかもしれない。プログラミング言語における直和型(Haskellでの代数的データ型、Rustでの列挙型)といった方が通じやすいかもしれない。

2.2. ベクトル空間の直和

ベクトル空間Aとベクトル空間Bの直和A⊕Bは、直積A×Bと同じもの。(a1,b1)∈A×Bと(a2,b2)∈A×Bの和は、(a1+a2, b1+b2)と定義され、(a, b)∈A×Bのスカラーk倍は、(ka, kb)と定義される。同じものが直「和」とも呼ばれ直「積」とも呼ばれるので、線形代数で登場したとき地味に混乱するところ。
また別の直和の定義も出てくる。
ベクトル空間Vの部分ベクトル空間A、Bについて「どのv∈Vも、Aの要素av∈AとBの要素bv∈Bによって一意に v = av+bvと表される」とき、VはAとBの直和V=A⊕Bである、と言う。

2.3. 直和の持つ普遍性

まず集合の直和について見てみる。
なんでも良いので集合Cを取って、集合AからCへの写像fA: A→Cと、集合BからCへの写像fB: B→Cを取る。
このとき、A⊔BからCへの写像f: A⊔B→Cで、

  • Aの要素x∈A⊂A⊔Bについては fAの値と一致する。 f(x)=fA(x)
  • Bの要素x∈B⊂A⊔Bについては fBの値と一致する。 f(x)=fB(x)

となるものが、ただひとつ存在する。
また逆に、A⊔BからCへの写像fがあると、写像をA上、B上に制限することで、AからCへの写像とBからCへの写像がただひとつ決まる。つまり、

  • AからCへの写像、BからCへの写像の組 (fA,fB) 、と
  • A⊔BからCへの写像f

が、ちょうど1対1で対応する。これが集合の直和A⊔Bの持つ普遍性になる。
普遍射はどうなるかというと、A⊔BからA⊔Bへの恒等写像に対して、それに対応する写像 A \overset{\eta_A}{\longrightarrow}A\sqcup B B \overset{\eta_B}{\longrightarrow}A\sqcup Bが普遍射になる。これらはAとBからA⊔Bへの包含写像になる。
よって、次の図が可換図式になるように、(fA,fB) ⇔ f が決まる。
 \begin{array}{ccc} \;\;\,A & \overset{f_A}{\longrightarrow}  & C \\ \eta_A\!\! \downarrow  & & \parallel \\ \;\;\, A\sqcup B & \overset{f}{\longrightarrow} & C \\ \eta_B\!\! \uparrow  & & \parallel \\  \;\;\,B & \overset{f_B}{\longrightarrow}  & C   \end{array}
これが集合の直和の持つ普遍性になる。

次にベクトル空間の直和A⊕B (=A×B)について見る。
ベクトル空間Cを取り、ベクトル空間AからCへの線形写像fAと、ベクトル空間BからCへの線形写像fBを取る。このとき、 ベクトル空間A⊕BからCへの線形写像fが
 (a,b)∈A⊕B について、 f((a,b)) = fA(a) + fB(b)
で一意に決まり、逆にf: A⊕B→C に対しては
 fA(a) = f((a,0))、 fB(b) = f((0,b))
によってfA、fBが定まり、(fA,fB) ↔ f が、ちょうど1対1で対応する。
また、もうひとつの直和である「どのv∈Vも、av∈A、bv∈Bによって一意にv=av+bvとなるとき、V=A⊕B」の場合を見ると、 fA: A→C、fB: B→C に対して、
 v=av+bv∈A⊕B について、f(v) = fA(av) + fB(bv)
でf: A⊕B→C が一意に決まり、f: A⊕B→C に対して、
 fA(a) = f(a)、 fB(b) = f(b)
でfA、fBが定まり、やはり (fA,fB) ↔ f が、ちょうど1対1で対応する。
普遍射も集合の場合と同じように決まり、次が可換図式となる。
 \begin{array}{ccc} \;\;\,A & \overset{f_A}{\longrightarrow}  & C \\ \eta_A\!\! \downarrow  & & \parallel \\ \;\;\, A\oplus B & \overset{f}{\longrightarrow} & C \\ \eta_B\!\! \uparrow  & & \parallel \\  \;\;\,B & \overset{f_B}{\longrightarrow}  & C   \end{array}

このように集合の直和とベクトル空間の直和は、(内部構造から見ると異なった定義が行われているけれど)外側からの視点(普遍性)から見ると、どちらの直和も同じ形の普遍性によって特徴づけられることが分かる。

2.4. 圏論的な定式化

直和を考えている圏をCとする。つまり集合の直和ならC=Set、ベクトル空間の直和ならC=VecKとする。
もうひとつ(C,C)という圏を取る。これは(C,C)の対象はCの対象の組(A,B)からなり、射はCの射の組(f1, f2)からなるような圏。
そしてCから(C,C)への関手として対角関手Δを取る。対角関手Δは、Δ(A) = (A,A)、Δ(f) = (f,f) とするような関手。
これらを使うと、直和の持つ普遍性は次の図で表される。今までfだった所を \overline{(f_A,f_B)}に書き換えた。(これでひとつの関数を表している。)
  \begin{array}{cccc} &\qquad\quad (A,B) & \overset{(f_A,f_B)}{\longrightarrow} & \Delta(C) \\ ({\bf C},{\bf C}) & (\eta_A,\eta_B)   \downarrow  & & \parallel \\  & \qquad\quad \Delta(A \sqcup B) & \overset{\Delta(\overline{(f_A,f_B)})}{\longrightarrow} & \Delta(C) \\ \hline {\bf C} &\qquad\quad A \sqcup B & \overset{\overline{(f_A,f_B)}}{\longrightarrow} & C \end{array}

2.5. 直積

集合の直積A×Bやベクトル空間の直積A×Bについて見てみると、こちらは写像(or線形写像)の組 fA: C→A、fB: C→Bから、f: C→A×B が一意に決まり、逆にfから(fA, fB)が一意に決まる。これが直積A×Bを特徴づける普遍性になる。

普遍射などの説明は略して可換図式だけ示しておく。
  \begin{array}{ccc} C & \overset{f_A}{\longrightarrow}  & \;\;\,A \\ \parallel    & &  \eta_A\!\! \uparrow \\ C & \overset{f}{\longrightarrow} & \;\;\,A \times B \\ \parallel   & & \eta_B\!\! \downarrow \\ C & \overset{f_B}{\longrightarrow}  & \;\;\,B   \end{array}

これは対角関手Δを使うと次のように書き換えられる。
  \begin{array}{cccc} &\Delta(C) & \overset{(f_A,f_B)}{\longrightarrow} & (A,B)  \\ ({\bf C},{\bf C}) &  \parallel  & &   \qquad\quad\uparrow (\eta_A,\eta_B) \\  & \Delta(C) & \overset{\Delta(\overline{(f_A,f_B)})}{\longrightarrow} &  \Delta(A \times B) \\ \hline {\bf C} &  C & \overset{\overline{(f_A,f_B)}}{\longrightarrow} & A \times B \end{array}

3. 例: 商集合

3.1. 商集合の作り方

商集合の復習から始める。
ある集合Sの要素同士の間に何らかの同値関係 〜 が入っているとする。
例えば S=ℤ(整数全体)として、この集合に
 a〜b \overset{\mbox{def}}{\Leftrightarrow} aを5で割った余りとbを5で割った余りが等しい。 ⇔ a-bは5で割り切れる。 ⇔ a-b ∈ 5ℤ
という関係を定義すると、これは同値関係になる。
このとき、同値になるもの同士をそれぞれひとまとめにする(同値類にまとめる)ことで得られる集合を、Sの商集合といって S/〜 などと表記する。上で定義した「整数を5で割った余り」による同値関係の場合、同値関係を集合 5ℤ が定めているので、商集合は ℤ/5ℤ とも書かれる。
この例では商集合は
ℤ/5ℤ = { {..., -10, -5, 0, 5, 10, 15, ...},
     {..., -9, -4, 1, 6, 11, 16, ...},
     {..., -8, -3, 2, 7, 12, 17, ...},
     {..., -7, -2, 3, 8, 13, 18, ...},
     {..., -6, -1, 4, 9, 14, 19, ...}}
のように分割される。

しかし商集合を考えるとき、多くの場合は、要素の分割や分類が目的ではない。
ℤ/5ℤを考える場合も、実際に欲しいのは、5要素からなる集合でそこに足し算や掛け算のような代数演算が入ったものなので、気分の上では、同値類を潰した(あるいは代表要素を取った) {0,1,2,3,4} のような集合を考えていて、ℤ/5ℤの各要素が無限集合だということは意識していない。

別の例として、ℝ(実数全体)に、
 a〜b \overset{\mbox{def}}{\Leftrightarrow} aとbの差が整数 ⇔ a-b ∈ ℤ
という同値関係を入れて商集合 ℝ/ℤ を考える場合も、別に実数を分類したいわけではなく、実際に考えているのは、要素としては
 [0, 1) = {x∈ℝ | 0≦x<1}
という集合と同じもので、ただし1と0が貼り合わされて輪っかにようにつながっているようなものだったりする。

したがって多くの場合「同値関係にもとづいて分類する(同値類に分ける)」というのは実は商集合にとって本質的な部分ではなく、代数演算だったりつながり方(位相)だったりを定めるための標準的な手順(実装)に過ぎず、実際にはそれと同じ代数構造や位相構造が入ってさえいればどんな集合を取ってもかまわない。そこで商集合を普遍性から見てみる。

3.2. 商集合の持つ普遍性

商集合S/〜は、おおまかなイメージとしては、Sの要素のうち同値関係を持っているもの同士はひとつにまとめてそれを潰してできる集合。この商集合S/〜の持つ普遍性を考える。

何でもいいので集合Tを取って「SからTへの写像」と「 S/〜からTへの写像」の関係を見る。
まずS/〜からTへの写像gがあったとき、それをもとにSからTへの写像\tilde{g}を作るのは簡単にできる。Sの要素xは潰れてS/〜のいずれかの要素[x]になるので、つぶれた先の要素でのgの値を使って\tilde{g}(x)=g([x])と決めれば、写像\tilde{g}: S→Tが定まる。
一方、SからTへの写像fがあったときに、それをもとにしたS/〜からTへの写像\bar{f}はひとつには決められない。なぜなら x∈S/〜を取ったとき、それに対応しているSの要素は複数ありえて、それらの要素についてfの値が違っている場合、どのfの値を\bar{f}(x)とするかについて複数の選択があるので写像\bar{f}は一意に決められない。

しかしもしも写像fが「a〜bならば、f(a)=f(b)」という性質を持っているなら、S/〜からTへの写像\bar{f}を一意に決められる。
また、さっきの写像g: S/〜→Tから作った\tilde{g}(x)を見てみると、この\tilde{g}(x)も「a〜bならば、f(a)=f(b)」という性質を持っていることが分かる。ということは、

  • SからTへの写像のうち「a〜bならば、f(a)=f(b)」となるもの。と、
  • S/〜からTへの写像

は、ちょうど1対1で対応する。これがS/〜の持つ普遍性になる。
普遍射 η: S → S/〜 は、Sの各要素xを潰した先[x]∈S/〜に対応させる写像となり、次の可換図式が満たされる。
  \begin{array}{cccc} \;\;\, S & \overset{f}{\longrightarrow} & T & \quad \mbox{※}\;f\mbox{は「}\;a\sim b\;\mbox{ならば}\;f(a)=f(b)\;\mbox{」を満たす。} \\ \eta \downarrow  & & \parallel \\ \;\;\, S/\sim & \overset{\bar{f}}{\longrightarrow} & T  \end{array}

普遍性の視点(外側からの視点)では、商集合がどう構成されたか(同値類を取ったのか代表元を選んだのか等々)という部分には注目しない。

この例のように、普遍性は、集合を構成するというやり方とは異なるやり方・見方を与えてくれる(こともある)。ただし普遍性を考えても必ずしも分かりやすくなるとは限らない。例えばテンソル積は「形式的な線形和からなる集合を作ってさらに商集合を取る」という構成による定義にしても、普遍性による定義にしても、どちらにしても初見ではあまり分かりやすい感じはしない。

3.3. 普遍要素による定式化

商集合を圏論的に定式化するやり方の一つは、コイコライザー(余等化子)によるもの。
同値関係を表す集合R = {(x,y)∈(S,S)| x〜y}を考え、Rの要素の第1成分を返す写像p1: R→S、第2成分を返す写像を取ると、商集合S/〜はp1とp2のコイコライザーと定義できる。そしてコイコライザー(より一般に極限・余極限)についての普遍性は関手の圏を使って表せる。
しかし説明が大変なので、いくらか省略した図を示すだけで説明は略す。
  \begin{array}{cccc} & (R{{p_1 \atop \rightrightarrows}\atop p_2}S) & \overset{f}{\longrightarrow} & \Delta(T) \\ [{\bf I},{\bf C} ]& \quad \eta   \downarrow  & & \parallel \\  &  \Delta(S/\!\sim) & \overset{\Delta(\bar{f})}{\longrightarrow} & \Delta(T) \\ \hline {\bf C} & \;\; S/\!\sim & \overset{\bar{f}}{\longrightarrow} & T \end{array}

代わりに普遍要素に使った定式化をする。

普遍要素というのは、普遍射の特別な場合にすぎなくて、次の形の普遍性における普遍射ηのこと。ここではAが普遍性を持つ対象。
  \begin{array}{cccc} & \;\;\,\{\ast\} & \overset{f}{\longrightarrow} & G(B) \\ {\bf Set}& \eta \downarrow  & & \parallel \\  & \;\;\, G(A) & \overset{G(\bar{f})}{\longrightarrow} & G(B) \\ \hline {\bf C} & A & \overset{\bar{f}}{\longrightarrow} & B \end{array}
集合の圏では、「1要素集合{*}から集合Sへの射」と「集合Sの要素」が1対1で対応するので、この図を集合の要素の形に書き換えると、
  \begin{array}{cc} {\bf Set} & G(A)  \ni \eta  \overset{G(\bar{f})}{\longmapsto}  f \in  G(B) \\ \hline {\bf C} & A \overset{\bar{f}}{\longrightarrow}  B\end{array}
となる。さらにA \overset{\bar{f}}{\rightarrow} Bも、 \bar{f} \in {\bf C}(A, B) と書き換えられる。
よって普遍要素を用いて普遍性を定義すると次のようになる。

Aが関手G: CSet について普遍性を持つのは、ある(普遍要素と呼ばれる)\eta \in G(A)が取れて、
どのB∈Cについても、

  • f ∈ G(B)
  • \bar{f}C(A,B)

が、G(\bar{f})(\eta) = f の関係で1対1対応するとき。

となる。*3
普遍性をこのように定義すると、一般の普遍射のときより分かりにくくなった感じもする。しかし、関手Gが集合の圏への関手なので、G(A)は集合、G(g)は写像(集合から集合への写像)という形で定義されるので、普遍性に応じて圏をあれこれ定義するより簡単になる場合もある。

商集合S/〜の持つ普遍性は、

どのようなTを取っても、

  • SからTへの写像 f∈C(S, T) のうち「a〜bならば、f(a)=f(b)」となるもの、と
  • S/〜からTへの写像 \bar{f}C(S/〜, T)

が、 f = \eta \triangleright \bar{f} \;(= \bar{f} \circ \eta) を満たす関係で、1対1対応する。

というものだった。これを普遍要素による普遍性で要求されている
 G(\bar{f})(\eta) = f
に合わせるには、 関手Gは写像gに対しては、 G(g) = (⊳g) と定義すればよい。
ここで (⊳g) は、引数hに対して、h⊳g を返すような関数。このとき G(\bar{f})(\eta) = (\triangleright \bar{f})(\eta) = \eta \triangleright \bar{f} となる。
あとは「SからTへの写像 f∈C(S, T) のうち「a〜bならば、f(a)=f(b)」となるもの」がG(T)と一致すればよいので、関手Gは次のように定義すればよい。

  • Cの対象Tに対して、 G(T) = { f∈C(S,T) | a〜b ならば f(a)=f(b) } 。
  • Cの射T_1 \overset{g}{\rightarrow} T_2に対して、 G(g) = (⊳g) 。

外部からの視点(普遍性の視点)では、このように定義した関手Gに対して普遍性を満たすものが商集合S/〜ということになる。

4. 例: 核(カーネル)と余核(コカーネル)

線形写像 f: A→B に対して、その核Ker(f)と余核Coker(f)を考える。
核はたぶんそれなりに多くの線形代数の本に載っているはずで、
 Ker(f) = {x∈A | f(x)=0}
と定義される。(つまり、Ker(f)は、Aの要素のうちfの行き先が0になるものからなる。)
一方、線形代数の本に余核が出てくることはほとんどないと思うけど、出てくる場合はたぶん
 Coker(f) = B/Im(f)
と定義されている。(B上の同値関係を a〜b ⇔ f(a)=f(b) ⇔ a-b∈Im(f) で定義して、商集合を取ったもの。)

しかし、この余核の定義を核の定義と比べてみても、核に対する「余」(co)という感じがしない。*4
これは核と余核の持つ普遍性を見るとすぐに分かる。

まず核は次の形の普遍性を満たす。(ここで核の普遍射ηは、頭文字を小文字にした ker(f) と表記されることが多い。)
  \begin{array}{cccccc}C & \overset{g}{\longrightarrow} & \;\;\,A & \overset{f}{\longrightarrow} & B & \quad\mbox{※}\;g\mbox{は、}\; g \triangleright f = 0\;{を満たす。}\\ \parallel   & & \eta \!\! \uparrow \\ C & \overset{\bar{g}}{\longrightarrow}  & \;\;\,{\rm Ker}(f) &  \end{array}

つまりどんなベクトル空間Cを取っても、

  • 線形写像 g: C→A (ただしgは、fと合成するとゼロ写像になる。g⊳f=0 。)
  • 線形写像 \bar{g} : C→Ker(f)

が、上の関係でちょうど1対1対応する。

(これは「  g\triangleright f = 0 ⇔ Im(g)⊂Ker(f) 」であることから分かる。
g⊳f=0 となるg: C→Aがあったとき、Im(g)⊂Ker(f)⊂Aなので、写像gの終域をKer(f)に縮めて考えることができて線形写像\bar{g}が得られる。
一方、\bar{g}: C→Ker(f) があったとき、Ker(f)⊂A なので、終域をAだと思えばそのままCからAへの線形写像gが得られる。この写像gがIm(g)⊂Ker(f)となっていて g\triangleright f = 0となることも分かる。
このgと\bar{g}との変換は、写像の持っている情報を落とさずに終域を変化させているだけなので、それぞれ互いの逆変換になり1対1に対応する。)

通常の定義のKer(f)={x∈A | f(x)=0} は当然Aの部分集合だけど、普遍性で特徴付けれたKer(f)はAの部分集合である必要はない。核の普遍射η: Ker(f)→A は単射(モニック射)になる。普遍性の視点では、部分集合A⊂Bの関係はだいたい単射A→Bに置き換わる。

一方、余核の普遍性は次の図で表される。この図は核の普遍性の図の矢印を逆向きにし(て図の向きを左右入れ換え)た形になっている。(また核のときと同様に、余核の普遍射ηは、頭文字を小文字にした coker(f) と表記されることが多い。)
  \begin{array}{cccccc} A & \overset{f}{\longrightarrow} & \;\;\,B & \overset{g}{\longrightarrow}  & C & & \quad \mbox{※}\;g\mbox{は、}\; f \triangleright g = 0\;{を満たす。}\\ & & \eta\!\! \downarrow  & & \parallel \\ & & \;\;\, {\rm Coker}(f) & \overset{\bar{g}}{\longrightarrow} & C \\ \end{array}

ここで
 f⊳g = 0 ⇔ Im(f)⊂Ker(g) ⇔ 「a-b∈Im(f) ならば a-b∈Ker(f)」
なので、同値関係a〜bを「a〜b ⇔ a-b∈Im(f)」で定義すると、
 a〜b ⇔ a-b∈Im(f) ⇒ a-b∈Ker(f) ⇔ f(a-b)=0 ⇔ f(a) = f(b)
であることから、「f⊳g = 0」⇔「a〜b ならば、f(a)=f(b)」(商集合の普遍性に出てきた条件)となる。
このため、B/Im(f) は余核の普遍性を満たすことになる。

圏論的には、Ker(f)はfとゼロ射のイコライザー、Coker(f)はfとゼロ射のコイコライザーとして定義できるけど、説明は略する。

5. 例: ベキ集合

集合Aから集合Bへの写像全体からなる集合をベキ集合と呼び、BAとか(A→B)とか[A→B]みたいに表記される。ベキ集合が満たす普遍性を考える。(圏論では射の集まり(≒写像の集合)が初めから理論に組み込まれているけれど、集合の圏における 射の集まりSet(A,B) は 対象(≒集合) とは別種のものなので、対象としてのベキ集合[A→B]を特徴づけるには普遍性を経由する必要がある。)

 [A\rightarrow B] \overset{g}{\rightarrow}C あるいは C \overset{g}{\rightarrow}[A\rightarrow B] という写像gとうまい具合に1対1で対応するような写像がないか考えると、C \overset{g}{\rightarrow}[A\rightarrow B]をアンカリー化したものがちょうど望みのものになっている。(カリー化、アンカリー化の説明は略する。)
2引数関数f: C×A→B をカリー化すると1引数関数 \bar{f}: C→[A→B] が得られ、逆に1引数関数 g: C→[A→B] をアンカリー化すると2引数関数 \tilde{g}: C×A→B が得られて、これらは逆の操作になっている。(これは集合から集合への写像の場合の話。ベクトル空間と線形写像ではこの関係は成り立たない。線形写像f:C×A→Bをカリー化したものは線形写像ではなくなる。)

ラムダ記法を使って書けば

  • f: C×A→B をカリー化したものは、 \bar{f} = \lambda c. \lambda a. f(c,a)
  • g: C→[A→B] をアンカリー化したものは、 \tilde{g} = \lambda(c,a). g(c)(a)

となる。

写像間の1対1対応が見つかったので普遍射を求める。
g: C→[A→B] のCとして C= [A→B] を取り、gとして恒等写像 1: [A→B]→[A→B] を取り、それをアンカリー化した\tilde{1}: [[A→B]×A]→B が普遍射となる。 この\tilde{1}は、
  \tilde{1}(f,a) = 1(f)(a) = f(a)
のように、f: A→B と a: A を受け取って f(a) を返す。つまりこの\tilde{1}は関数適用をおこなう関数になっている。Lispのfuncall、apply関数、Schemeのapply関数、Haskellの$演算子(application operator)にあたるので、この普遍射をapplyと呼ぶことにする。(ただし圏論では普通この射をevalと呼ぶ。)

さらに可換図式を作るために少し工夫がいる。
applyは、[A\rightarrow B]\times B \; \overset{\rm apply}{\rightarrow} B という写像だけど、これは写像 C \overset{\bar{f}}{\rightarrow}[A\rightarrow B] とつないで\bar{f} \triangleright {\rm apply}を考えることができない。
そこで、\bar{f}をA上の恒等写像1Aと合わせて、C\times A \overset{\bar{f}\times 1_{A}}{\rightarrow}[A\rightarrow B]\times A としてやると、(\bar{f},1_{A}) \triangleright {\rm apply}が考えられる。
ベキ集合[A→B]の満たす可換図式は次のように書ける。
 \begin{array}{ccc} C\times A & \overset{f}{\longrightarrow} & B \\ \parallel & & \qquad \uparrow {\scriptsize{\rm apply}} \\ C\times A & \overset{\bar{f}\times 1_{A}}{\longrightarrow} & [A\rightarrow B]\times A\end{array}
またこの図は、applyを使ってfのカリー化\bar{f}を説明する図と見ることもできる。

ベキ集合[A→B]の普遍性を関手を使って定式化すると、

  • 対象Cに対して (×A)(C) = C×A
  • 射gに対して(×A)(g) = g×1A

とする関手 (×A): CC を使って次のように書ける。
 \begin{array}{cccc} & (\times A)(C) & \overset{f }{\longrightarrow} & B  \\ {\bf C} &  \parallel  & &   \qquad\uparrow {\scriptsize{\rm apply}} \\  & (\times A)(C) & \overset{(\times A)(\bar{f})}{\longrightarrow} & (\times A)\left([A \rightarrow B]\right) \\ \hline {\bf C} &  C & \overset{\bar{f}}{\longrightarrow} & [A \rightarrow B] \end{array}

6. 例: 像(イメージ)

核と余核のところで写像の像Im(f)が出てきたので、一応これにも触れておく。
アーベル圏では(ベクトル空間の圏もアーベル圏の一種)、射fの像Im(f)は普遍射 im(f)=ker(coker(f))で定義される。
 \begin{array}{ccccc}A &\overset{f}{\longrightarrow}&B & \overset{{\rm coker}(f)}{\longrightarrow} & {\rm Coker}(f) \\ & & \quad\;\; \uparrow {\scriptsize{\rm im}(f)} \\ & & \;{\rm Im}(f) \end{array}
しかし、ただの集合間の写像には核や余核は定義されないので、この定義は使えない。

普遍性の視点(圏論の視点)では、部分集合を考えることと単射(モニック射)を考えることがだいたい同じになることに注目する。
集合Sに部分集合A⊂Sがあれば包含写像(これは単射になる) m: A→Sが考えられるけど、普遍性の視点ではAとSの間に単射mが存在することの方が重要でAがSの部分集合であることはあまり意味がない。核の所に出てきたように、普遍性から見た場合、Ker(f)はAの部分集合である必要はない。
像Im(f)の持つ普遍性は、まず部分集合(と包含写像)について成り立つ性質を調べて、それを一般的な集合(と単射)に拡張することで得られる。

写像f: A→Bの像Imf(f)は、通常の集合的な定義では当然Bの部分集合になる。このとき、写像fを
 A \overset{e}{\rightarrow}  {\rm Im}(f)   \overset{m}{\subset}  B
のようにふたつの写像eとm(包含写像)に分解して f = e \triangleright m とできる。
ここでeは、fの終域をIm(f)に縮めたもので、mはIm(f)からBへの包含写像
また、Im(f) ⊂ C ⊂ Bであるような部分集合Cを取ると、これと同様にfを
 A \overset{e}{\rightarrow}  C   \overset{m}{\subset}  B
と分解することができる。
一方、Bの部分集合Cが Im(f) ⊂ C ⊂ B を満たさない場合は、fの終域をCに縮めようとするとfの出力情報の一部が削れられるので、この分解はおこなえない。
よって、Im(f)は、この形の分解ができるような部分集合Cのうち最小のもの、として特徴づけることができる。

Im(f)を経由して分解したときの写像
 A \overset{\eta}{\rightarrow}  {\rm Im}(f)   \overset{{\rm im}(f)}{\subset}  B
のように名前をつけておく。f = η⊳im(f) 。
ここで、Bの部分集合Cを取って、
 A \overset{e}{\rightarrow}  C   \overset{m}{\subset}  B
というfの分解 f = e⊳m があったとする。このとき、 上で見たようにIm(f) ⊂ C ⊂ B を満たすので、
  {\rm Im}(f) \overset{\bar{e}}{\subset}  C \overset{m}{\subset}  B
という包含写像\bar{e}が存在する。 {\rm im}(f) = \bar{e} \triangleright m
逆にIm(f)から部分集合Cに包含写像\bar{e}が存在すれば(つまりIm(f) ⊂ C ⊂ Bなら)、fをf=e \triangleright mと分解する写像eが存在する。
よって、Bの部分集合Cを取る(この時、包含写像m:C→Bが決まる)と、

  • fの分解。 e: A→C、m: C→B (mは包含写像)で、f = e \triangleright m となるもの。
  • 包含写像\bar{e}: Im(f)→C と包含写像m: C→B (これらは  {\rm im}(f) = \bar{e} \triangleright m を満たす)

の、(e,m) ⇔ (\bar{e},m) がちょうど1対1で対応している。(Im(f)⊂Cでない場合は、eと\bar{e}のどちらも存在しないので、その場合も含めて1対1対応が成り立つ。)

この1対1対応の関係はCを任意の集合として、包含写像単射(モニック射)に置き換えても成り立っていて、それがIm(f)を特徴づける普遍性となる。

この普遍性を可換図式で書く上で
 (A,f,B) \overset{e}{\rightarrow}(C,m,B)
という形の表記を導入する。これはA \overset{e}{\rightarrow}Cに情報を付加したもので、次のことを示している。

  • eはAからCへの写像
  • (A,f,B)と(C,m,B) は、fとmが f: A→B、m: C→Bという種類の写像であることを示す。
  • f: A→B、 e: A→C、 m: C→B は、f =c \triangleright m を満たす。

この表記を使うとIm(f)は次の普遍性を満たす。

集合Cと単射m:C→Bを好きに取った時、、次の可換図式を満たすようにeと\bar{e}が1対1対応する。(ここでmonoと付いているのは、その写像単射(モニック射)に限ることを示す。)
 \begin{array}{ccc}\quad (A,f,B) & \overset{e}{\longrightarrow} & (C,\overset{\rm mono}{m},B) \\ \downarrow \eta & & \parallel \\ \qquad\quad ({\rm Im}(f), \overset{\rm mono}{{\rm im}(f)}, B) & \overset{\overset{\rm mono}{\bar{e}}}{\longrightarrow} &  (C,\overset{\rm mono}{m},B) \end{array}

この図だけ見ても分かりにくいけど、この図で次のことが示されている。

  • 左辺: fが、A \overset{\eta}{\rightarrow}  {\rm Im}(f)   \overset{{\rm im}(f)}{\rightarrow}  B に分解される。
  • 上辺: fが分解 A \overset{e}{\rightarrow}  C   \overset{m}{\rightarrow}  B を持つ。
  • 下辺: im(f): Im(f)→B が、 {\rm Im}(f)  \overset{\bar{e}}{\rightarrow}C \overset{m}{\rightarrow}  B に分解される。
  • 可換図式: eと\bar{e} は、e = \eta \triangleright \bar{e} の関係で対応する。(ただしこの関係は、他の関係式とmが単射であることから導かれる。)

ということを示している。

これを関手を使った形で定式化しようとすると、スライス圏C/Bとその部分圏で単射(モニック射)だけからなるような圏を導入する必要があるので説明は省略。

7. 普遍射を使わない定式化と表現可能関手

ここまで、次の関係が成り立つということによって普遍性を扱ってきた。
(ただし、この後の都合により f=\tilde{g},\; \bar{f}=g に置き換えた。
  \begin{array}{cccc} & \;\;\,A & \overset{\tilde{g}}{\longrightarrow} & G(B) \\ {\bf C}& \eta \downarrow  & & \parallel \\  & \;\;\, G(F_A) & \overset{G(g)}{\longrightarrow} & G(B) \\ \hline {\bf D} & F_A & \overset{g}{\longrightarrow} & B \end{array}

この図は、 \tilde{g}:\;A\to Bg:\;F_A\to B が1対1で対応し、その間の対応関係が普遍射ηによって
 \eta \triangleright G(g) = \tilde{g}
となることを示している。この\tilde g \leftrightarrow g の対応関係をηを使わないで示す仕方がある。

上の図は、Bとして何を取ってもよく、gについても何を取っても成り立つ。
そこで別のCと、 写像 g⊳h: FA→C を取ると、次の図が得られる。(関手の性質 G(g⊳h)=G(g)⊳G(h) を使った。)
  \begin{array}{cccccc}  & \;\;\,A & \longrightarrow &  \overset{\widetilde{g\triangleright h}}{\longrightarrow} & \longrightarrow & G(C) \\ & \;\;\, \parallel  & & & & \parallel \\  {\bf C} & \;\;\,A & \overset{\tilde{g}}{\longrightarrow} & G(B) & \overset{G(h)}{\longrightarrow} & G(C)\\ & \eta \downarrow  & & \parallel \\  & \;\;\, G(F_A) & \overset{G(g)}{\longrightarrow} & G(B) \\ \hline {\bf D} & F_A & \overset{g}{\longrightarrow} & B &  \overset{h}{\longrightarrow} & C \end{array}
この図の上の部分が表している関係
  \tilde{g}\triangleright G(h) = \widetilde{g \triangleright h}
には普遍射ηが現れていない。

そして普遍射を使う代わりに、
  \begin{array}{cccccc}  & \;\;\,A & \longrightarrow &  \overset{\widetilde{g\triangleright h}}{\longrightarrow} & \longrightarrow & G(C) \\ {\bf C} & \;\;\, \parallel  & & & & \parallel \\   & \;\;\,A & \overset{\tilde{g}}{\longrightarrow} & G(B) & \overset{G(h)}{\longrightarrow} & G(C)\\ \hline {\bf D} & F_A & \overset{g}{\longrightarrow} & B &  \overset{h}{\longrightarrow} & C \end{array}
の関係が任意のB、C、g、hについて成り立つことを普遍性の条件とすることができる。
その場合、B=F、g=1FA: FA→FA を取った時の \widetilde{1_{F_A}} が普遍射になる。

さらにこの  \tilde{g}\triangleright G(h) = \widetilde{g \triangleright h} の関係は、
  \begin{array}{ccccc} {\bf C}(A, G(B)) \ni & \tilde{g} & \overset{(\triangleright G(h))}{\longrightarrow} & \widetilde{g \triangleright h} & \in {\bf C}(A,G(C)) \\  & \uparrow & & \uparrow \\ \;\;\; {\bf D}(F_A, B) \ni  & g & \overset{(\triangleright h)}{\longrightarrow} & g \triangleright h & \!\!\!\!\! \in {\bf D}(F_A,C)  \end{array}

が可換になる、と言い換えられる。
写像 {\bf D}(F_A,B) \ni g \mapsto \tilde{g} \in {\bf C}(C,G(B))を θBと表すことにすると、
  \begin{array}{ccc} {\bf C}(A, G(B)) & \overset{(\triangleright G(h))}{\longrightarrow} & {\bf C}(A,G(C)) \\ \theta_B \uparrow & & \theta_C \uparrow \\  {\bf D}(F_A, B) & \overset{(\triangleright h)}{\longrightarrow} & {\bf D}(F_A,C) \end{array}

となる。
関手D(FA, -) と関手C(A,G( -)) を考えると、 D(FA,h) = (⊳h) かつ C(A,G(h)) = (G(h)⊳) なので、上の関係は、θB、θC、…をまとめたものが、関手D(FA, -) から関手C(A,G( -)) への自然変換になることを表している。
自然変換θを構成する各θBが逆写像を持つので、
 D(A,G( -)) ≅ C(FA, -)
となり、関手D(A,G( -)) は表現可能関手でFAによって表現される。
また普遍性を関手Gと普遍要素で表した場合、同様に変形していくと
 G ≅ C(A, -)
となり、関手Gが表現可能関手でAによって表現される、という形になる。
よって、普遍性を関手の表現可能性によって定義することができる。

*1:通常、「⊳」「⊲」は正規部分群を表す記号だけど混乱することはたぶんないと思う。

*2:数式モードで複雑な図が描けない(描き方が分からない)のでこの描き方になった。普通は、Wはひとつだけで、矢印をななめに描く。

*3:また「Aが関手Gについて普遍性を持つ ⇔ Gは表現可能関手で C(A, - ) ≅ G」が成り立つ。7節で説明。

*4:「Ker(f)は、Aのうちで、fによってBに影響をあたえなかった部分(fで0に写った部分)」、「Coker(f)は、Bのうちで、fによってAから影響を受けなかった部分(影響を受けた部分Im(f)を0に潰した残り)」と説明すると何となく逆の関係のようにも感じられるけど。