原文:7. Functors

すでに話したかもしれないが,これから話すシンプルで強力な概念を関手 (functor) と呼ぶことにする.圏論はこのような強力なアイディアの宝庫だ .所与の圏 CD があるとき,関手 F とは,圏 C の対象から圏 D の対象へのマッピング(つまり対象から対象への関数)である.圏 C の対象 a の,圏 D 上の像を Fa と(括弧なしで)書くことにする.圏は対象とそれらを結ぶ射を持つが,関手はもちろん射もマッピングする.これはつまり射の関数だ.しかも行き当たりばったりのマッピングではなく,接続の関係を保存するようなマッピングである.圏 C の射 f が,対象 a, b をつないでいるとすると,

f :: a \rightarrow b

これを関手 F でマッピングした Ff は,a の像と b の像をつなぐはずだ.

Ff :: Fa \rightarrow Fb

(この表記には数学的な記法と Haskell の記法が混ざっているが,読者はもう理解していただけるだろう.関手を対象や射に適用するのに括弧を使うのは,筆者の好みではない.)

すでにご存じのように関手は圏の構造を保存するので,一方の圏で接続されているものはもう一方の圏でも接続されていてほしい.さらには,射の合成という構造も保存されてほしい.射 f と射 g の合成を h とすれば,

h = g.f

関手 F による h の像は, fg のぞれぞれの像を合成したものと同じであってほしいのだ.

Fh = Fg.Ff

さらには,圏 C のすべての恒等射は圏 D の恒等射にマッピングされてほしい.

F\mathbf{id}_a = \mathbf{id}_{Fa}

ここで,\mathbf{id}_a は対象 a の恒等射であり,\mathbf{id}_FaFa の恒等射である.これらの要請により,関手は一般的な関数より限定的なものになっていることに注意しよう.関手は圏の構造を維持しなければならないので,もし圏というものを射のネットワークでひとまとまりにされた対象とイメージするなら,関手はそれにいかなる傷をつける[1]ことも許されない.関手は複数の対象をくっつけるかもしれないし,複数の射をくっつけるかもしれないが,対象や射を分割することは許されないのだ.この,「傷をつけてはいけない」という制約[2]は,微積分における連続性の条件と似ている.この意味で,関手は「連続」である.(関手のほうがより厳しい意味での連続かもしれない).関数と同様に,関手にも潰しや埋め込みがありうる.埋め込みは,始域の圏が終域の圏に比べてずっと小さい場合に特に面白い.極端な例として,始域がシングルトン圏,つまり一つの対象と一つの射(恒等射)からなる圏,を考えてみよう.シングルトン圏から任意の圏への関手は,単に対象を一つ選ぶだけである.これは,単集合からの射が値域の集合から要素を一つ選ぶというのと似ている.最も強く潰す関手は定関手 \Delta_c と呼ばれるものである.これは,始域の圏のすべての対象を終域の特定の対象 c にマッピングし,始域の圏のすべての射を,c の恒等射 \mathbf{id}_c にマッピングする.これはまるであらゆるものを特異点に圧縮してしまうブラックホールのようなものだ.この圏については,極限と余極限の議論をする際に,より詳しく見ていく.

(和訳:@takase

脚注
  1. 原文では introduce any tears into this fabric ↩︎

  2. 原文では no-tearing constraint ↩︎