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

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

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

参照用 記事

集合・関数係数行列の2-圏、モナドも添えて

過去ニ回の記事で、集合係数のベクトル・行列について述べました。

  1. スパンとファイバー積と行列計算
  2. 集合係数のスカラー・ベクトル・行列・テンソル

二番目の記事では、集合係数の行列の一般化として集合係数のテンソルを定義しました。この記事では、別な方向への一般化として、集合係数の行列と共に関数係数の行列も考えることにより2-圏を構成します。そして、この2-圏のなかのモナドが何であるかも見ましょう。$`\newcommand{\mrm}[1]{ \mathrm{#1} }
\newcommand{\In}{\text{ in }}
\newcommand{\o}[1]{\overline{#1}}
\newcommand{\hyp}{\text{-} }
\newcommand{\twoto}{\Rightarrow }
\newcommand{\NFProd}[3]{ \mathop{_{#1} \!\underset{#2}{\times}\,\!_{#3} } }
\newcommand{\For}{\text{For }}
\newcommand{\Imp}{\Rightarrow }
\newcommand{\cat}[1]{\mathcal{#1}}
\newcommand{\msf}[1]{\mathsf{#1}}
`$

内容:

用語と記法の復習

集合係数のスカラー・ベクトル・行列・テンソル」で定義した用語・記法を使います。

n脚のマルチスパンは $`f = (f_i : \o{f}\to A_i)_{i\in \bar{n}}`$ と書きます。マルチスパンに対応するバンドルは次の形です。

$`\quad \langle f\rangle = \langle f_i\rangle_{i\in \bar{n}} : \o{f} \to \prod_{i \in \bar{n}}A_i \\
\text{Where}\\
\quad \prod_{i \in \bar{n}}A_i = A_1 \times \cdots \times A_n
`$

このバンドル(そのもとはマルチスパン)から作られるファミリー〈インデックス付き集合族〉は次のようです。

$`\quad \o{f} = (\o{f}_{(a_1, \cdots, a_n)})_{(a_1, \cdots, a_n) \in A_1\times\cdots\times A_n}`$

記号 $`\o{f}`$ は、マルチスパンのボディ〈ヘッド〉とファミリーのふたつの意味でオーバーロードされています。

単にスパンと言ったら、2脚のマルチスパンのことです。スパン〈2脚スパン〉のときは、1, 2 の番号を使う代わりに次のような記法を使うこともあります。

$`\quad f := f_1\\
\quad g := f_2\\
\quad A := A_1\\
\quad B := A_2
`$

この記事では、0, 1, 2脚のマルチスパンを扱い、3脚以上のマルチスパンは出てきません。

記号 $`\o{f}`$ のオーバーロードによる曖昧性や混乱を避けたいなら、無名変数〈無名インデックス〉としてのハイフンを使います。ハイフンが出てきたら、それは関数〈写像〉を表すラムダ変数だと解釈します。

$`\quad \o{f}_{\hyp, \hyp} \\
= \lambda\, (x, y)\in A\times B.\o{f}_{x, y}\\
= (\o{f}_{x, y})_{(x, y) \in A\times B}\\
= \lambda\, x\in A, y\in B.\o{f}_{x, y}\\
= (\o{f}_{x, y})_{x\in A, y\in B}
`$

ハイフンを使うときは、ハイフンの型(インデキシング集合)は事前に了解されているとします。違う位置に出現したハイフンは違う型を持つかも知れません。

片一方のインデックスだけハイフンにすると、インデックスの部分適用(一部だけ具体化)を表現できます。$`\o{f}_{a, \hyp}`$ は、第一インデックスを $`a`$ に固定して、第二インデックスを変数として残したものです。

$`\quad \o{f}_{a, \hyp} = \lambda\, y\in B.\o{f}_{a, y} \; : B \to |{\bf Set}|`$

インデックスの位置にアスタリスクを置くと、そのインデックスで総和を取ったことを表します*1

$`\quad \o{f}_{a, *} = \sum_{ y\in B} .\o{f}_{a, y}\\
\quad \o{f}_{*, b} = \sum_{ x\in A} .\o{f}_{x, b}\\
\quad \o{f}_{*, *} = \sum_{ y\in B}\sum_{ x\in A} \o{f}_{x, y}
`$

以下の等式が成立しますが、左辺の $`\o{f}`$ はスパンのボディ、右辺の $`\o{f}`$ は2つのインデックスを持つファミリー〈集合係数行列〉です。

$`\quad \o{f} = \o{f}_{*, *}`$

アスタリスクとハイフンを組み合わせると、行列を“縦方向”または“横方向”に総和集計したベクトルを表現できます。(どっちが“縦方向”で、どっちが“横方向”かはどうでもいいです。)

$`\quad \o{f}_{\hyp, *} = \lambda\, a\in A.\sum_{ y\in B} .\o{f}_{a, y} =
( \sum_{ y\in B} .\o{f}_{a, y} )_{a\in A}\\
\quad \o{f}_{*, -} = \lambda\, b\in B.\sum_{ x\in A} .\o{f}_{x, b} =
( \sum_{ x\in A} .\o{f}_{x, b} )_{b\in B}
`$

アスタリスクで総和をとり、ハイフンでラムダ抽象〈関数抽象〉をします。

関数係数の行列

$`{\bf Set}`$ は集合圏で、$`|{\bf Set}|`$ はすべての集合達の集合、$`\mrm{Mor}({\bf Set})`$ はすべての関数〈写像〉達の集合です。集合 $`A, B`$ に対して次のような写像を考えます。

$`\quad \alpha : A\times B \to \mrm{Mor}({\bf Set}) \In {\bf SET}`$

$`\alpha`$ は2つのインデックスを持った関数のファミリーです。2つのインデックスを持つので、これも行列です。ただし、行列の成分〈component | entry〉は集合ではなくて関数です。関数係数の行列〈matrix with function coefficients〉ですね。

$`\alpha = (\alpha_{a, b})_{a\in A, b\in B}`$ を関数係数行列とします。行列のすべての成分の $`\mrm{dom}`$ と $`\mrm{cod}`$ をとることを、同じ記号で表します。

$`\quad \mrm{dom}(\alpha) := (\mrm{dom}( \alpha_{a, b}) )_{a\in A, b\in B}\\
\quad \mrm{cod}(\alpha) :=(\mrm{cod}( \alpha_{a, b}) )_{a\in A, b\in B}
`$

この定義から、 $`\mrm{dom}(\alpha)`$ と $`\mrm{cod}(\alpha)`$ は集合係数行列になります。

ここで、次のように置きましょう。

$`\quad \o{f} = (\o{f}_{a, b})_{a\in A, b \in B} := (\mrm{dom}(\alpha_{a, b}) )_{a\in A, b\in B}\\
\quad \o{g} = (\o{g}_{a, b})_{a\in A, b \in B} := (\mrm{cod}(\alpha_{a, b}) )_{a\in A, b\in B}
`$

この状況で、次のように書きます。

$`\quad \alpha :: \o{f}\twoto \o{g}`$

この記法の意図は、関数係数行列を、集合係数行列のあいだの2-射と考える、ということです。“2-射”の意味は後で説明します。

特別な関数係数行列として、すべての成分が恒等関数〈恒等写像〉である行列を次のように書きます。

$`\For \o{f} = (\o{f}_{a, b})_{a\in A, b\in B}\\
\quad \mrm{ID}_{\o{f}} := (\mrm{id}_{\o{f}_{a, b}})_{a\in A, b\in B}
`$

この行列は対角行列としての単位行列とは全然違うものですから注意してください。

集合係数行列と関数係数行列の2-圏

2つの集合 $`A, B`$ をインデックス集合〈indexing sets | インデキシング集合〉とする集合係数行列、そして関数係数行列がどんなものかは分かったと思います。これから、すべてのインデックス集合達、集合係数行列達、関数係数行列達を、構造的に編成して2-圏を作りたいと思います。

何はともあれ、2-圏の名前を決めておきましょう。set- and function-coefficients を SFC と略して $`{\bf SFCMat}`$ とします。$`{\bf SFCMat}`$ を集合・関数係数行列2-圏〈2-category of matrices with set- and function-coefficients〉と呼びます。

$`{\bf SFCMat}`$ の構成素〈constituents〉は三種類ですが、それぞれを0-射〈対象〉、1-射、2-射と呼びます。

  • $`{\bf SFCMat}`$ の0-射〈対象〉: インデックス集合としての集合 $`A, B`$ など。
  • $`{\bf SFCMat}`$ の1-射: 集合係数行列。インデックス集合 $`A, B`$ に対する $`\o{f} = (\o{f}_{a, b})_{a\in A, b\in B}`$ 、$`\o{g} = (\o{g}_{a, b})_{a\in A, b\in B}`$ など。
  • $`{\bf SFCMat}`$ の2-射 : 関数係数行列。集合係数行列 $`\o{f}, \o{g}`$ に対する $`\alpha = (\alpha_{a, b} : \o{f}_{a, b} \to \o{g}_{a, b})_{a\in A, b \in B}`$ など。

$`{\bf SFCMat}`$ の1-射の両端には0-射があり、2-射の両端には1-射があると考えます。

$`\quad \xymatrix@C+1.5pc{
A \ar@/^1.2pc/[r]^{\o{f}}
\ar@{}[r]|{\alpha \Downarrow}
\ar@/_1.2pc/[r]_{\o{g}}
& B
}`$

この状況を次のように書きます。

$`\quad A, B \in |{\bf SFCMat}|\\
\quad \o{f} : A \to B \In {\bf SFCMat}\\
\quad \o{g} : A \to B \In {\bf SFCMat}\\
\quad \alpha :: \o{f} \twoto \o{g} : A \to B \In {\bf SFCMat}
`$

あるいは:

$`\quad A, B \in |{\bf SFCMat}|\\
\quad \o{f}, \o{g} \in {\bf SFCMat}(A , B) \\
\quad \alpha \in {\bf SFCMat}(A , B)(\o{f}, \o{g})
`$

2-射〈関数係数行列〉の域〈domain〉と余域〈codomain〉は前節で述べたとおりですが、1-射〈集合係数行列〉の域・余域は、混乱を避けるために $`\mrm{left}, \mrm{right}`$ と書きます。スパンまで戻ると、$`\mrm{left}`$ が左足〈left foot〉、$`\mrm{right}`$ が右足〈right foot〉に相当します。上に示した状況では:

$`\quad \mrm{left}(\o{f}) = A\\
\quad \mrm{right}(\o{f}) = B\\
\quad \mrm{left}(\o{g}) = A\\
\quad \mrm{right}(\o{g}) = B\\
\quad \mrm{dom}(\alpha) = \o{f}\\
\quad \mrm{cod}(\alpha) = \o{g}
`$

集合・関数係数行列2-圏における演算

2-圏では、たくさんの演算と単位が出てくるので、記法を注意深く約束しないと混乱してしまったり計算で難儀します。以下の過去記事で決めた演算子記号を使います。

上記過去記事は、圏・関手・自然変換の2-圏 $`{\bf Cat}, {\bf CAT}`$ の場合ですが、集合・集合係数行列・関数係数行列の2-圏 $`{\bf SFCMat}`$ にも通用するルールです。

スパンとファイバー積と行列計算」では、集合係数行列の掛け算の図式順演算子記号にセミコロンを使いましたが、アスタリスクに変更します。セミコロンは2-射の縦結合に使うからです。

$`\For \o{f} : A \to B \In {\bf SFCMat}\\
\For \o{g} : B \to C \In {\bf SFCMat}\\
\For a\in A, c\in C\\
\quad (\o{f}*\o{g})_{a, c} = \sum_{b\in B} \o{f}_{a, b}\times \o{g}_{b, c}
`$

集合係数行列 $`\o{f}*\o{g}`$ は、ファイバー積 $`\o{f} \NFProd{f_2}{B}{g_1} \o{g}`$ をボディ〈ヘッド〉とするスパンに対応するのでした(「スパンとファイバー積と行列計算」参照)。

掛け算 $`*`$ に関する単位元〈単位正方行列〉は $`\mrm{Id}_A`$ と書きます。$`\mrm{Id}_A`$ の成分表示は:

$`\For a, a'\in A\\
\quad (\mrm{Id}_A)_{a, a'} := (\text{if }a = a' \text{ then }\{a\} \text{ eles }\emptyset)
`$

なお、$`\mrm{id}_A`$ は集合 $`A`$ の恒等写像の意味で使います。恒等写像 $`\mrm{id}_A`$ と単位行列 $`\mrm{Id}_A`$ は別物ですから注意してください。

掛け算と単位行列に関する計算は、ほぼ普通の行列計算と同様に遂行できます。ただし、計算法則が等式として成立することは保証できません。例えば、掛け算の結合律〈associative law〉は等式ではなくて同型として成立します。

$`\quad (\o{f}*\o{g}) * \o{h} \cong \o{f}* (\o{g} * \o{h}) \In {\bf SFCMat}`$

この同型は、成分ごとの同型です。

$`\For \o{f} : A \to B \In {\bf SFCMat}\\
\For \o{g} : B \to C \In {\bf SFCMat}\\
\For \o{h} : C \to D \In {\bf SFCMat}\\
\forall a\in A, d\in D.\\
\quad ( (\o{f}*\o{g}) * \o{h})_{a, d} \cong (\o{f}* (\o{g} * \o{h}) )_{a, d} \In {\bf Set}`$

さて、次の状況を考えます。$`\o{f},\o{g}, \o{h}`$ はすぐ上とは違うセッティングになります(同じ文字を別な意味で使い回します)。

$`\quad A, B \in |{\bf SFCMat}|\\
\quad \o{f}, \o{g}, \o{h} : A\to B \In {\bf SFCMat}\\
\quad \alpha :: \o{f} \twoto \o{g} : A\to B \In {\bf SFCMat}\\
\quad \beta :: \o{g} \twoto \o{h} : A\to B \In {\bf SFCMat}
`$

この状況で、2-射〈関数係数行列〉 $`\alpha`$ と $`\beta`$ の縦結合〈vertical composition〉を定義します。

$`\For a\in A, b\in B\\
\quad (\alpha ; \beta)_{a, b} := (\alpha_{a, b} ; \beta_{a, b} : \o{f}_{a, b} \to \o{h}_{a, b})
`$

縦結合の単位は、先に定義した恒等2-射〈identity 2-morphism〉 $`\mrm{ID}_{\o{f}}`$ です。

縦結合に関する計算法則は、厳密に(等式の意味で)成立します。インデックス集合 $`A, B`$ を固定した集合係数行列達と関数係数行列達は、縦結合と恒等行列〈恒等2-射〉に関して(通常の)圏を形成します。

2-射〈関数係数行列〉には横結合と呼ばれる演算も定義できます。この横結合は、1-射〈集合係数行列〉の結合演算を2-射にまで拡張した演算と位置付けられます。2-射の横結合は少し面倒なので次節で述べます。

関数係数行列の横結合

スパン $`f`$ に対する $`\o{f}`$ は、スパンのボディ〈ヘッド〉の意味と、対応する2インデックスのファミリーの意味でオーバーロードしていました。同様に、2-射〈関数係数行列〉 $`\alpha : \o{f} \to \o{g}`$ を次の2つの意味でオーバーロードします。

  1. スパン $`f`$ のボディ $`\o{f}`$ から、スパン $`g`$ のボディ $`\o{g}`$ への写像
    $`\alpha : \o{f} \to \o{g} \In {\bf Set}`$
  2. 関数係数行列 $`\alpha :: \o{f} \twoto \o{g} \In {\bf SFCMat}`$ 。その $`a\in A, b \in B`$ における成分は:
    $`\alpha_{a, b} : \o{f}_{a, b} \to \o{g}_{a, b} \In {\bf Set}`$

前者の意味の $`\alpha`$ は集合圏の射〈写像〉として次のように図示できます。

$`\quad \xymatrix {
{}
& \o{f} \ar[dl]_{f_1} \ar[dr]^{f_2} \ar[dd]^{\alpha}
& {}
\\
A
& {}
& B
\\
{}
& \o{g} \ar[ul]^{g_1} \ar[ur]_{g_2}
& {}
}\\
\quad \text{commutative }\In {\bf Set}
`$

あるいは、次の図式(バンドルのあいだの準同型写像)としても描けます。

$`\require{AMScd}
\quad \begin{CD}
\o{f} @>{\alpha}>> \o{g}\\
@V{\langle f_1, f_2\rangle}VV @V{\langle g_1, g_2\rangle}VV \\
A\times B @= A\times B
\end{CD}\\
\quad \text{commutative }\In {\bf Set}
`$

単一の関数〈写像〉としての $`\alpha`$ と関数係数行列としての $`\alpha`$ との関係を説明しましょう。スパンのボディ $`\o{f}, \o{g}`$ は次のように、2つのインデックスによって小さな集合達*2に切り刻まれます。

$`\quad \o{f} = \o{f}_{*,*} = \sum_{a \in A}\sum_{b\in B} \o{f}_{a, b} = \sum_{(a, b)\in A\times b} \o{f}_{a, b}\\
\quad \o{g} = \o{g}_{*,*} = \sum_{a \in A}\sum_{b\in B} \o{g}_{a, b} = \sum_{(a, b)\in A\times b} \o{g}_{a, b}
`$

上の図式の可換性から、写像 $`\alpha`$ も小さな集合ごとに制限された写像に切り刻むことができます。切り刻んだ断片が行列の成分です。

$`\quad \alpha_{a, b} : \o{f}_{a, b} \to \o{g}_{a, b} \In {\bf Set}`$

2-射 $`\alpha, \beta`$ の横結合を定義するためのガイドラインに、次の可換図式を描いておきます。

$`\quad \xymatrix {
{}
&{}
& {\o{f}*\o{h}} \ar[dl]_{\pi_1} \ar[dr]^{\pi_2}
&{}
&{}
\\
{}
& \o{f} \ar[dl]_{f_1} \ar[dr]^{f_2} \ar[dd]^{\alpha}
& {\text{p.b.}}
& \o{h} \ar[dl]_{h_1} \ar[dr]^{h_2} \ar[dd]^{\beta}
&
\\
A
& {}
& B
& {}
& C
\\
{}
& \o{g} \ar[ul]^{g_1} \ar[ur]_{g_2}
& {\text{p.b.}}
& \o{k} \ar[ul]^{k_1} \ar[ur]_{k_2}
& {}
\\
{}
&{}
& {\o{g}*\o{k}} \ar[ul]_{\pi_1} \ar[ur]^{\pi_2}
&{}
&{}
} \\
\quad \text{commutative }\In {\bf Set}
`$

一番上と一番下の集合はファイバー積で、次のように書けます。

$`\quad \o{f}* \o{h} = \o{f} \NFProd{f_2}{B}{h_1} \o{h}\\
\quad \o{g}* \o{k} = \o{g} \NFProd{g_2}{B}{k_1} \o{k}
`$

図式は可換ですから、次が成立します。

$`\quad \pi_1 ; \alpha ; g_2 = \pi_2 ; \beta ; k_1
`$

反図式順結合記号で書くなら:

$`\quad g_2 \circ \alpha \circ \pi_1 = k_1 \circ \beta \circ \pi_2
`$

上記の等式は、ファイバー $`\o{f}_{a, b}\times \o{h}_{b, c} \subseteq \o{f} \NFProd{f_2}{B}{h_1} \o{h}`$ に制限しても成立するので:

$`\quad g_2 \circ \alpha_{a, b} \circ \pi_1 = k_1 \circ \beta_{b, c} \circ \pi_2
`$

関数係数行列 $`\alpha`$ と $`\beta`$ の横結合〈horizontal composition〉は、形式上は集合係数行列の結合と同じ定義です。

$`\For a\in A, c \in C\\
\quad (\alpha * \beta)_{a, c} := \sum_{b\in B} (\alpha_{a, b}\times \beta_{b, c})
`$

これがちゃんと定義されているためには、次が必要です。

$`\For a\in A, c \in C\\
\For b\in B\\
\For (x, z) \in \o{f}_{a, b} \times \o{h}_{b, c}\\
\quad (\alpha_{a, b}\times \beta_{b, c})(x, z) \in \o{g}_{a, b} \times \o{k}_{b, c}
`$

少し変形すると、要求されるのは次の命題です。

$`\forall (x, z) \in \o{f}_{a, b} \times \o{h}_{b, c}.\\
\quad g_2(\alpha_{a, b}(x)) = k_1(\beta_{b, c}(z))
`$

これは、先の等式 $`g_2 \circ \alpha_{a, b} \circ \pi_1 = k_1 \circ \beta_{b, c} \circ \pi_2`$ に $`(x, z)`$ を代入すれば得られます。

これで、2-射〈関数係数行列〉 $`\alpha, \beta`$ の横結合も、1-射〈集合係数行列〉と同じ形(積和の公式)で定義できました。

ここまでに定義した、1-射〈集合係数行列〉の結合、関数係数行列の縦結合、関数係数行列の横結合が、2-圏の公理を満たすことを確認する必要がありますが、面倒なルーチンワークなので割愛します。集合係数行列達と関数係数行列達が全体として2-圏を形成するとして、応用事例を示します。

集合・関数係数行列2-圏におけるモナド

2-圏があれば、そのなかのモナドを考えるのは当然です。集合・関数係数行列2-圏 $`{\bf SFCMat}`$ 内のモナドを考えましょう。

$`{\bf SFCMat}`$ 内のモナドは、次の構成素達を持ちます。

  1. 0-射〈対象〉 $`A \in |{\bf SFCMat}|`$ 、モナドの基礎0-射〈ground 0-morphism〉
  2. 自己射〈endomorphism〉 $`\o{f} : A\to A \In {\bf SFCMat}`$ 、モナドの台1-射〈underlying 1-morphism〉
  3. 2-射 $`\mu :: \o{f} * \o{f} \twoto \o{f} : A \to A \In {\bf SFCMat}`$ 、モナドの乗法2-射〈multiplication 2-morphism〉
  4. 2-射 $`\eta :: \mrm{Id}_A \twoto \o{f} : A \to A \In {\bf SFCMat}`$ 、モナドの単位2-射〈unit 2-morphism〉

これらの構成素達が、“$`*`$ をモノイド積とするモノイド圏”とみなしたホム圏 $`{\bf SFCMat}(A, A)`$ のなかでモノイド法則を満たすとき、$`{\bf SFCMat}`$ のモナド〈monad〉と呼びます。

以下がモノイド法則です。以下に出てくる $`\alpha, \lambda, \rho`$ は特別な2射*3であり、一般的な2-射ではありません。

$`\quad
\begin{CD}
(\o{f} * \o{f}) * \o{f} @>{\alpha}>> \o{f}*(\o{f} *\o{f}) \\
@V{\mu * \mrm{ID}_{\o{f}}}VV @VV{\mrm{ID}_{\o{f}} * \mu}V \\
\o{f} * \o{f} @. \o{f} * \o{f} \\
@V{\mu}VV @VV{\mu}V \\
\o{f} @= \o{f}
\end{CD}\\
\quad \text{commutative }\In {\bf SFCMat}(A, A)
`$

$`\quad
\begin{CD}
\mrm{Id}_A * \o{f} @>{\eta * \mrm{ID}_{\o{f}} }>> \o{f} * \o{f} \\
@V{\lambda}VV @VV{\mu}V\\
\o{f} @= \o{f}
\end{CD}\\
\quad \text{commutative }\In {\bf SFCMat}(A, A)
`$

$`\quad
\begin{CD}
\o{f}*\mrm{Id}_A @>{\mrm{ID}_{\o{f}} * \eta }>> \o{f} * \o{f} \\
@V{\rho}VV @VV{\mu}V\\
\o{f} @= \o{f}
\end{CD}\\
\quad \text{commutative }\In {\bf SFCMat}(A, A)
`$

このように抽象的に定義したモナドは、実は我々がよく知っている代数構造になります。それは、集合 $`A`$ を対象集合とする小さい圏〈small category〉です。言い方を変えると、小さい圏とは、集合・関数係数行列2-圏におけるモナドです。

モナドと圏

前節の最後で言ったことを確認しましょう。$`(\o{f}, \mu, \eta)/A`$ を、$`{\bf SFCMat}`$ 内の $`A`$ 上のモナドとします。このモナドから、実際に圏 $`\cat{C}`$ を定義します。

圏 $`\cat{C}`$ の構成素は次のように書きます。混乱・混同を避けるために、$`\cat{C}`$ の構成素はサンセリフ体の文字を使います。

  • 対象の集合: $`\msf{Obj}(\cat{C}) \; \in |{\bf Set}|`$
  • 射の集合: $`\msf{Mor}(\cat{C})\; \in |{\bf Set}|`$
  • 域: $`\msf{dom} : \msf{Mor}(\cat{C}) \to \msf{Obj}(\cat{C}) \In {\bf Set}`$
  • 余域: $`\msf{cod} : \msf{Mor}(\cat{C}) \to \msf{Obj}(\cat{C}) \In {\bf Set}`$
  • ホムセット: $`\msf{Hom}_\cat{C}(\hyp, \hyp) : \msf{Obj}(\cat{C}) \times \msf{Obj}(\cat{C}) \to |{\bf Set}| \In {\bf SET}`$
  • 恒等: $`\msf{id} : \msf{Obj}(\cat{C}) \to \msf{Mor}(\cat{C}) \In {\bf Set}`$
  • 結合: $`\msf{comp} : \msf{Mor}(\cat{C}) \NFProd{\msf{cod}}{\msf{Obj}(\cat{C})}{\msf{dom}} \msf{Mor}(\cat{C}) \to \msf{Mor}(\cat{C}) \In {\bf Set}`$

モナド $`(\o{f}, \mu, \eta)/A`$ から圏 $`\cat{C}`$ の構成素を次のように定義します。

$`\quad \msf{Obj}(\cat{C}) := A \; \in |{\bf Set}|\\
\quad \msf{Mor}(\cat{C}) := \o{f} \; \in |{\bf Set}|\\
\quad \msf{dom} := f_1 \;: \o{f} \to A \In {\bf Set}\\
\quad \msf{cod} := f_2 \;: \o{f} \to A \In {\bf Set}\\
\quad \msf{Hom}_\cat{C}(\hyp, \hyp) := \o{f}_{\hyp, \hyp} : A\times A \to |{\bf Set}| \In {\bf SET}
`$

恒等と結合の定義には、少しの注意が必要です。まず恒等は、モノイド単位 $`\eta`$ から作ります。$`\eta`$ を成分表示すると:

$`\For a, b \in A\\
\quad \eta_{a, b} : (\mrm{Id}_A)_{a, b} \to \o{f}_{a, b} \In {\bf Set}
`$

$`a \ne b`$ のときは、$`(\mrm{Id}_A)_{a, b} = \emptyset`$ となり、空集合からの唯一の関数が決まってしまいます。よって、$`a = b`$ のときを考えれば十分です。

$`\For a \in A\\
\quad \eta_{a, a} : \{a\} \to \o{f}_{a, a} \In {\bf Set}
`$

特定された単元集合 $`{\bf 1}`$ から $`\{a\}`$ への写像が唯一つ決まるので、それを $`a^\sim`$ とします。$`\msf{id}_a`$ は次のように定義します。

$`\For a \in A\\
\quad \msf{id}_a := a^\sim ; \eta_{a, a} \;: {\bf 1} \to \msf{Hom}_\cat{C}(a, a) = \o{f}_{a, a} \In {\bf Set}
`$

ポインティング写像と要素を同一視すれば、$`a\in \msf{Obj}(\cat{C})`$ ごとに、$`\msf{id}_a \in \msf{Hom}_\cat{C}(a, a)`$ が決まります。

次は結合 $`\msf{comp}`$ を決めます。3つの対象($`A`$ の要素)でインデックスされた次のような写像の族が必要です。

$`\quad \msf{comp}_{a, b, c} : \msf{Hom}_\cat{C}(a, b)\times \msf{Hom}_\cat{C}(b, c) \to \msf{Hom}_\cat{C}(a, c) \In {\bf Set}`$

モナド乗法が結合を作る素材になります。

$`\quad \mu :: \o{f} * \o{f} \twoto \o{f} : A \to A \In {\bf SFCMat}`$

モナド乗法を成分表示してみると:

$`\For a, c\in A\\
\quad \mu_{a, c} : \sum_{b\in A}(\o{f}_{a, b} \times \o{f}_{b, c}) \to \o{f}_{a, c} \In {\bf Set}`$

$`\mu_{a, c}`$ を、特定の $`b`$ に対するファイバー $`\o{f}_{a, b} \times \o{f}_{b, c}`$ に制限した写像を $`\mu_{a, c}|_b`$ と書きます。

$`\quad \mu_{a, c}|_b : \o{f}_{a, b} \times \o{f}_{b, c} \to \o{f}_{a, c} \In {\bf Set}`$

これが $`\msf{comp}`$ の成分となります。

$`\quad \msf{comp}_{a, b, c} := \mu_{a, c}|_b \;: \o{f}_{a, b} \times \o{f}_{b, c} \to \o{f}_{a, c} \In {\bf Set}`$

以上で、$`\cat{C}`$ の構成素はすべて準備できました。あとは圏の公理を満たすことを示せばいいのですが、圏の公理はちょうどモナドの公理〈モナド法則〉に対応しています。それは、具体的に書き下してチェックできます。

おわりに

集合・関数係数行列2-圏 $`{\bf SFCMat}`$ は、0-射/1-射/2-射がすべて具体的に書き下せて、積和の公式で計算も実行できます。無限集合がいやなら、$`{\bf Set}`$ の代わりに $`{\bf FinSet}`$ をベースにすると、ほんとに列挙可能になります。

集合・関数係数行列2-圏 $`{\bf SFCMat}`$ は興味深い部分2-圏を含みます。今述べた、インデックス集合を有限集合だけにした部分2-圏も興味深いものです。行列のもとであるスパンを、総合的単射なスパン〈jointly injective span〉に限定して、関数係数行列の成分を単射にした部分2-圏も面白い2-圏です。これは、関係の圏 $`{\bf Rel}`$ に、(集合としての)関係の包含関係を2-射とする2-圏と同値になります。

集合・関数係数行列2-圏 $`{\bf SFCMat}`$ はとても扱いやすいけど、オモチャというわけではなくて、豊富な構造を持ちます。色々な応用に使えそうです。

関連する記事:

  1. スパンとファイバー積と行列計算
  2. 集合係数のスカラー・ベクトル・行列・テンソル
  3. 集合・関数係数行列の2-圏、モナドも添えて この記事

*1:特定された単元集合(集合圏の終対象)の唯一の要素をアスタリスクを使って $`{\bf 1} = \{*\}`$ と書くことが多いので、具体的な要素であるアスタリスクをインデックス値に指定したときも $`\o{f}_{a, *}`$ となります。困ります。が、この程度のコンフリクトは許容して、“困ったらその場で対処”ということにします。

*2:ここの「小さな集合」は small set ではなくて国語辞書的意味の「小さな」。

*3:それぞれ、結合律子〈associator〉、左単位律子〈left unitor〉、右単位律子〈right unitor〉です。