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

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

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

参照用 記事

ホム関手とサンドイッチ結合

【注意】2022年3月より、MathJaxまたは「はてなブログ」の仕様変更またはバグにより、MathJax/XyJaxを使った数式・図が表示できなくなりました。そのため、一部の数式・図は表示できなくなっています(ソースコードが見えます)。新しいタブまたはウィンドウに、この記事のURLを貼り付けて開くと見えることがあります(ダメなときもあります)。もし、表示できていれば、この注意書きは無視してください。


\newcommand{\cat}[1]{\mathcal{#1}}
\newcommand{\id}{\mathrm{id} }
\newcommand{\op}{\mathrm{op} }
\newcommand{\mrm}[1]{\mathrm{#1} }
\newcommand{\In}{\text{ in } }
\newcommand{\Imp}{\Rightarrow }
\newcommand{\Iff}{\Leftrightarrow }
\require{color}
\newcommand{\Keyword}[1]{ \textcolor{green}{\text{#1}} }%
\newcommand{\For}{\Keyword{For }  }%
\newcommand{\Define}{\Keyword{Define }  }%
\newcommand{\Declare}{\Keyword{Declare }  }%
\newcommand{\Where}{\Keyword{Where }  }%
ホム関手は非常に基本的かつ初等的な概念です。初等的なゆえにむしろ、シッカリと語られなかったり、ボンヤリした理解のまま先に進んでしまったりがアリガチかも知れません。

内容:

ホムセットとホム関手

圏のホムセットは、圏の定義と同じタイミングで -- つまり圏論の最初から出てくる概念です。圏 \cat{C} のホムセットは次のように定義されます。

\For A, B \in |\cat{C}|\\
\Define \cat{C}(A, B) := 
\{f \in \mrm{Mor}(\cat{C}) \mid 
     \mrm{dom}(f) = A \land \mrm{cod}(f) = B
\}

この定義を見れば、\cat{C}(-, -) が次のような対応であることが分かるでしょう。

\quad 
 \cat{C}(-, -) : |\cat{C}| \times |\cat{C}| \to |{\bf Set}| \In {\bf SET}

ここで、{\bf SET}|{\bf Set}| を対象として含むような“巨大な集合圏”です*1

昔はホムセットを \mrm{Hom}_\cat{C}(-, -) と書いてましたが、書くのが面倒なので今の主流は簡潔な \cat{C}(-, -) です。

記号 \cat{C}(-, -) は、ホムセットだけではなくホム関手としても使われます。つまり、ハイフン〈マイナス記号〉の場所に射が入ることがあります。

\quad \cat{C}(f, g) \:\text{ where }f, g \in \mrm{Mor}(\cat{C})

ハイフンの場所に対象と射が混じることもあります。

\quad \cat{C}(A, g) \:\text{ where }A \in |\cat{C}|, g \in \mrm{Mor}(\cat{C})

もちろんこれは、記号のオーバーロードと省略が使われています。オーバーロード/省略の使用は日常茶飯事なので、落ち着いて形式的定義を参照すればいいだけのことです。

とはいえ、形式的定義を納得する作業がいつでも簡単とは限りません。心情的違和感をなだめすかして、論理的理解の支配下におく段取り・儀式が必要な人もいるでしょう。気持ちをコントロールするノウハウが語られることはほとんどないので、感情〈心情的違和感〉に負けてしまうこともありそうです。この記事には、気持ちをコントロールするノウハウも含めています。

ホム関手のプロファイル

一般的な関手 F:\cat{C} \to \cat{D} があるとき、関手の対象パートと射パートはほとんど常にオーバーロードされます。


\quad F:|\cat{C}| \to |\cat{D}| \In {\bf SET}\\
\quad F:\mrm{Mor}(\cat{C}) \to \mrm{Mor}(\cat{D}) \In {\bf SET}

が、「自然変換の集合のエンド表示 // 関手のドットパートとアローパート」で述べた記法で(必要があれば)区別することにします。


\quad \dot{F}:|\cat{C}| \to |\cat{D}|  \In {\bf SET}\\
\quad \vec{F}:\mrm{Mor}(\cat{C}) \to \mrm{Mor}(\cat{D})  \In {\bf SET}

\cat{C} のホム関手の、関手としてのプロファイル(域と余域の仕様)は次のようです。


\quad \cat{C}^\op \times \cat{C} \to {\bf Set}  \In {\bf CAT}

正確に言えば、ホム関手は二項関手〈2-argument functor | binary functor〉あるいは双関手〈bifunctor〉です。さらに2つの引数〈argument | 変数〉の変性〈variance〉は第一引数が反変引数〈contravariant argument〉で第二引数が共変引数〈covariant argument〉です。反変引数は、反対圏〈opposite category〉上の引数と考えるのが習慣となっています。

ホム関手を一時的に H と置いて対象パート〈ドットパート〉と射パート〈アローパート〉に分けるなら:


\quad \dot{H}: |\cat{C}^\op \times \cat{C}| \to |{\bf Set}|  \In {\bf SET}\\
\quad \vec{H}: \mrm{Mor}(\cat{C}^\op \times \cat{C}) \to \mrm{Mor}({\bf Set})  \In {\bf SET}

単なる集合としての同一性は、次のように計算できます。

\quad |\cat{C}^\op \times \cat{C}| \\
 = |\cat{C}^\op| \times |\cat{C}| \\
 = |\cat{C}| \times |\cat{C}|\\
\:\\
\quad \mrm{Mor}(\cat{C}^\op \times \cat{C})\\
 = \mrm{Mor}(\cat{C}^\op) \times \mrm{Mor}(\cat{C})\\
 = \mrm{Mor}(\cat{C}) \times \mrm{Mor}(\cat{C})

 \mrm{Mor}(\cat{C}) \mrm{Mor}(\cat{C}^\op)集合としては同じです。なので、 \mrm{Mor}(\cat{C}) の要素と  \mrm{Mor}(\cat{C}^\op) の要素は通常区別しません*2。しかし、射の \mrm{dom}, \mrm{cod} を入れ替えているので、矢印の向きは逆転しています。モノの集合ではなくて、矢印(有向辺)の集合(つまり有向グラフ)として見ると違うのです*3

「同じモノだが向きだけ逆転」は、形式的には全く単純なハナシですが、心理的にはだいぶ難しい概念のようです。以下のように考えるといいかも知れません。

射の描画方向は上から下と決めます。

\quad f:A \to B \In \cat{C}\\
\Iff f \in \dot{\cat{C}}(A, B)

このような射 f は次のように描くことになります、上から下の約束なので。


\xymatrix@C-2pc {
  {A} \ar@{-}[d] & {}
\\  
 {f} \ar[d] & {\in\: \dot{\cat{C}}(A, B)}
\\
  {B} 
}

一方で、

\quad f:B \to A \In \cat{C}^\op \\
\Iff f \in \dot{\cat{C}^\op}(B, A)

を描くと次のようになります。射の向きが上から下の約束は変わっていません。


\xymatrix@C-2pc {
  {B} & {}
\\  
 {f} \ar[u] & {\in\: \dot{\cat{C}^\op}(B, A)}
\\
  {A} \ar@{-}[u]
}

射の向きはあくまで上から下です! 描いていある下から上への矢印記号 \uparrow は、もとの f の向き A \to B を念の為に描いているのであって、上から下に読めば f:B \to A です。なぜなら、この f はもはや \cat{C} の射ではなくて \cat{C}^\op の射を描いているからです。

同一人物(実体は同じ)なのだが、“向き”という肩書き(だけ)が付け替えられて、目の前に現れた、と解釈してください。もっと漫画的な比喩を使えば、逆立ちして目の前に現れたとしてください。頭の位置に足が見えてます。同一人物ですが、頭の位置に足があるので、別な生き物のごとく扱いましょう。

「実体が同じでも肩書き〈プロファイル〉が変われば違う」「同じだが違う」「違うけど同じ」という状況は、心理的には受け入れがたいかも知れませんが、これまた日常茶飯事(メチャクチャ多いこと)なので慣れてください*4

サンドイッチ結合

ホム関手の対象パート〈ドットパート〉の値はホムセットであり、ホムセットは両端〈域と余域〉を共有する射の集まり \dot{\cat{C}}(A, B) です。では、ホム関手の射パート〈アローパート〉はどうなっているのでしょう。

ホム関手の射パート〈アローパート〉の状況を一枚の絵にまとめると次のようです。


\xymatrix {
  {B} \ar@{-}[r]
  & {u} \ar[r] \ar@{|->}[dd]^{\vec{\cat{C}}(f, g)}
  & {C} \ar@{-}[d]
  & {\in\: \dot{\cat{C}}(B, C)} \ar[dd]^{\vec{\cat{C}}(f, g)}
\\  
 {f} \ar[u]
 & {}
 & {g}  \ar[d]
 & {}
\\
  {A} \ar@{-}[r] \ar@{-}[u]
  & {f;u;g} \ar[r]
  & {D}
  & {\in\: \dot{\cat{C}}(A, D)}
}

あるいは横一行で書けば:

\quad
\dot{\cat{C}}(B, C) \ni u \overset{\vec{\cat{C}}(f, g)}{\mapsto} f;u;g 
\in \dot{\cat{C}}(A, D)

ラムダ式を使って定義することもできます。

\For f:B \to A \In \cat{C}^\op\\
\For g:C \to D \In \cat{C}\\
\Define \vec{\cat{C}}(f, g) := 
\lambda\, u\in \dot{\cat{C}}(B, C).(\,
     f;u;g \;\in \dot{\cat{C}}(A, D)
\,)

無名ラムダ変数にハイフン〈マイナス記号〉を使った略式ラムダ記法なら:

\For f:B \to A \In \cat{C}^\op\\
\For g:C \to D \In \cat{C}\\
\Define \vec{\cat{C}}(f, g) := f;-;g \: : \dot{\cat{C}}(B, C) \to \dot{\cat{C}}(A, D) \In {\bf Set}

反図式順記法が好きなら:

\For f:B \to A \In \cat{C}^\op\\
\For g:C \to D \In \cat{C}\\
\Define \vec{\cat{C}}(f, g) := g\circ -\circ f \: : \dot{\cat{C}}(B, C) \to \dot{\cat{C}}(A, D) \In {\bf Set}

どう書こうとも、ホム関手の射パート〈アローパート〉\vec{\cat{C}}(-, -) に射のペアを代入した値 \vec{\cat{C}}(f, g) は、射をサンドイッチ結合〈sandwich composition〉する操作になります。

\For f:B \to A \In \cat{C}^\op\\
\For g:C \to D \In \cat{C}\\
\quad \dot{\cat{C}}(B, C) \ni u \mapsto (f;-;g)(u) = f;u;g \in \dot{\cat{C}}(A, D)

f, g によるサンドイッチ結合は、次の2つの操作の順次実行になります。

  1. f:A \to B をプレ結合する引き戻し〈pullback〉操作: 上付きアスタリスクで略記・オーバーロード
    1. f^*:\dot{\cat{C}}(B, C) \to \dot{\cat{C}}(A, C) \In {\bf Set}
    2. f^*:\dot{\cat{C}}(B, D) \to \dot{\cat{C}}(A, D) \In {\bf Set}
  2. g:C \to D をポスト結合する{前送り | 押し出し}〈push forward | pushout〉操作: 下付きアスタリスクで略記・オーバーロード
    1. g_*:\dot{\cat{C}}(A, C) \to \dot{\cat{C}}(A, D) \In {\bf Set}
    2. g_*:\dot{\cat{C}}(B, C) \to \dot{\cat{C}}(B, D) \In {\bf Set}

引き戻し操作と前送り操作は可換なので、次が成立します。

\For u \in \dot{\cat{C}}(B, C)\\
\quad (f;-;g)(u) = f^*(g_*(u)) = g_*(f^*(u)) \;\text{ on }\dot{\cat{C}}(A, D)

集合圏内の可換図式で書けば:

\For f:B \to A \In \cat{C}^\op\\
\For g:C \to D \In \cat{C}\\

\xymatrix@C+2.5pc@R+1.5pc{
  { \dot{\cat{C}}(B, C) } \ar[r]^{f^* = f;-} \ar[d]_{g_* = -;g} \ar[dr]^{f;-;g}
 & { \dot{\cat{C}}(A, C) }  \ar[d]^{g_* = -;g}
\\
 {\dot{\cat{C}}(B, D)} \ar[r]^{f^* = f;-}
 & {\dot{\cat{C}}(A, D)}
}\\
\text{commutative in }{\bf Set}

ホム関手の引数に対象と射が混じるときは、実は対象は恒等射の略記です。


\quad \vec{\cat{C}}(f, C) = \vec{\cat{C}}(f, \id_C) = f^*  : \dot{\cat{C}}(B, C) \to \dot{\cat{C}}(A, C) \In {\bf Set}\\
\quad \vec{\cat{C}}(f, D) = \vec{\cat{C}}(f, \id_D) = f^*  : \dot{\cat{C}}(B, D) \to \dot{\cat{C}}(A, D) \In {\bf Set}\\
\quad \vec{\cat{C}}(A, g) = \vec{\cat{C}}(\id_A, g) = g_*  : \dot{\cat{C}}(A, C) \to \dot{\cat{C}}(A, D) \In {\bf Set}\\
\quad \vec{\cat{C}}(B, g) = \vec{\cat{C}}(\id_B, g) = g_*  : \dot{\cat{C}}(B, C) \to \dot{\cat{C}}(B, D) \In {\bf Set}\\
\quad \vec{\cat{C}}(f, g) = f^*; g_* = g_*;f^* : \dot{\cat{C}}(B, C) \to \dot{\cat{C}}(A, D) \In {\bf Set}

\cat{C} が集合圏のときは、集合圏の特殊性*5ゆえに次の書き方(指数記法)が許されます。


\quad \vec{\bf Set}(f, C)  = C^f  : C^B \to C^A \In {\bf Set}\\
\quad \vec{\bf Set}(f, D)  = D^f  : D^B \to D^A \In {\bf Set}\\
\quad \vec{\bf Set}(A, g)  = g^A  : C^A \to D^A \In {\bf Set}\\
\quad \vec{\bf Set}(B, g)  = g^B  : C^B \to D^B \In {\bf Set}\\
\quad \vec{\bf Set}(f, g)  = g^f : C^B \to D^A \In {\bf Set}

あるいはブラケットを使って:


\quad \vec{\bf Set}(f, C) = [f, C]   : [B, C] \to [A, C] \In {\bf Set}\\
\quad \vec{\bf Set}(f, D) = [f, D]   : [B, D] \to [A, D] \In {\bf Set}\\
\quad \vec{\bf Set}(A, g) = [A, g]   : [A, C] \to [A, D] \In {\bf Set}\\
\quad \vec{\bf Set}(B, g) = [B, g]   : [B, C] \to [B, D] \In {\bf Set}\\
\quad \vec{\bf Set}(f, g) = [f, g]   : [B, C] \to [A, D] \In {\bf Set}

おわりに

ホムセット/ホム関手に関する理解と実感があやふやだと、ホム関手のカリー化である米田埋め込み/余米田埋め込み、ホム関手を典型例とするプロ関手などに進むことが困難です。感覚と感情でも納得できるように、色々な絵図やテキスト表現をいじり回してみてください。

*1:“巨大な集合圏”なんて存在するのか? -- 実在が信じられないなら、単なる約束として \In {\bf SET} という書き方をするのだ、と思ってください。

*2:稀に、ff^\op のように区別して書くこともあります。

*3:本来 \mrm{Mor}(\cat{C}) は単なる集合ですが、無意識に有向グラフとして捉えてしまって混乱している、違和感を感じているケースがあります。

*4:日常生活では、同一人物が異なる肩書きのもとで異なる行動をすることは珍しくないのに、概念的な「実体が同じでも肩書き〈プロファイル〉が変われば違う」には心理的抵抗感が発生してしまうようです。肩書きより実体(正体)を見てしまうのが我々の本能なのかも知れません。

*5:デカルト閉圏であり、内部ホム〈指数〉が外部ホム(通常のホムセット)と一致します。