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

ご連絡は上記 X アカウントに DM にてお願いします。

参照用 記事

アドホック随伴系は相対随伴系

次の記事達の続きです。

  1. アドホック随伴系と自由対象・台対象
  2. アドホック随伴問題と自由対象の求め方

アドホック随伴系は、自由-忘却・随伴系の自由関手が欠如した“随伴系もどき”だと説明しました。しかし、より正確に言うなら、自由関手は欠如しているのではなくて退化していると言うべきでしょう。極端に退化しているので、無くなってしまったように見えるのです。

自由関手が退化した状況もうまく扱える枠組みが相対随伴系です。相対随伴系は、“随伴系もどき”にも正当な居場所を与えます。通常の随伴系とアドホック随伴系を同等に公平に扱う枠組みが相対随伴系です。通常の随伴系からモナドが誘導されるのと同様に、相対随伴系からは相対モナドが誘導されます。

この記事では、アドホック随伴系を相対随伴系とみなす方法を解説します。アドホック随伴系から誘導される、極端に退化した相対モナド〈アドホック・モナド〉も構成します。$`\newcommand{\cat}[1]{\mathcal{#1}}
\newcommand{\mrm}[1]{\mathrm{#1}}
\newcommand{\mbf}[1]{\mathbf{#1}}
\newcommand{\id}{\mathrm{id}}
\newcommand{\op}{\mathrm{op}}
\newcommand{\In}{\text{ in }}
%\newcommand{\u}[1]{\underline{#1}}
%\newcommand{\o}[1]{\overline{#1}}
\newcommand{\hyp}{ \text{-} }
%\newcommand{\Iff}{ \Leftrightarrow }
%\newcommand{\Imp}{ \Rightarrow }
\newcommand{\twoto}{\Rightarrow }
`$

内容:

※色付きテキストは次の約束で使います。

  • 青い文字: 重要な概念・用語だがこの記事内では定義・説明してないもの。
  • 赤い文字: この記事内で導入・定義した概念・用語。過去の定義の再掲・繰り返しのときもある。
  • マゼンタの文字: この記事内の後方で定義されるか参照〈リンク〉される概念・用語。

随伴系(復習)

随伴関手ペアと関連する概念的事物達をひとつの系・構造〈system/structure〉とみなして随伴系〈adjunction | adjoint system〉と呼びます。随伴系の構成素(素材データ)達の“日本語による呼び名”と“典型的な記号名”を列挙します。

日本語名 $`\text{Symbol Name}`$
(特に無い) $`\cat{C}`$
(特に無い) $`\cat{D}`$
左関手 $`L\text{ or }F`$
右関手 $`R\text{ or }U`$
単位 $`\eta`$
余単位 $`\varepsilon`$
転置 $`\Phi`$
反転置 $`\Psi`$

2-二重圏: 随伴系達の圏」では、左関手の域 $`\cat{C}`$ を左域〈left domain〉、右関手の域 $`\cat{D}`$ を右域〈right domain〉と呼んでますが、結局その後使ってないので、最初の2つの構成素は原則無名です。

通常、最初の4つの構成素を明示して、随伴系は次のように(図式として)書かれます。

$`\quad \xymatrix{
\cat{C} \ar@/^/[r]^L
\ar@{}[r]|{\bot}
&\cat{D} \ar@/^/[l]^R
}\\
\quad \In \mbf{CAT}
`$

過去、「随伴系の書き方」とか「随伴に関する注意事項」で、上記の図式を1行のテキストでどう書くか? に悩んでウダウダ言っています。が、そんなことで消耗するのはウンザリなので図式で描きます。ほんと、図式のテキスト化って不毛で疲弊して、なんもいいことない、諸悪の根源*1

それはともかく; 随伴系は4つの構成素では決まりません。$`(\cat{C}, \cat{D}, L, R, \eta, \varepsilon)`$ にニョロニョロ関係式〈snake {law | relation | equation | identity}〉を入れて定義する方式は、単位・余単位方式〈unit-counit style〉の定義、$`(\cat{C}, \cat{D}, L, R, \Phi, \Psi)`$ に $`\Phi, \Psi`$ が互いに逆だと主張する等式(ラムダ計算用語ではベータ等式エータ等式)を入れて定義する方式は、転置・反転置方式〈transpose-untranspose style〉です。

単位・余単位方式は代数的な定義です。転置・反転置方式は自然なホムセット同型による定義です。単位・余単位方式と転置・反転置方式が同値なことは、以下の過去記事に書いています。

随伴系の主役は、左関手・右関手のペアではなくて、単位・余単位のペアまたは転置・反転置のペアです。主役を暗黙化してしまうのは良くない習慣です。

相対随伴系

相対随伴系〈relative {adjunction | adjoint system}〉は、通常の随伴系を変形して次の形を考えます。(左右の関手は $`F, U`$ とします、気分*2により。)

$`\quad \xymatrix@C+1pc@R-1.5pc{
\cat{A} \ar[dd]_J \ar@/^/[dr]^F
&{}
\\
{} \ar@{}[r]|{\bot}
&\cat{D} \ar@/^/[dl]^U
\\
\cat{C}
}\\
\quad \In \mbf{CAT}
`$

新しく追加された構成素 $`J`$ はルート関手〈root functor〉といいます。その他の構成素役割り名(日本語名、記号名)は随伴系と同じです。相対随伴系であることを強調したいなら、語頭に「相対」を付ければいいでしょう、「相対転置」とか。

転置・反転置方式で相対随伴系を定義するとして、転置・反転置は次のようです。

$`\quad \Phi :: \cat{D}(F, \mrm{Id}) \twoto \cat{C}(J, U) : \cat{A}^\op\times \cat{D} \to \mbf{Set}\In \mbf{CAT}\\
\quad \Psi :: \cat{C}(J, U) \twoto \cat{D}(F, \mrm{Id}) : \cat{A}^\op\times \cat{D} \to \mbf{Set}\In \mbf{CAT}
`$

ここで、$`\mrm{Id}`$ は適当な圏(推測して補う)の恒等関手です。転置 $`\Phi`$ と反転置 $`\Psi`$ が互いに逆であることが、相対随伴系の法則です。自然変換の縦結合の図式順演算子記号を '$`;`$' 、恒等自然変換は $`\mrm{ID}`$ として、次のようです。

$`\quad \text{beta} ::: \Phi ; \Psi \Rrightarrow \mrm{ID} \; :: \cat{D}(F, \mrm{Id}) \twoto\cat{D}(F, \mrm{Id}) : \cat{A}^\op\times \cat{D} \to \mbf{Set}\In\mbf{CAT}\\
\quad \text{eta} ::: \Psi ; \Phi \Rrightarrow \mrm{ID} \; :: \cat{C}(J, U) \twoto \cat{C}(J, U) : \cat{A}^\op\times \cat{D} \to \mbf{Set} \In\mbf{CAT}
`$

'$`\Rrightarrow`$' は等号〈イコール〉ですが、3-射として書いています。

自然変換を成分表示するにあたって、次の約束をします。

  • 圏 $`\cat{A}`$ の対象は、小文字 $`a, b`$ などで表す。
  • 圏 $`\cat{C}`$ の対象は、アルファベットの最初のほうの大文字 $`A, B`$ などで表す。
  • 圏 $`\cat{D}`$ の対象は、アルファベットの終わりのほうの大文字 $`W, X, Y`$ などで表す。

可逆な自然変換(自然同型)である転置を成分表示すると次のようです。

$`\text{For }a\in |\cat{A}|, Y\in |\cat{D}|\\
\quad \Phi_{a, Y} : \cat{D}(F(a), Y) \overset{\cong}{\to} \cat{C}(J(a), U(Y)) \In \mbf{Set}\\
\quad \text{natural in }a, Y
`$

ここで、'$`\overset{\cong}{\to}`$' は可逆な写像であることを示します。

念の為に注意しておくと; $`F:\cat{A}\to \cat{D}`$ を、ホム双関手 $`\cat{D}(\hyp, \hyp)`$ の第一引数に代入して $`\cat{D}(F(\hyp), \hyp)`$ を作ることはホントは出来ません。$`F^\op:\cat{A}^\op \to \cat{D}^\op`$ による $`\cat{D}(F^\op(\hyp), \hyp)`$ なら大丈夫〈well-defined〉です。習慣により $`{^\op}`$ を省略しています*3。詳しくは「イイカゲンとインチキを悔い改めるためのコスト」を参照してください。

極端な相対随伴系

冒頭で、アドホック随伴系は自由関手が極端に退化した相対随伴系だと言いました。「極端に退化した」とは、以下の形をしていることです。$`\mbf{I}`$ は、単一対象と恒等射しか持たない自明な圏〈trivial category〉(圏達の圏の終対象)です。

$`\quad \xymatrix@C+1pc@R-1.5pc{
\mbf{I} \ar[dd]_J \ar@/^/[dr]^F
&{}
\\
{} \ar@{}[r]|{\bot}
&\cat{D} \ar@/^/[dl]^U
\\
\cat{C}
}\\
\quad \In \mbf{CAT}
`$

以下、$`|\mbf{I}| = \{0\}`$ だとします。

$`J(0) =: A`$ と置くと、関手 $`J:\mbf{I}\to \cat{C}`$ は対象 $`A\in |\cat{C}|`$ だけで決まります。関手 $`F`$ と対象 $`A`$ は同一視してもいいと言えます。同様に $`F(0) =: W`$ と置くと、関手 $`F:\mbf{I}\to \cat{D}`$ は対象 $`W\in |\cat{D}|`$ と同一視可能です。自由関手 $`F`$ は対象 $`W`$ に退化していると言えます。

この設定で、相対随伴系のホムセット同型を書くと:

$`\text{For }a\in |\mbf{I}|, Y\in |\cat{D}|\\
\quad \Phi_{a, Y} : \cat{D}(F(a), Y) \overset{\cong}{\to} \cat{C}(J(a), U(Y)) \In \mbf{Set}\\
\quad \text{natural in }a, Y
`$

ところが:

  • 変数 $`a`$ は値 $`0`$ しか取れないので、変数として書くのは無意味。
  • $`\Phi_{a, Y}`$ は $`\Phi_{0, Y}`$ となり、下付き $`0`$ はあらずもがななので削除してよい。気分の問題で、大文字 $`\Phi`$ を小文字 $`\phi`$ にする。
  • $`F(a)`$ は $`F(0) = W`$ である。
  • $`J(a)`$ は $`J(0) = A`$ である。

これらを考慮して書き換えると:

$`\text{For }Y\in |\cat{D}|\\
\quad \phi_{Y} : \cat{D}(W, Y) \overset{\cong}{\to} \cat{C}(A, U(Y)) \In \mbf{Set}\\
\quad \text{natural in }Y
`$

これは、アドホック随伴系の定義そのものです! 「アドホック随伴問題と自由対象の求め方 // 自由-忘却・随伴系とアドホック随伴系(復習)」の定義(以下に引用)と比べてみてください。

$`\text{For }A\in |\cat{C}|,\; W\in |\cat{D}|\\
\text{For }Y\in \cat{D}\\
\quad \phi_Y : \cat{D}(W, Y) \overset{\cong}{\to} \cat{C}(A, U(Y)) \In \mbf{Set}
\quad`$

アドホック随伴系では、自由関手が極限まで退化しているのですが、それでもかなりの程度“随伴系の議論”が出来ます。これは、相対随伴系が有用である証左だと言えます。

相対モナド

モナドの定義にはモノイド方式〈monoid {style | form}〉と拡張方式〈extension {style | form}〉があります。相対モナドの場合、モノイド方式は難しくなります。単なるモノイドではなくて斜モノイド(斜モノイド圏内のモノイド対象、「モナド-セオリー対応はラックス斜モノイド関手だろう」参照)という扱いにくい代数系が出現します。なので通常は拡張方式〈拡張スタイル〉で定義します。

拡張スタイルの相対モナド〈relative monad in extension {style | form}〉の定義は「相対モナドと集合係数の線形代数 // 相対モナド」に書いてあります。相対モナドは次の形に書きます。

$`\quad (J, T, \eta, \mrm{Ext})\\
\text{Where}\\
\quad J : \cat{A} \to \cat{C} \In \mbf{CAT}\\
\quad T : \cat{A} \to \cat{C} \In \mbf{CAT}\\
\quad \eta :: J \twoto T : \cat{A} \to \cat{C} \In \mbf{CAT}\\
\quad \mrm{Ext} :: \cat{C}(J(\hyp), T(\hyp)) \overset{\blacktriangle}{\twoto} \cat{C}(T(\hyp), T(\hyp))
: |\cat{A}^\op|\times |\cat{A}| \overset{\blacktriangle}{\to} \mbf{Set}
`$

ここで出てきた $`\overset{\blacktriangle}{\twoto}`$ や $`\overset{\blacktriangle}{\to}`$ 苦肉の策の記法で、自然変換に似てるが自然性を要求しない写像族のつもりです。このテの自然変換もどきはけっこう出てきます*4。僕は「非自然変換」と呼んだりしています。

関手性を持たない関手もどきの「非関手」もあります*5。余談ですが、非関手や非自然変換をママコ扱いしてるのは困るんだよなー。しょうがないので、「コンビネータ」、「オペレータ」、「モダリティ」、「サプライ」なんて呼び名で対応してますが、ちゃんと定式化して名前を与えて欲しい。

話を戻して; $`\mrm{Ext}`$ は、クライスリ射の域を拡張する“必ずしも自然性を要求しない変換”で、次の成分表示を持ちます。

$`\quad \mrm{Ext}_{a, b} : \cat{C}(J(a), T(b)) \to \cat{C}(T(a), T(b)) \In \mbf{Set}`$

相対モナドの構成素達の呼び名(日本語の用語)は以下のとおりです。

日本語名 $`\text{Symbol Name}`$
(特に無い) $`\cat{A}`$
(特に無い) $`\cat{C}`$
(特に無い) $`\cat{D}`$
ルート関手 $`J`$
台関手 $`T`$
単位 $`\eta`$
クライスリ拡張 $`\mrm{Ext}`$

無名の構成素(圏)達も明示するときは、相対モナドを(長いけど)次のように書きます。

$`\quad (\cat{A}, \cat{C}, \cat{D}, J, T, \eta, \mrm{Ext})`$

相対随伴系から相対モナドへ

通常の随伴系はモナドを誘導します。同様に、相対随伴系は相対モナドを誘導します。

以下の相対随伴系があったとします。

$`\quad (\cat{A}, \cat{C}, \cat{D}, J, F, U, \Phi, \Psi)`$

この相対随伴系から、次の相対モナドを作りましょう。

$`\quad (\cat{A}, \cat{C}, \cat{D}, J, T, \eta, \mrm{Ext})`$

最初の4つの構成素は同じ(共有している)とします。相対モナドの台関手 $`T`$ は次のように定義します。

$`\quad T := F*U = U\cdot F \; : \cat{A} \to \cat{C} \In \mbf{CAT}`$

この定義は、通常の随伴系とモナドの場合と同じです。単位の定義も通常と同じです。成分は次のようです。

$`\text{For }a\in |\cat{A}|\\
\quad \eta_a := \Phi_{a, F(a)}(\id_{F(a)} ) : J(a) \to T(a) \In \cat{C} \\
\text{Where}\\
\quad T(a) = (U\cdot F) (a)
`$

$`\mrm{Ext}`$ の成分は、次の図式により定義します。

$`\quad \xymatrix@R+1pc{
{\cat{C}(J(a), (U\cdot F) (b) ) } \ar[r]^{\Psi_{a, F(b)}}
\ar[dr]_{\mrm{Ext}_{a, b}}
&{\cat{D}(F(a), F(b)) } \ar[d]^{U_{F(a), F(b)}}
\\
{}
&{\cat{C}( (U\cdot F) (a), (U\cdot F) (b)) }
}\\
\quad \text{commutative }\In \mbf{Set}
`$

ここで、$`U_{\hyp, \hyp}`$ は、関手 $`U`$ のホムパートの成分です。ホムパート(射パートをホムセットごとに細切れにしたもの)の成分達により、関手は自然変換とみなせます(「関手は自然変換」参照)。

上記の図式をテキストに書き下すなら:

$`\text{For }a, b\in |\cat{A}|\\
\text{For }f \in \cat{C}(J(a), T(b) )\\
\quad \mrm{Ext}_{a, b}(f) := U(\Psi_{a, F(b)} (f)) \;: T(a) \to T(b) \In \cat{C}\\
\text{Where}\\
\quad T(a) = (U\cdot F) (a)\\
\quad T(b) = (U\cdot F) (b)
`$

相対モナドとしてのアドホック・モナド

ここまで準備をすれば、相対随伴系としてのアドホック随伴系が誘導する相対モナド -- アドホック・モナド〈ad-hoc monad〉はすぐに作れます。

アドホック・モナドを次の形に書くとします。

$`\quad (\mbf{I}, \cat{C}, \cat{D}, J, T, \eta, \mrm{Ext})`$

ルート関手 $`J:\mbf{I} \to \cat{C}`$ は対象 $`A\in |\cat{C}|`$ と同一視可能でした。アドホック・モナドの台関手は次のように定義されます。

$`\text{For }0\in |\mbf{I}|\\
\quad T(0) := (U\cdot F)(0) = U(F(0)) = U(W)
`$

つまり、台関手 $`T`$ は対象 $`U(W) \in |\cat{C}|`$ と同一視可能です。

アドホック・モナドの単位は成分が $`\eta_0`$ だけです。唯一の成分を計算すると:

$`\quad \eta_0 \\
= \Phi_{0, F(0)}(\id_{F(0)})\\
= \phi_{W}(\id_W)
`$

これは、過去に定義したアドホック単位そのものです(「アドホック随伴系と自由対象・台対象 // アドホック随伴系のアドホック単位」参照)。相対随伴系の単位と相対モナドの単位は同じものです。

任意の $`a, b\in |\mbf{I}|`$ とは、結局 $`a = b = 0`$ なので、クライスリ射は次の形だけです。

$`\quad f: J(0) \to (U\cdot F)(0) \In \cat{C}`$

これは:

$`\quad f: A \to U(W) \In \cat{C}`$

つまり、アドホック・モナドのすべてのクライスリ射達はホムセット $`\cat{C}(A, U(W))`$ に入ってます。クライスリ射達は、クライスリ拡張で $`\cat{C}(U(W), U(W))`$ に送られます。アドホック・モナドのクライスリ拡張を計算すると:

$`\text{For }f \in \cat{C}(A, U(W))\\
\quad \mrm{Ext}_{0, 0}(f) \\
= U(\Psi_{0, F(0)} (f))\\
= U(\psi_{W} (f) )
`$

クライスリ射達のクライスリ結合の計算は、自己射モノイド〈endomorphism monoid〉$`\mrm{End}(U(W))`$ のモノイド計算になります。あまり面白くはないですね。

おわりに

アドホック随伴系を相対随伴系の事例として捉えて、対応する相対モナドであるアドホック・モナドを調べました。アドホック随伴系が極端に退化した相対随伴系なので、アドホック・モナドも極端に退化した相対モナドです。しかしそれでも、相対随伴系/相対モナドの一般論の枠組みで議論が進むところは面白いです。

相対随伴系/相対モナドの他の事例も調べたくなります。

*1:しかし、過去、図式が思うように描けない頃は、テキスト化で四苦八苦していたのです。バカみたいな苦労で、心底ウンザリしてました。

*2:どんなときに右関手を忘却関手と呼べるか? ハッキリした基準はないです。忠実関手なら躊躇なく忘却関手と呼べそうですが、気分で決めてもいいです。

*3:反変関手と共変関手の結合を許せば $`{^\op}`$ を付ける必要はありません。が、現在の主流の方式では、そもそも反変関手を認めず、ニセ反変関手で代用しています。

*4:実は、モナド/相対モナドの構成素の $`\eta`$ も、定義の際に自然変換とする必要はありません。

*5:実は、モナド/相対モナドの構成素の $`T`$ は非関手でいいのです。関手に仕立てることができるので、今回は関手にしていますが。