Chapter 36

12.4 連続性

さのたけと
さのたけと
2021.05.23に更新

以前に,関手は圏の連続写像の概念に近いということを述べ,それはすでにある接続(射)を決して破壊しないという意味であった.圏\mathbf{C}から\mathbf{C}'への 連続関手(continuous functor) Fの実際の定義は,その関手が極限を保つという要請を含んでいる.\mathbf{C}の全ての図式Dは,単に2つの関手を合成することによって\mathbf{C}'の図式F\circ Dに写される.Fについての連続性条件は,もし図式Dが極限\mathrm{Lim}[D]を持つなら図式F\circ Dも極限を持ち,それはF (\mathrm{Lim}[D])に等しいということを言っている.

関手は射を射に,合成を合成に写すので,錐の像は常に錐であることに注意しよう.可換な三角形は常に可換な三角形に写される(関手は合成を保つのだ).同じことが射の分解についても真である: 分解射の像はまた分解射である.なので,すべての関手は ほとんど 連続である.おかしくなるかもしれないのは唯一性条件である.\mathbf{C}'の分解射は唯一ではないかもしれない.また,\mathbf{C}'\mathbf{C}にはなかった他の「より良い錐」があるかもしれない.

Hom関手は連続関手の一例である.Hom関手\mathbf{C}(a, b)は1つ目の変数について反変で,2つ目の変数について共変であることを思い出そう.言い換えると,これは関手

\mathbf{C}^{op} \times \mathbf{C} \to \mathrm{Set}

である.

2つ目の引数が固定されると,この(表現可能前層となる)Hom集合関手は\mathbf{C}の余極限を\mathbf{Set}の極限に写す.そして1つ目の引数が固定されると,これは極限を極限に写す.

Haskellでは,Hom関手は2つの型を関数型に写す写像であり,したがってパラメタ付けられた関数型である.2つ目の引数(Stringということにしよう)を固定すると,反変関手

newtype ToString a = ToString (a -> String)
instance Contravariant ToString where
    contramap f (ToString g) = ToString (g . f)

が得られる.

連続性はToStringが余極限(例えば余積Either b c)に適用されると,極限が生成されるということを意味する.この場合は,2つの関数型の積

ToString (Either b c) ~ (b -> String, c -> String)

である.実際,Either b cを定義域とするどんな関数も,関数のペアで提供される2つの場合分けを使って,case式によって実装される[1]

同様に,Hom集合の1つ目の引数を固定するとお馴染Reader関手が得られる.この連続性は積を返す関数は関数の積に等しいということを意味している.具体的には:

r -> (a, b) ~ (r -> a, r -> b)

私にはあなたが何を考えているかわかる: これらのことを見出すのに圏論はいらないだろうと言うんだろう.そしてあなたは正しい!しかしそれでも,ビットやバイト,プロセッサ構成,コンパイラ技術やラムダ計算といったものに助けを求めることなく,最初の原理だけからこれらの結果が導出できるということは,私は驚くべきことだと思う.

もし「極限」や「連続性」といった名前がどこから来たかに興味があるなら,それらは微積分学の対応する概念の一般化になっているということを言っておこう.微積分学では,極限や連続性は開近傍の言葉で定義される.開集合(これは位相を定義する)は(posetの)圏を成すのである.

(和訳:@ashiato45

脚注
  1. 訳注: 元の文はcase statementでしたが,Haskellにあるのはcase expressionだけなのでcase式と訳しています. ↩︎