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

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

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

参照用 記事

ファミリー構成モナド: 大規模構造の事例として

圏 $`\mathcal{C}`$ の対象ファミリー〈family of objects〉を対象として、対象ファミリーのあいだの準同型射を射とした圏を構成できます。この圏を $`\mathrm{Fam}(\mathcal{C})`$ とします。圏 $`\mathcal{C}`$ を引数変数と考えると、$`\mathrm{Fam}`$ は関手となります。そして、この関手を台関手とするモナドを構成可能です。

この記事の目的は、このモナドがどこにどんな形態で生息しているのかをハッキリと捉えることです。当該のモナドを具体的に定義することはほとんど省略します。

この記事には脚注が多いですが、抽象的な議論をするときに注意すべきことを(気が付いた所は)注釈するようにしました。$`\newcommand{\mrm}[1]{\mathrm{#1}}
\newcommand{\cat}[1]{\mathcal{#1}}
\newcommand{\twoto}{\Rightarrow }
\newcommand{\In}{\text{ in } }
\newcommand{\Iff}{\Leftrightarrow }
\newcommand{\hyp}{\text{-} }
\newcommand{\dimU}[2]{{#1}\!\updownarrow^{#2}}
\newcommand{\F}[1]{\mathscr{#1} }
\require{color} % 緑色
\newcommand{\Keyword}[1]{ \textcolor{green}{\text{#1}} }%
\newcommand{\For}{\Keyword{For } }%
\newcommand{\Define}{\Keyword{Define } }%
\newcommand{\Subject}{\Keyword{Subject } }%
\newcommand{\Let}{\Keyword{Let } }
`$

内容:

ファミリーとそのあいだの準同型射

集合ファミリー〈集合族 | {indexed}? family of sets〉とは、次の形の写像です。

$`\quad F:I \to |{\bf Set}| \In {\bf SET}\:\text{ for some }I\in |{\bf Set}|
`$

集合ファミリー $`F`$ を、その域(インデックス集合〈indexing set〉と呼ぶ*1)を添えて $`(I, F)`$ とも書きます*2。集合ファミリーの余域は常に $`|{\bf Set}|`$ (すべての小さい集合のクラス*3)です。

$`(I, F), (J, G)`$ が2つの集合ファミリーのとき、そのあいだの準同型射〈homomorphism〉は、写像 $`\varphi`$ と写像のファミリー $`\alpha`$ のペア $`(\varphi, \alpha)`$ *4です。

  • $`\varphi: I \to J \In {\bf Set}`$
  • $`\alpha = (\alpha_i : F_i \to G_{\varphi(i)})_{i \in I}`$

$`\varphi`$ は単なる写像〈関数〉ですが、集合ファミリー間の準同型射(という複合体)の構成素役割り名としてはリインデックス写像〈reindexing map〉と呼びます。リインデックス写像で $`G`$ を引き戻すと、$`G_{\varphi(\hyp)} = G\circ \varphi`$ のインデックス集合は $`I`$ になります。$`\alpha`$ は、$`I`$ でインデックス付けられた写像のファミリー〈$`I`$-indexed family of maps〉です。

集合ファミリーの圏〈category of families of sets〉 $`{\bf Fam}`$ は次のように定義されます。

  • $`|{\bf Fam}|`$ は、すべての集合ファミリーのクラス〈大きな集合〉。
  • $`F, G\in |{\bf Fam}|`$ に対して、そのあいだの射は、集合ファミリーのあいだの準同型射。
  • 射の結合と恒等射は適切に定義する。(割愛しますが、定義できます。)

単に「ファミリー」と言った場合は集合ファミリーのことで、ファミリーの圏は $`{\bf Fam}`$ を意味します。“ファミリー=集合ファミリー”の一般化として、圏 $`\cat{C}`$ に対して“$`\cat{C}`$の対象のファミリー”、より短く“$`\cat{C}`$-ファミリー”を定義できます。この時点ではまだ定義してませんが、“$`\cat{C}`$-ファミリー”とそのあいだの準同型射の圏は、

$`\quad \mrm{Fam}(\cat{C})`$

と書きます。

一般化されたファミリーとその圏

“$`\cat{C}`$-ファミリー”とそのあいだの準同型射の圏については、次の記事で述べています。

この過去記事を参照しなくて済むように、最小限のことはこの節と次の節で述べます。が、過去記事と記法を少し変えるので、それを注意しておきます。

$`\text{過去記事}`$ $`\text{この記事}`$
$`{\bf Fam}[\hyp](\hyp)`$ $`\text{使わない}`$
$`{\bf Fam}(\hyp)`$ $`\mrm{Fam}(\hyp)`$
$`{\bf Fam}(\hyp, \hyp)`$ $`\text{使わない}`$

$`\mrm{Fam}`$ を、太字〈ボールド体〉から立体〈ローマン体〉に変更したのは、「関手の固有名は立体で書く」というネーミングルールにしたいからです。圏の固有名は相変わらず太字です。次のようにフォントを区別します。

  • 一般的な圏はカリグラフィー体: $`\cat{C}, \cat{D}`$
  • 特定固有な圏は太字〈ボールド体〉: $`{\bf Set}, {\bf SET}, {\bf CAT}, {\bf CAT}^1`$
  • 一般的な関手は筆記体〈スクリプト体〉: $`\F{F}: \cat{C} \to \cat{D}`$
  • 特定固有な関手は立体〈ローマン体〉: $`\mrm{Fam}: {\bf CAT}^1 \to {\bf CAT}^1`$

一般的な関手が斜体〈イタリック体〉でなくて筆記体なのは、一般的なファミリーを $`F, G`$ などの斜体で表すからです。関手に筆記体を使うのは、この記事だけのローカルな約束です。

次の関係があります。

$`\quad {\bf Fam} = \mrm{Fam}({\bf Set})`$

特定固有な圏 $`{\bf Set}`$(太字)に特定固有な関手 $`\mrm{Fam}`$(立体)を適用した結果が、特定固有な圏 $`{\bf Fam}`$(太字)です。

さてここから、特定固有な関手 $`\mrm{Fam}`$ を定義します。まず、$`{\bf CAT}`$ は、必ずしも小さくない圏を対象とする“圏の2-圏”です。サイズと次元ごとの “k-圏の(k + 1)-圏”の呼び名〈固有名〉は以下の表のとおりです。横方向がサイズ(宇宙のレベル)で、縦方向が圏の次元、$`d`$ はデフォルトの宇宙レベルです*5

$`r = d `$ $`r = d + 1`$ $`r = d + 2`$
$`n = 0`$ $`{\bf Set}`$ $`{\bf SET}`$ $`\mathbb{SET}`$
$`n = 1`$ $`{\bf Cat}`$ $`{\bf CAT}`$ $`\mathbb{CAT}`$
$`n = 2`$ $`{\bf 2Cat}`$ $`{\bf 2CAT}`$ $`\mathbb{2CAT}`$

次の点に注意しましょう。

  • サイズの制限から、$`{\bf Set} \in |{\bf Cat}|`$ ではない。
  • $`{\bf Set} \in |{\bf CAT}|`$ である。
  • $`|{\bf Set}| \in |{\bf SET}|,\; \mrm{Mor}({\bf Set})\in |{\bf SET}|`$ である。
  • $`{\bf Set}`$ は集合〈0-圏〉ではなくて圏〈1-圏〉なので、$`{\bf Set} \in |{\bf SET}|`$ ではない。
  • $`{\bf CAT}`$ は圏〈1-圏〉ではなくて2-圏なので、$`{\bf CAT} \in |\mathbb{CAT}|`$ ではない。
  • $`{\bf CAT} \in |\mathbb{2CAT}|`$ である。

$`{\bf CAT}`$ は2-圏ですが、(恒等2-射以外の)2-射を捨ててしまえば1-圏になります。2-圏から2-射を捨てた1-圏は次のように書きます。

$`\quad \dimU{\bf CAT}{1}`$

この書き方については「圏の次元調整」を見てください。ちょっと煩雑なので、ここでは*6、次の略記を採用します。

$`\quad {\bf CAT}^1 := \dimU{\bf CAT}{1}`$

$`{\bf CAT}^1`$ は2-圏ではなくて1-圏なので、次が成立します。

$`\quad {\bf CAT}^1 \in |\mathbb{CAT}|`$

これから定義しようとしてる特定固有な関手 $`\mrm{Fam}`$ は次のプロファイル(域と余域、生息地)を持ちます。

$`\quad \mrm{Fam} : {\bf CAT}^1 \to {\bf CAT}^1 \In \mathbb{CAT}\\
\text{i.e.}\\
\quad \mrm{Fam} \in |\mathbb{CAT}({\bf CAT}^1, {\bf CAT}^1) |
`$

つまり $`\mrm{Fam}`$ は、大きい〈小さいとは限らない〉圏達の1-圏(2-圏ではない!) $`{\bf CAT}^1`$ 上の自己関手〈endo-functor〉になります。モナドの台関手に使う予定なので、自己関手である必要があります。

自己関手であれ何であれ、関手を定義するには、次のパート〈部品〉を定義します。

  • 対象パート〈0-射パート〉: $`\mrm{Fam}_0 : |{\bf CAT}^1| \to |{\bf CAT}^1| \In \mathbb{SET}`$
  • ホムパート: 2つの対象(大きい〈小さくないかも知れない〉圏*7) $`\cat{C}, \cat{D}`$ ごとに
    $`\mrm{Fam}_{\cat{C}, \cat{D}} : {\bf CAT}^1(\cat{C}, \cat{D}) \to {\bf CAT}^1(\mrm{Fam}_0(\cat{C}), \mrm{Fam}_0(\cat{D})) \In {\bf SET}`$

さらに、定義したパート達が関手性を持つこと(関手の条件を満たすこと)を示す必要があります。

$`\mrm{Fam}`$ を定義するにはサイズの大きな集合達を扱いますが、関手の定義はサイズ(宇宙)に無関係です。つまり、どの宇宙〈グロタンディーク宇宙〉のなかでも関手という概念は一律に通用するのです(宇宙多相〈universe polymorphic〉な定義が可能)。言い方を変えると、関手を定義する行為には、サイズの違いは影響しません。

関手 Fam

特定固有な関手 $`\mrm{Fam}`$ を定義するために、その対象パート $`\mrm{Fam}_0`$ から定義します。何を定義すべきか(主題)を、先に $`\Subject`$で宣言して、それに続けて実際の定義を書くことにします。

$`\Subject \mrm{Fam}_0 : |{\bf CAT}^1| \to |{\bf CAT}^1| \In \mathbb{SET}\\
\quad \For \cat{C} \in |{\bf CAT}^1|\\
\quad \Subject \cat{D} := \mrm{Fam}_0(\cat{C}) \in |{\bf CAT}^1|\\
\qquad \Define |\cat{D}| := \sum_{X \in |{\bf Set}|} {\bf SET}(X, |\cat{C}|) \;\in |{\bf SET}|\\
\qquad \For F = (I, F), G = (J, G) \in |\cat{D}|\\
\qquad \Define \cat{D}(F, G) = \cat{D}( (I, F), (J, G) ) := \\
\qquad\quad \sum_{\varphi \in {\bf Set}(I, J)} \prod_{i\in I} \cat{C}(F_i, G_{\varphi(i)}) \;\in |{\bf Set}|
`$

これで、与えられた圏 $`\cat{C}`$ に対する $`\cat{D} = \mrm{Fam}_0(\cat{C})`$ の素材は定義できました。まだ、$`\cat{D}`$ の結合と恒等射を定義してないし、圏の条件〈公理〉が成立することの確認もしていません。が、それらは省略します。適切な定義を積み重ねれば、実際に $`\cat{D}`$ は圏になります。

$`\mrm{Fam}`$ のホムパートも定義しましょう。以下で $`\F{F}_1`$ は、関手 $`\F{F}`$ の射パートです。

$`\For \cat{C},\cat{D} \in |{\bf CAT}^1|\\
\Subject \mrm{Fam}_{\cat{C}, \cat{D}} : {\bf CAT}^1(\cat{C}, \cat{D}) \to {\bf CAT}^1(\mrm{Fam}_0(\cat{C}), \mrm{Fam}_0(\cat{D}) ) \In {\bf SET}\\
\quad \For \F{F} \in {\bf CAT}^1(\cat{C}, \cat{D})\\
\quad \Subject \F{G} := \mrm{Fam}_{\cat{C}, \cat{D}}(\F{F})
: \mrm{Fam}_0(\cat{C}) \to \mrm{Fam}_0(\cat{D}) \In {\bf CAT}^1\\
\qquad \Subject \F{G}_0 : |\mrm{Fam}_0(\cat{C})| \to |\mrm{Fam}_0(\cat{D})| \In {\bf SET}\\
\qquad\quad \For F = (I, F) \in |\mrm{Fam}_0(\cat{C})|\\
\qquad\quad \Define \F{G}_0(F) = \F{G}_0 ( (I, F) ) := (F; \F{F}_0 : I \to |\cat{D}|) \;\in |\mrm{Fam}_0(\cat{D})|\\
\qquad \For F = (I, F), G=(J, G) \in |\mrm{Fam}_0(\cat{C})| \\
\qquad \Subject \F{G}_{F, G} : \mrm{Fam}_0(\cat{C})(F, G) \to \mrm{Fam}_0(\cat{D})(\F{G}_0(F), \F{G}_0(G))\\
\qquad\quad \For (\varphi, \alpha) \in \mrm{Fam}_0(\cat{C})(F, G)\\
\qquad\quad \Define \F{G}_{F, G}( (\varphi, \alpha) ) := ( \varphi, \alpha; \F{F}_1 )
\in \mrm{Fam}_0(\cat{D})(\F{G}_0(F), \F{G}_0(G))
`$

これで、2つの圏でインデックスされた写像達 $`\mrm{Fam}_{\cat{C}, \cat{D}}`$ は定義できました。それらが全体として関手であることは別途確認が必要です。これも省略します。

結果的に、$`\mrm{Fam}`$ は、圏と関手の圏のあいだの関手、つまり、圏を受け取って新しい圏を返し、関手を受け取って新しい関手を整合的に返すようなメカニズムになります。関手 $`\mrm{Fam}`$ の域圏・余域圏である圏 $`{\bf CAT}^1`$ は、小さくない大きな圏(例えば $`{\bf Set}`$)も含む“圏の圏”なので、とても大きな圏〈very large category〉となります*8。とても大きな圏は“とてもとても大きな2-圏〈very very large 2-category〉”のなかに居るので、関手 $`\mrm{Fam}`$ のプロファイル(域・余域と生息地の情報)は次のようになります。

$`\quad \mrm{Fam}: {\bf CAT}^1 \to {\bf CAT}^1 \In \mathbb{CAT}`$

モナド Fam

モナドは通常、記号の乱用により

$`\quad \F{F} = (\F{F}, \mu, \eta)`$

のように書きます。モナドとモナドの台関手を同じ記号で表して〈オーバーロードして〉います。モナドの台関手が作用する圏は集合圏 $`{\bf Set}`$ であることが多いですが、いつでも集合圏とは限りません。基礎圏(台関手が作用する圏)$`\cat{C}`$ も明示するときは次のように書きます。

$`\quad \F{F} = \F{F}/\cat{C} = (\F{F}, \mu, \eta)/\cat{C}`$

前節で述べた関手 $`\mrm{Fam}`$ はモナドに拡張できます。そのモナドも記号の乱用で $`\mrm{Fam}`$ と書きます。

$`\quad \mrm{Fam} = \mrm{Fam}/{\bf CAT}^1 = (\mrm{Fam}, \mrm{flatten}, \mrm{unit})/{\bf CAT}^1`$

特定固有な自然変換は立体〈ローマン体〉小文字の名前にします(ネーミングルール)。$`\mrm{flatten}, \mrm{unit}`$ は、特定固有な関手 $`\mrm{Fam}`$ と共にモナドを構成する特定固有な自然変換達です。モナドを構成する圏、関手、自然変換は、同一の2-圏のなかの0-射、1-射、2-射です。モナド $`\mrm{Fam}`$ の場合は次のようになります。

  • モナドの基礎圏 : 圏〈0-射〉 $`{\bf CAT}^1 \in |\mathbb{CAT}|`$
  • モナドの台関手 : 関手〈1-射〉 $`\mrm{Fam} : {\bf CAT}^1 \to {\bf CAT}^1 \In \mathbb{CAT}`$
  • モナドの乗法 : 自然変換〈2-射〉
    $`\mrm{flatten} :: \mrm{Fam} * \mrm{Fam} \twoto \mrm{Fam} : {\bf CAT}^1 \to {\bf CAT}^1 \In \mathbb{CAT}`$
  • モナドの単位 : 自然変換〈2-射〉
    $`\mrm{unit} :: \mrm{Id}_{{\bf CAT}^1} \twoto \mrm{Fam} : {\bf CAT}^1 \to {\bf CAT}^1 \In \mathbb{CAT}`$

あるいは、関手圏*9 $`[{\bf CAT}^1, {\bf CAT}^1] \in |\mathbb{CAT}|`$ 内で考えるならば:

  • モナドの台関手 : 対象〈0-射〉 $`\mrm{Fam} \in [{\bf CAT}^1, {\bf CAT}^1]`$
  • モナドの乗法 : 射〈1-射〉 $`\mrm{flatten} : \mrm{Fam} * \mrm{Fam} \to \mrm{Fam} \In [{\bf CAT}^1, {\bf CAT}^1]`$
  • モナドの単位 : 射〈1-射〉 $`\mrm{unit} : \mrm{Id} \to \mrm{Fam} \In [{\bf CAT}^1 , {\bf CAT}^1]`$

2-圏 $`\mathbb{CAT}`$ または関手圏(モノイド圏構造付き) $`[{\bf CAT}^1, {\bf CAT}^1]`$ 内に配備された構成素達がモナドになるためには、モナドの法則〈公理〉を満たす必要があります。例えば、モナドの結合律を関手圏($`*`$ はモノイド積) $`[{\bf CAT}^1, {\bf CAT}^1]`$ 内で書いてみると、次の可換図式になります。

$`\require{AMScd}
\begin{CD}
(\mrm{Fam}*\mrm{Fam})*\mrm{Fam} @= \mrm{Fam}*(\mrm{Fam}*\mrm{Fam})\\
@V{\mrm{flatten} * \mrm{ID}_{\mrm{Fam}} }VV @VV{\mrm{ID}_{\mrm{Fam}} * \mrm{flatten} }V\\
\mrm{Fam}*\mrm{Fam} @. \mrm{Fam}*\mrm{Fam}\\
@V{\mrm{flatten} }VV @VV{\mrm{flatten} }V\\
\mrm{Fam} @= \mrm{Fam}
\end{CD}\\
\text{commutative in } [{\bf CAT}^1, {\bf CAT}^1]\\
[{\bf CAT}^1, {\bf CAT}^1] \in |\mathbb{CAT}|
`$

モナド $`\mrm{Fam}`$ の定義はすべて省略します。が、冒頭で言った「どこにどんな形態で生息しているのか?」については言及しておきます。

一般に、モナドは2-圏 $`\cat{K}`$ 内に配備・展開される構造です。2-圏 $`\cat{K}`$ 内のモナドの全体は圏や2-圏を構成するので、それを $`\mrm{Mnd}(\cat{K})`$ と書きます。モナド $`\mrm{Fam}`$ の場合は、構造が具現化される2-圏(モナド構造をホストするターゲット2-圏)が $`\mathbb{CAT}`$ ですから、

$`\quad \mrm{Fam} \in |\mrm{Mnd}(\mathbb{CAT})|`$

モナド $`\mrm{Fam}`$ の構成素はすべて、2-圏 $`\mathbb{CAT}`$ に棲んでいるk-射(k = 0, 1, 2)です。例えば、

$`\quad \mrm{flatten} :: \mrm{Fam}*\mrm{Fam} \twoto \mrm{Fam} : {\bf CAT}^1 \to {\bf CAT}^1 \In \mathbb{CAT}`$

モナド $`\mrm{Fam}`$ は、サイズ(宇宙レベル)から言っても複雑さから言っても、そこそこ大規模な構造です。このような構造を扱うときは、当該構造が「どこにどんな形態で生息しているのか?」を把握することが重要です。

*1:インデックス集合の実体は単なる集合です。集合ファミリーの域として登場しているときに、集合ファミリーの構成素としての役割り名が「インデックス集合」です。

*2:$`\mrm{dom}(F) = I`$ なので $`(I, F)`$ は冗長表現ですが、冗長表現が便利なことは多くあります。

*3:「クラス」は、「大きい集合〈小さくないかも知れない集合〉」の同義語です。

*4:ここでのペアは、独立ペアではなくて依存ペアです。第一成分の値により、第二成分の選択が制約されます。

*5:宇宙の階層の作り方は人により違うので、デフォルトの宇宙レベルも人により変わります。通常、自然数全体の無限集合を含む最初の宇宙をデフォルトの宇宙に取ります。

*6:右肩に1を付けるのは、他の意味でも使いそうですから、あくまでこの記事だけのローカルな略記とします。

*7:定義の上からは、小さい集合〈small set〉は大きい集合〈large set〉です。真に大きい集合〈proper large set〉を大きい集合と呼ぶ用語運用もありますが、ここでは「大きい = 小さいとは限らない = 小さくないかも知れない」です。

*8:デフォルトの宇宙に所属する集合を小さい集合〈small set〉と呼びます。宇宙の階層が上がるごとに、大きな集合〈large set〉、とても大きな集合〈very large set〉、とてもとても大きな集合〈very very large set〉です。デフォルトの宇宙の下に宇宙があれば、ひとつ下層の宇宙に所属する集合はとても小さい集合〈tiny set〉です。

*9:単なる圏ではなくて、関手結合をモノイド積とするモノイド圏と考えます。