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

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

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

参照用 記事

カン拡張における上下左右: 入門の前に整理すべきこと

随伴とその絵算についてかなり詳しく説明しました。

この勢いでカン拡張の説明もいけるかな、と思ったんですが、カン拡張はやっぱり難しい。難しいつうか、上下左右がさらにめんどくさい事になります。随伴の左右と、非対称積の左右、それと“反対〈opposite〉にする”という意味の双対が絡むので、上下左右がもうシッチャカメッチャカ*1

このシッチャカメッチャカを整理してみます。これは、カン拡張へと至る道路を整備する試みとも言えます。

内容:

[追記 date="2018-03-10"]C, D, Eを書き間違えていた箇所があったので修正しました。[/追記]
関連する記事:

はじめに

圏論の随伴をちゃんと抑えよう」の冒頭にて:

上下左右をきちんと区別しないと話がワヤクチャになる典型的な例に、随伴〈adjoint, adjunction〉の定義があります。
...[snip]...
上下左右に惑わされずにちゃんと納得しましょう。

カン拡張〈Kan extension〉では、さらに上下左右が複雑な状況になります。上下左右の錯綜に対処するにあたり、次の記事を参照しておきます。

カン拡張(カン持ち上げも扱う)くらいになると、「ひっくり返しトレーニング」がシリアスな話であることが納得いただけると思います。

今回の話題はカン拡張なんですが、カン拡張が何であるかはあまりハッキリとは述べません*2(いずれハッキリと説明するつもりですが)。事前に知っておくと役立つことを紹介するのがこの記事の主たる目的です。

でもとりあえず、ちょっと複雑な随伴系によりカン拡張/カン持ち上げが定義されることは述べます。この随伴系の作り方が4種類あります。それら4種のそれぞれの場合に、用語と記法/図法を決めていくことにします。

4種類の随伴系により定義される4つの概念を列挙すると:

  1. 左カン拡張
  2. 右カン拡張
  3. 左カン持ち上げ
  4. 右カン持ち上げ

カン拡張だけではなくて、双対的な概念であるカン持ち上げ〈Kan lift〉も扱います。

随伴系の復習

圏論の随伴をちゃんと抑えよう」の内容を短くまとめます。

随伴系〈adjoint system | adjunction〉はホムセット同型方式、またはニョロニョロ方式で定義されます。

  • ホムセット同型方式のとき: (C, D, F, U, Φ)が随伴系
  • ニョロニョロ方式のとき: (C, D, F, U, η, ε)が随伴系

ここで:

  1. Cは圏
  2. Dは圏
  3. Fは、DC という関手
  4. Uは、CD という関手
  5. Φは、ΦA,X:C(F(A), X)→D(A, U(X)) という同型写像の族で、C(F(-), -)⇒D(-, U(-)):Dop×CSet という自然変換
  6. ηは、D^⇒F*U:DD という自然変換(D^はDの恒等関手)
  7. εは、U*F⇒C^:CC という自然変換

それぞれの構成要素には、役割としての名称があります。

  1. (F, U)は随伴対随伴ペア | adjoint pair〉
  2. Fは左随伴〈left adjoint〉
  3. Uは右随伴〈right adjoint〉
  4. Φ(やその成分)は転置オペレータ〈transpose operator〉
  5. Φ-1(やその成分)は反転置オペレータ〈untranspose operator〉
  6. ηは単位〈unit〉
  7. εは余単位〈counit〉

随伴対であることを明示するために、F -| U :CD と書きます(CDはUの方向、Fは逆方向です)。短く F -| U とだけ書くこともあります。

随伴系の例:掛け算と指数の随伴

Fが自由ベクトル空間生成関手、Uが忘却関手(台集合/台写像・関手)のときの随伴系の例は「圏論の随伴をちゃんと抑えよう // 随伴系の書き方と事例」で述べています。今、繰り返しはしません。

ここでは、対称とは限らないモノイド閉圏における随伴系を見ておきましょう。対称の場合については、次の記事に詳しいです。

(C, \otimes, I)をモノイド圏とします*3C対象Aを選んで固定します。対象Aをモノイド積の意味で左から掛ける操作は関手になるので、それを(A\otimes-)で表します。ここで、ハイフン'-'は無名のラムダ変数です -- (A\otimes-) = λx.(A\otimesx) 。

  • (A\otimes-):CC

左からの掛け算関手(A\otimes-)に右随伴があるとして、それを(A▷-)とします。次のホムセット同型があります。

  • C(A\otimesX, Y) \stackrel{\sim}{=} C(X, A▷Y)

(A▷-)を左指数関手〈left exponentiation functor〉と呼びます。指数〈exponent〉であるAを固定しているので、“左A乗関手”とか“Aによる左ベキ関手”と呼ぶのが適切だと思うのですが、「ベキ」をベキ集合の意味で使うので不適切は承知で「指数」を使います。左指数関手と同様に、右からの掛け算関手(-\otimesA)の右随伴(-◁A)を右指数関手〈right exponentiation functor〉と呼びます。

今ここで出てきた、左指数/右指数の左右と、随伴の左右は別な話であることに注意してください。カン拡張/カン持ち上げの場合も掛け算の左右に相当する左右が出てきます。しかも、図式順/反図式順の違いで左右は入れ替わることになります(後述)。

(A\otimes-) -| (A▷-) :CC 、(-\otimesA) -| (-◁A) :CC という2つの随伴系ができました。それぞれの随伴系の転置オペレータを、左カリー化オペレータ〈left currying operator〉、右カリー化オペレータ〈right currying operator〉と呼びます。左右のカリー化オペレータは、次の形の同型写像(の族)です。

  • AX,Y:C(A\otimesX, Y)→C(X, A▷Y)
  • AX,Y:C(X\otimesA, Y)→C(X, Y◁A)

カリー化オペレータの左右も(モノイド積の意味での)掛け算の左右に起因するもので、随伴の左右とは無関係です(このケースでは、随伴は右しか考えない)。

この節の内容に関連するお絵描き(絵算)に関しては次の記事を参照してください。(当時の ^f, f^ の代わりに、最近は f, f を使っています。)

随伴系の例:述語の引き戻し、全称限量子、存在限量子

もうひとつ、論理から随伴系の例を挙げておきましょう。この節の例は、以下の3つの記事の要約です。

単一の関手(引き戻し関手)に対して、その右随伴も左随伴も存在することがこの例の注目点です -- 論理に不慣れな方は、「そういう例もあるんだなー」と眺めるだけでいいです。あるいは、飛ばして次の節に進んでもかまいません。

Bを、集合{true, false}に論理演算を入れたブール代数とします。論理演算は、∧(論理AND)、∨(論理OR)、⊃(含意)、¬(否定)とします。集合Xに対して、Pred[X] = Map(X, B) = (XからBへの写像の全体) と定義します。Bのブール演算(論理演算)を使ってPred[X]にもブール代数の構造を導入できます*4。Pred[X]もブール代数として扱いましょう。

Pred[X]は、ブール代数の構造から自然に順序構造が入ります。その順序を≦とすると、P, Q∈Pred[X] に対して、

  • P≦Q ⇔ (すべての x∈X に対して P(x)⊃Q(x) = true)

順序集合は圏(やせた圏)とみなせるので、Pred[X]を圏ともみなします。実は、∧を直積、⊃を指数とするデカルト閉圏になります。

さて、f:X→Y を集合のあいだの写像とします。すると、f*(Q) = f;Q, (f*(Q))(y) = Q(f(x)) として述語(Pred[Y]の要素)の引き戻し写像〈pullback map〉が定義できます。

  • f* = (f;-) :Pred[Y]→Pred[X]

f*は単なる写像ではなくて、Pred[Y], Pred[X]のブール構造/順序構造を保存〈preserve | respect〉します。それ故に、圏の構造も保存して、関手となります。

引き戻し関手 f*(= (f;-))の右随伴が存在するので、それを∀fと書きます。∀fは、(一般化された)全称限量子〈universal quantifier〉です。次のホムセット同型が成立します。

  • Pred[X](f*(Q), P) \stackrel{\sim}{=} Pred[Y](Q, ∀f(P))

Pred[X], Pred[Y] は、圏とはいっても順序集合なので、上のホムセット同型は順序集合のガロア接続です。ガロア接続については「順序随伴性: ガロア接続の圏論」が詳しいです。

上記のホムセット同型(随伴性)を論理っぽい記法で書けば:

   f*(Q) |-  P  on X
  -------------------[∀導入]
   Q |- ∀f(P)  on Y

引き戻し関手f*には左随伴も存在して、それは∃fと書きます。∃fは、(一般化された)存在限量子〈existential quantifier〉です。ホムセット同型と論理っぽい書き方は以下のようになります。

  • Pred[Y](∃f(P), Q) \stackrel{\sim}{=} Pred[X](P, f*(Q))
f(P) |- P  on Y
  -------------------[∃除去]
   P |- f*(Q)  on X

随伴トリオとその例

前節の例では、f*, ∀f, ∃f という3つの関手が登場し、2つずつが随伴対を形成していました。

  • f* -| ∀f :Pred[X]→Pred[Y]
  • f -| f* :Pred[Y]→Pred[X]

3つの関手が作る2組の随伴対をまとめて次のように書きます。

  • f -| f* -| ∀f

この形を随伴トリオ〈adjoint trio〉と呼ぶことにします*5。また、トリオの構成員を左から順に、左端〈left-end〉、中軸〈pivot〉、右端〈right-end〉と呼びましょう*6。次の点に注意してください。

  • 中軸は、左端に対しては右随伴である。
  • 中軸は、右端に対しては左随伴である。

前節の例以外に随伴トリオの簡単な例を挙げておきます。

nを2以上の整数*7として固定します。Setnは、集合のn-タプル(A1, ..., An)を対象として、写像のn-タプル (f1, ..., fn):(A1, ..., An)→(B1, ..., Bn) (fi:Ai→Bi)を射とする圏とします。

Δn:SetSetn を次のように定義します。

  • Δn(A) = (A, ..., A) (全部A)
  • Δn(f) = (f, ..., f) (全部f)

これは関手になります。Πn, Σn:SetnSet は次のように定義します。

  • Πn(A1, ..., An) = A1× ... ×An (n個の直積)
  • Πn(f1, ..., fn) = f1× ... ×fn (n個の直積)
  • Σn(A1, ..., An) = A1 + ... + An (n個の直和)
  • Σn(f1, ..., fn) = f1 + ... + fn (n個の直和)

ΠnとΣnSetnSet という関手になります。直積と直和の性質を使えば、次のホムセット同型があるのは分かるでしょう(下付きのnは省略しています)。

  • Setn(Δ(A), (B1, ..., Bn)) \stackrel{\sim}{=} Set(A, Π(B1, ..., Bn))
  • Set(Σ(A1, ..., An), B) \stackrel{\sim}{=} Setn((A1, ..., An), Δ(B))

これらのホムセット同型(の族)は次の形の自然変換であることも確認できます。

  • Setn(Δ(-), -)⇒Set(-, Π(-)):Setop×SetnSet
  • Set(Σ(-), -)⇒Setn(-, Δ(-)):(Setn)op×SetSet

したがって、次の2組の随伴対が得られます。

  • Δ -| Π :SetnSet
  • Σ -| Δ :SetSetn

一緒にすると、Σを左端、Δを中軸、Πを右端とする随伴トリオになります。

  • Σ -| Δ -| Π

随伴トリオの左端と右端が、随伴対になっているわけではありません。左端と右端は、中軸を介して間接的に関連しているだけです。この点は誤解しやすいので注意してください。

“圏の圏”と関手圏

これから、C, D, Eなどの圏が登場しますが、サイズの問題〈size issue〉を避けるために、これらはすべて小さい圏〈small category〉だとします。つまり、小さい圏の圏Cat内で議論することにします。実際の応用では「小さい」という仮定を外す必要がありますが、その議論はまた別途しましょう。

CDを2つの(小さい)圏として、Functor(C, D)を、圏Cから圏Dへの関手全体からなる集合とします。

  • F∈Functor(C, D) ⇔ F:CD in Cat

F, G∈Functor(C, D) のとき、Nat(F, G:CD)を、関手Fから関手Gへの自然変換の全体からなる集合とします。

  • α∈Nat(F, G:CD) ⇔ α::F⇒G:CD in Cat

圏論の随伴をちゃんと抑えよう: お絵描き完全解説」で紹介した描画法を使うと、上の2つの状況は次のように図示されます。

F∈Functor(C, D) ⇔ F:CD in Cat

α∈Nat(F, G:CD) ⇔ α::F⇒G:CD in Cat

C, D∈|Cat| に対して、関手圏〈functor category〉FunctorCat(C, D)は次のように定義される圏です。記号を簡略化するために、F = FunctorCat(C, D) (Fがイタリックである点に注意)と置きます。

  • |F| = Functor(C, D)
  • F, G∈|F| に対して、F(F, G) = Nat(F, G:CD)
  • α∈F(F, G), β∈F(G, H) に対して、α;βは自然変換の縦結合
  • F∈|F| に対して、idFは恒等自然変換(idFF(F, F))

関手圏FunctorCat(C, D)は重要な概念で、いくつかの解釈があります。

  1. 定義の仕方から、関手圏FunctorCat(C, D)は、2-圏Catのホム圏と同じものである。FunctorCat(C, D) = Cat(C, D) = HomCat(C, D) 。
  2. Catデカルト閉圏とみたときに、FunctorCat(C, D)は、直積の右随伴となる指数を与える。FunctorCat(C, D) = CD = [C, D] 。このときは、FunctorCat(C, D)∈|Cat| と考える。
  3. Catを自己豊饒化された圏(Cat-豊饒圏)とみなすとき、FunctorCat(C, D)は、内部ホム〈internal hom〉を与える。FunctorCat(C, D) = hom(C, D) 。

さまざまな側面があるということは、それだけ重要な概念であるあかしです。実際、関手圏は色々な場面で登場します。関手圏に慣れておきましょう。

CDのあいだの関手圏FunctorCat(C, D)は、CD, [C, D] のようにも書きますが、Cを右肩に乗せた指数記法DCも使います。指数記法には欠点もありますが、コンパクトに書けるので、以下では指数記法も使います。

  • DCは圏
  • F∈|DC| ⇔ F:CD in Cat
  • α∈DC(F, G) ⇔ α::F⇒G:CD in Cat

横結合積と前結合関手/後結合関手

モナドを代数的*8に定義するときに、Cの自己関手〈endofunctor〉の圏 FunctorCat(C, C) = CC を考えます。CCは単に圏であるだけでなく、関手の結合/自然変換の横結合*をモノイド積と考えたモノイド圏となります。モノイド単位は恒等関手 IdC = C^ です。厳密モノイド圏(CC, *, C^)のなかのモノイドがモナドなのでした。今述べたことについては、「自己関手の圏とモナド」(尻切れトンボな記事だけど)を参照。

上記のケースでは、関手/自然変換の結合演算*が“積”として使われています。この“積”は全然対称(可換)ではありませんが、モノイド積としての役割は果たしています。であるなら、自己関手とは限らない関手の結合も“積”=“掛け算”と考えてもよさそうです。ここから先では、関手の結合や自然変換の横結合を、ときに“積”=“掛け算”と考えることにします。

モノイド圏(C, \otimes, I)において、特定の対象 A∈|C| による左からの掛け算(A\otimes-)/右からの掛け算(-\otimesA)は、CC という関手を定義しました。同じように、特定の関手 K:CD による左からの掛け算(K*-)/右からの掛け算(-*K)が何らかの関手とならないでしょうか?

K:CD による左からの掛け算を考えるために、第三の圏Eを選んで、F:DE に対してKを左から掛ける状況を考えます。「FにKを左から掛ける」とは、FにKを前結合〈precompose〉すると言っても同じです。FにKを前結合したK*Fは、CE となります。このことから、“Kによる前結合”=“Kによる左からの掛け算”は、EDCC という関手になりそうです。実際、関手になります。

“Kによる前結合”、“Kによる左からの掛け算”、あるいは“EのK乗”をする関手は、次のように図示できます。左側がペースティング図で、右側がストリング図、同じ内容を二種の図法で描いています(絵の後に説明続く)。

まず、関手 K:CD は最初に選んで固定します。このKにより定義される前結合関手〈{precompose | precomposition} functor〉をK*と書くことが多いです。

K*は、EDEC という関手です。つまり、G, H∈|ED| に対して K*(G), K*(H) を対応させ、β:G→H in ED には K*(β):K*(G)→ K*(H) in EC を対応させます。

この状況を2-圏Catのなかで考えた図が上の図です。

  • G, H∈|ED| は、G, H:DC in Cat のこと
  • β:G→H in ED は、β::G⇒H:DC in Cat のこと

ここまでの状況設定が黒で描かれています。前結合関手K*を作用させた結果はすべて赤で描いています。

  • K*(G) = (K*-)(G) = K*G : CE in Cat
  • K*(H) = (K*-)(H) = K*H : CE in Cat
  • K*(β) = (K*-)(β) = K*β :: K*G⇒K*H:CE in Cat

関手Kと自然変換βの結合はヒゲ結合〈whiskering〉と呼ばれる演算で、次のように(図式順記法で)定義されます。

  • A.(K*β) := (A.K).β

反図式順記法では方向が逆転してデコボコします。

  • (β・K)A := βK(A)

Kによる前結合関手は、Kによる引き戻し関手〈pullback functor〉とも呼ばれます。

前結合を後結合〈postcomposition〉に変えると、Kによる後結合関手〈{postcompose | postcomposition} functor〉、前送り関手〈{pushout | push-forward} functor | 押し出し関手〉K*が定義できます。

Kによる後結合関手の図は次のようになります。

状況のセットアップが黒ですね。

  • G, H∈|CE| は、G, H:EC in Cat のこと
  • β:G→H in CE は、β::G⇒H:EC in Cat のこと

Kによる後結合関手K*を作用させた結果が赤です。

  • K*(G) = (-*K)(G) = G*K : ED in Cat
  • K*(H) = (-*K)(H) = H*K : ED in Cat
  • K*(β) = (-*K)(β) = β*K :: G*K⇒H*K:ED in Cat

さて、K*:EDEC という関手に対する次の呼び名はすべて同義語でした。

  1. 前結合関手
  2. 引き戻し関手
  3. 指数部がKの指数関手(EK
  4. 左からの掛け算関手

最後の「左からの掛け算」は、掛け算=結合演算を図式順に書いたときのことで、反図式順なら「右からの掛け算」となります。左右の別が記法・図法に影響されてしまい、好ましくない用語です。しかしそれを言うなら、式・図に起因した「上下左右」を使う用語はすべて好ましくないわけで、我々は図式順記法を前提に「左からの掛け算」「右からの掛け算」を使うことにします。

前結合/後結合関手の随伴としてのカン拡張/持ち上げ関手

前節の議論により、関手 K:CD を固定して、第三の圏Eを選んだとき、Kによる前結合関手〈引き戻し関手〉K*と、Kによる後結合関手〈前送り関手〉K*が定義できることが分かりました。

  • K*:EDEC in Cat
  • K*:CEDE in Cat

K*もK*も関手なので、左右の随伴について云々できます。実は、冒頭に挙げた4つの概念「1. 左カン拡張、2. 右カン拡張、3. 左カン持ち上げ、4. 右カン持ち上げ」は、K*またはK*の随伴として定義できます。

  1. Kに沿った左カン拡張関手〈left Kan extension functor along K〉とは、Kによる前結合関手K*の左随伴関手である。
  2. Kに沿った右カン拡張関手〈right Kan extension functor along K〉とは、Kによる前結合関手K*の右随伴関手である。
  3. Kに沿った左カン持ち上げ関手〈left Kan lift functor along K〉*9とは、Kによる後結合関手K*の左随伴関手である。
  4. Kに沿った右カン持ち上げ関手〈right Kan lift functor along K〉とは、Kによる後結合関手K*の右随伴関手である。

これらの定義は甚〈はなは〉だ天下りで実感が湧きにくいものです。なので、通常は別な形の定義から始めます。しかしながら、この定義は、前結合/後結合と随伴系を知っていれば、とてもコンサイスな定義で、4つの概念の相互関係も明白です。

今回この記事では、実感や実例までは踏み込まないで、冒頭で述べた次のことをやっていきます。

  • 上下左右のシッチャカメッチャカを整理する。
  • 事前に知っておくと役立つことを紹介する。
  • 用語と記法/図法を決めていく。

まずは、カン拡張/持ち上げの標準的な記法を紹介します。カン持ち上げは言及されることが少ないので標準的と呼べる記法もないですが、https://ncatlab.org/nlab/show/Kan+lift の記法を“標準的”とします。

  1. Kに沿った左カン拡張関手は、LanKと書く。
  2. Kに沿った右カン拡張関手は、RanKと書く。
  3. Kに沿った左カン持ち上げ関手は、LiftKと書く。
  4. Kに沿った右カン持ち上げ関手は、RiftKと書く。
拡張 LanK RanK
持ち上げ LiftK RiftK

カンは人名(Daniel Kan)です。LanKとRanKは、Kanの'K'をleftの'L'とrightの'R'に置き換えたダジャレな記法です。liftはもともとが'L'だったので右だけ'R'に置き換えてLiftKとRiftKとしたのでしょう。

なんで「拡張」「持ち上げ」なんだ? というのも気になるかも知れません。幾何学の(ホモトピー的)拡張/持ち上げと似てはいますが、語源や語感を云々するのは程々にして、「カ・ク・チョ・ウ」「モ・チ・ア・ゲ」と発音する単なる符丁(目印、隠語)だと割り切ったほうがいいと思います。国語辞書的な「拡張」「持ち上げ」とはほど遠い感じですから。

今紹介した記号を使って、随伴系のホムセット同型を書いておきます。

  1. ED(LanK(F), G) \stackrel{\sim}{=} EC(F, K*(G))
  2. EC(K*(G), F) \stackrel{\sim}{=} ED(G, RanK(F))
  3. CE(LiftK(F), G) \stackrel{\sim}{=} DE(F, K*(G))
  4. DE(K*(G), F) \stackrel{\sim}{=} CE(G, RiftK(F))

これらの随伴系は、2つの随伴トリオにまとめることができます。

  • LanK -| K* -| RanK
  • LiftK -| K* -| RiftK

中軸に前結合関手と後結合関手があり、左右のカン拡張/カン持ち上げ関手が左端と右端となっています。

ラムダ計算と類似の記法・図法

今から5年程前(2013年)に、「右カン拡張の解釈や計算は、ある種のラムダ計算と思えるのではないか」と気付きました。通常のラムダ計算はデカルト閉圏の随伴系に基いており、カン拡張も随伴系から定義される(前節)ので、まー当たり前ですけどね。デカルト閉圏は、1次元の圏+直積・指数です。一方、右カン拡張の舞台であるCatは2次元の圏なので、「右カン拡張の解釈や計算」は次元が上がったラムダ計算となります。

右カン拡張の記法・図法を、ラムダ計算に寄せていってみましょう。前結合関手K*は左からの掛け算の形にして、右随伴である右カン拡張は左指数の形で書きます。

  • EC(K*G, F) \stackrel{\sim}{=} ED(G, KF)

左からの掛け算/左指数の「左」と右随伴の「右」は別な話で、図式順記法を採用しているから前結合が左からの掛け算となっているだけです。ちなみに、左カン拡張なら次のようになります。

  1. ED(KF, G) \stackrel{\sim}{=} EC(F, K*G)

随伴は左になっていますが、掛け算は左から(つまり前結合)のままです。

左からの掛け算関手を K*(-)、その右随伴である右カン拡張を K(-) と短く書くことは、記述や計算の上でけっこうなメリットがあります。ラムダ計算とのアナロジーを辿ったり、絵との対応をとることが格段に楽になります。

そんなわけで、4種の随伴から得られるカン拡張/持ち上げ(の値)と、随伴の転置オペレータに関して、ラムダ計算と類似の記法・図法を使ってみます。右カン拡張について説明すれば:

  • RanK(F) の代わりに左肩の指数記法 KF を使う。
  • 随伴の転置オペレータとして (-) を使う。α∈EC(K*G, F) に対して、(α)∈ED(G, KF) 。

左カン拡張、左右のカン持ち上げについても同様な記法・図法を使います。まとめて絵に描けば次のようです(絵の後に説明続く)。

図のなかの黒い部分は前もって固定する部分です。すなわち、C, D, E, K, Fは事前に決めます。ただし、Fのプロファイルはカン拡張とカン持ち上げで違ってます(F:CE と F:ED)から注意してください。図のなかの赤い部分は色々と変化させる部分です(詳しくは後述)。

KとFに対して、そのカン拡張/カン持ち上げの値(像)が決まります。また、随伴の転置オペレータによるαの値(像)も決まります。それらを次のように書きます。

カン拡張/カン持ち上げの値 転置オペレータによる値
左カン拡張(左上) LanK(F) = KF α :: KF⇒G
右カン拡張(右上) RanK(F) = KF α :: G⇒KF
左カン持ち上げ(左下) LiftK(F) = FK α :: FK⇒G
右カン持ち上げ(右下) RiftK(F) = FK α :: G⇒FK

カン拡張/カン持ち上げの値の記法の原則は:

  • カン拡張は指数
  • カン持ち上げは指数
  • 左随伴は指数
  • 右随伴は指数
 左   右 
拡張 KF KF
持ち上げ FK FK

上下左右すべての配置を使って区別しています。

転置オペレータは、図からの連想で記法を決めています。絵図との対応は明白ですが、描画方向が↓→(第一方向が上から下、第二方向が左から右)の絵図を前提にしています。他の描画方向なら、別な記法にすべきでしょう。

最良な拡張、最良な持ち上げとしてのカン拡張/カン持ち上げ

カンは人名ですが、カン拡張/カン持ち上げの文脈では形容詞として解釈できます。形容詞「カン」は、「最良の」「普遍的な」という意味です。

  1. 左カン拡張は、左拡張のなかで最良のもの
  2. 右カン拡張は、右拡張のなかで最良のもの
  3. 左カン持ち上げは、左持ち上げのなかで最良のもの
  4. 右カン持ち上げは、右持ち上げのなかで最良のもの

「最良の」「普遍的な」とは何ぞや? については棚上げにします(今日は触れません)が、形容詞「カン=最良の」が意味を持つのは、「最良とは言えないその他大勢のもの達」がいるからです。「カン」とは限らない左拡張/右拡張/左持ち上げ/右持ち上げについて触れておきます。

先に述べたように、国語辞書的な意味での「拡張」「持ち上げ」のイメージは捨てたほうがいいです。語感に拘るのは不毛なことが多いですから。拡張/持ち上げの集合を定義するには、圏C, D, Eと関手 K:CD を固定します。さらに、関手Fも決めます -- 拡張のときは F:CE 、持ち上げのときは F:ED

このような枠を決めた上で、関手Gと自然変換αの組(G, α)が(カンとは限らない)拡張/持ち上げであることは、次の図で示されます。


  1. (左上) (G, α)は、Fの左拡張である ⇔ α::F⇒K*G:CE in Cat
  2. (右上) (G, α)は、Fの右拡張である ⇔ α::K*G⇒F:CE in Cat
  3. (左下) (G, α)は、Fの左持ち上げである ⇔ α::F⇒G*K:ED in Cat
  4. (右下) (G, α)は、Fの左持ち上げである ⇔ α::G*K⇒F:ED in Cat

関手Kも明示したいときは、「Kに沿った」を挟んでください(例:FのKに沿った左拡張/Kに沿ったFの左拡張)。

「左と右」「拡張と持ち上げ」の図における特徴は:

  • 左と右: 上にFだと左、下にFだと右
  • 拡張と持ち上げ: 左にKだと拡張、右にKだと持ち上げ

これも天下りなので、簡単な左拡張 α::F⇒K*G:CE in Cat を具体的に記述してみましょう。

左拡張であることをペースティング図とストリング図で表したものが上段の左右です。黒い部分は前もって固定するところです。赤の(G, α)は色々と動かして考えます。動かした範囲での最良〈ザ・ベスト〉が「カンな左拡張=左カン拡張」です。

具体例として、C = {・, ・}、D = {・} とします。Cは2個の対象と恒等射だけからなる離散圏、Dはただひとつの対象からなる離散圏です。対象に名前(ラベル)がないと名指しできないので、C = {1, 2}、D = {0} としておきす。K:CD は一意に決まってしまいます(Kの選択の余地はない)。F:CE も固定するとして、F(1) = A, F(2) = B とします。

G:DE は、G(0)∈|E| で決まります。G(0) = X とすれば、G:DE と X∈|E| は1:1対応します。K*GはGだけで決まるので、K*G:CE と X∈|E| も1:1対応します。F:CE から K*G:CE への自然変換は、α1:A→X in E と α2:B→X in E で決まります。

結局、左拡張(G, α)とは、E内の3つの対象A, B, Xと2つの射 α1:A→X, α2:B→X の組み合わせです。A, Bは固定して、“最良”の (α1:A→X, α2:B→X) を選ぶと左カン拡張となります。この場合は、「X = A + B(直和)、α1は直和の第一入射、α2は直和の第二入射」が左カン拡張=最良の左拡張となります。実は、直和〈余直積 | デカルト和 | 余デカルト積〉という概念は、左カン拡張の特殊ケースなのです。

カン持ち上げはつまらない?

マックレーンは、"All Concepts are Kan Extensions"と言っています。圏論の全ての概念(ちょっと大げさかも)はカン拡張から導き出せる、というわけです。それに対して、双対であるカン持ち上げはあまり聞いたことがないかも知れません。

2009年の次の記事でカン持ち上げに言及しています。

とは言っても、デイビッド・コーフィールド(David Corfield)の発言に対して、シュライバーやバエズがふざけたこと言っているよー、という記事です。「カン持ち上げ」ってクレーン(下の写真)じゃね、とか重量挙げジイサンじゃね、とか。

実際、カン持ち上げは存在しても自明だったりして、面白い例を探しにくいのです。「左カン拡張←→右カン拡張」という双対性は対称性が高いのですが、「カン拡張←→カン持ち上げ」という双対性は対称性が乏しく、まったく違った概念に見えます。そして、重要度と興味深さに雲泥の差があるようです*10。なんでこんな不平等が生まれるのか分かりません。

おわりに

冒頭でお断りしたように、この記事では納得感のあるカン拡張の定義をしていません(天下りでした)。その意味でカン拡張入門にはなっていません。しかし、入門の前に知っておいたほうがいいことや、入門した後で使えそうな道具達を紹介したつもりです。また、入門したけど錯綜した概念構成に頭がこんがらかってしまったときの整理にも役立つと思います。

カン拡張が、圏論の“全て”の概念の源泉だとまでは言い切れませんが、圏論の多くの概念を導き出せる強力な装置だとは言えます。カン拡張の適用場面はまだまだあると思います。新しい解釈や応用が見つかったら楽しそう、Try it out.

本文中で参照しなかった関連記事(雑多):

*1:[追記]もちろん、整理すればシッチャカメッチャカなんてことはありません。断片的な情報を脈絡なく収集すると、シッチャカメッチャカな印象を受けるであろう、ということです。[/追記]

*2:カン拡張の定義が何種類かあります。そのことは、nLabエントリー https://ncatlab.org/nlab/show/Kan+extension を見てください。ここで扱うカン拡張は大域的なカン拡張です。

*3:結合律子α、左単位律子λ、右単位律子ρは省略しました。

*4:Pred[X] = (Xのベキ集合) と定義して、部分集合のブール演算を考えてもいいです。

*5:これといって呼び名がないようですが、随伴列〈adjoint string〉と呼んでいる例を見たことがあります。

*6:圏論では、エンド〈end〉という概念があります。そのエンドに、無闇と使われる形容詞left/rightを付けた用語left-end/right-endはヤバイかも。オーバーロードしないでフレッシュな言葉を選ぶのは最早至難のわざ。

*7:実際は、n = 0, 1 でも同じ議論が通用します。

*8:「代数的に」は、代数系として、あるいは等式的に、という意味です。

*9:カン持ち上げの場合は、「Kに沿った〈along〉」ではなくて「Kを通した〈through〉」と区別することもあるようですが、面倒なので「沿った」で統一。

*10:カン持ち上げにも価値・応用が隠されている可能性を否定はできませんけど。