跳转至

范畴、函子、自然变换

约 1962 个字 预计阅读时间 7 分钟

有一瞬间,妈妈看到了山而没有想到伐木,没有想到滑雪胜地和雪崩,被驯服的野生动物,板块构造地质学,微气候,雨影,或阴阳的位置。她看到了没有语言框架的山。没有联想的牢笼。她看到了山,但不是通过她所知的一切关于山的真实事物的透镜。她在那一瞬间看到的甚至不是一座“山”。它不是一个自然资源。它没有名字。(C. Palahniuk, Choke

帕拉尼克在本段中所描绘的“山”,抛却了一切山与外部世界的关系。当我们谈论范畴时,我们尝试探讨的东西与之恰好相反:抛弃那些东西的本来面目,只留下其间的关系和几个轮廓性的框架。限制它“是什么”的性质用以将其与其它东西区分,而它的内容则不再重要。这就是本文想要传达的基本框架。

本文大概是一切介绍范畴学之著作避不开的老生常谈,但笔者希望能使它变得更有意思一点。因此,我们首先排除掉 MacLane 为表述此花费的众多元语言笔墨,直面范畴的定义。在有必要的时候,我们将重返那些更加 meta 的话题。

定义

我们称如下一些资料为一个范畴(category)\(\mathcal C\)

  • 一族1对象(objects)\(\mathrm{Ob}(\mathcal C)\)
  • 对于 \(\mathrm{Ob}(\mathcal C)\) 中的任意元素 \(x, y\),一族态射(morphism) \(\mathrm{Hom}_{\mathcal C}(x, y)\)

我们要求以下两种映射存在:

  • 复合映射:
\[ \mathrm{Hom}_{\mathcal C}(x, y) \times \mathrm{Hom}_{\mathcal C}(y, z) \to \mathrm{Hom}_{\mathcal C}(x, z) \]

满足结合律;

  • 单位映射:
\[ \ast \to \mathrm{Hom}_{\mathcal C}(x, x) \]

满足单位性。2

称一个范畴是局部小的(locally small),如果其中所有态射的族都是集合;称一个范畴是小的(small),如果它是局部小的且其对象构成集合。

好,这就是特别简单的定义。小和局部小的概念暂且不用担心,因为在前面部分我们碰到的例子多数不会大于集合的集合,它们也暂且不会产生问题。以后我们将 \(x \in \mathrm{Ob}(\mathcal C)\) 简记作 \(x \in \mathcal C\),在不引起误解的情况下,将 \(f \in \mathrm{Hom}_{\mathcal C}(x, y)\) 简记作 \(x \stackrel f \to y\) 或者 \(f: x \to y\)。下面的练习3将表明,我们能够“单凭态射”定义出范畴来:

习题

考虑一族 \(\mathrm{Hom}\),满足以下性质:

  1. 存在 \(\alpha, \omega: \mathrm{Hom} \to \mathrm{Hom}\)
  2. 对于 \(\omega(f) = \alpha(g)\)\(f, g \in \mathrm{Hom}\),存在复合运算 \(\mathrm{Hom} \times \mathrm{Hom} \to \mathrm{Hom}: (g, f) \mapsto g \circ f\)

我们要求以下条件成立:

  1. \(\omega^2 = \alpha \omega = \omega, \alpha^2 = \omega\alpha = \alpha\)
  2. \(\alpha(g \circ f) = \alpha(f), \omega(g \circ f) = \omega(g)\)
  3. \(h \circ (g \circ f) = (h \circ g) \circ f\)
  4. \(f = \alpha(f) = \omega(f)\)\(f \circ g = g \circ f = g\)

试表明,这样的定义与原来的定义等价。

当然,正如我们已经多次暗示的,集合作为对象,函数作为态射构成一个范畴,我们记其为 \(\mathsf{Set}\)4。很显然,这是一个局部小的范畴,但不是小的。另外常见的例子还有,群范畴 \(\mathsf{Grp}\),阿贝尔群范畴 \(\mathsf{Ab}\),环范畴 \(\mathsf{Rng}\) 和交换环范畴 \(\mathsf{CRng}\),其上的态射都是对应的同态;偏序集范畴 \(\mathsf{Pos}\) 和全序集范畴 \(\mathsf{\Delta}\),其上的态射为保序映射;拓扑空间范畴 \(\mathsf{Top}\),其上的态射为连续函数。其它平凡的例子会在用到时介绍。

这里我们需要介绍一下切片范畴,留心的读者会注意到,这是一个非常眼熟的图表:

定义

考虑范畴 \(\mathcal C\)\(C \in \mathcal C\)。切片范畴(slice category,或 comma category 逗号范畴)\(\mathcal C / C\) 的对象为所有形如 \(D \to C\) 的态射,其上的态射定义为使得下图交换的态射 \(h\)

读者不妨尝试表明这是一个范畴。

在本章开始的时候,我们已经提到了一个自由构造的问题。为了描述一个自由构造,我们发现它都是将一个范畴的对象放到另一个范畴中去,这就引发了函子的概念:

定义

考虑范畴 \(\mathcal C, \mathcal D\)。函子(functor)5 \(F: \mathcal C \to \mathcal D\) 意指以下资料:

  • 对象间的映射 \(F: \mathrm{Ob}(\mathcal C) \to \mathrm{Ob}(\mathcal D)\)
  • 态射间的映射 \(F: \mathrm{Hom}_\mathcal C(x, y) \to \mathrm{Hom}_\mathcal D(Fx, Fy)\),保复合和单位映射。

我们还可以用函子的语言推广切片范畴的定义:

定义

考虑函子:\(\mathcal A \stackrel F \to \mathcal C \stackrel G \leftarrow \mathcal B\)。我们定义切片范畴 \(F / G\) 的对象为形如 \((A, B, FA \stackrel f \to GB)\) 的三元组,其上从 \((A, B, f)\)\((A', B', f')\) 的态射为使得下图交换的态射对 \((g, h)\)

习题

寻找范畴 \(\mathcal A\) 和函子 \(F, G\) 使得下面的定义能够退化为上面的定义。

习题

试描述恒同函子 \(\mathcal C \stackrel {\mathrm{id}_{\mathcal C}} \to \mathcal C \stackrel {\mathrm{id}_{\mathcal C}} \leftarrow \mathcal C\) 的切片范畴 \({\mathrm{id}_{\mathcal C}} / {\mathrm{id}_{\mathcal C}}\)的结构。(提示:它被称为 \(C\) 的箭头范畴)

注意,我们在范畴中讨论两个东西相同,只有它们在字面意义上相同。因此,没有两个态射能被视作“相同”的,除非它们“就是”一个态射。而函子给了我们一种操作余地,使得两个态射之间的关系能被言明。接下来的自然变换的目的则是言明函子之间的关系。

定义

函子 \(F, G: \mathcal C \to \mathcal D\) 之间的自然变换(natural transformation) \(\theta\) 是一族态射 \(\theta_X: FX \to GX\) 使得下图对所有 \(\mathcal C\) 中的态射 \(X \stackrel f \to Y\) 交换:

记作 \(\theta: F \to G\)

我们也将自然变换图示为:

这个结构往往也被称为 2-胞腔(2-cell)。与之对应的,函子则可以被视作 1-胞腔。对于这些术语,在讨论 2-范畴及以上的结构时会用到,在此不做解释。

自然变换的操作有纵合成和横合成,纵合成是简单的:

合成为:

横合成则将

合成为:

我们请读者证明这样一个合成的结合性作结,横纵结合都以 \(\circ\) 记,但应无混淆之虞:

习题

证明:对于以下交换图

我们有:

\[ (\varphi' \circ \theta') \circ (\varphi \circ \theta) = (\theta' \circ \theta) \circ (\varphi' \circ \varphi) \]

也就是说,横纵合成的顺序不影响结果。


  1. 这里的首要目的是安慰那些集合论学家:哈,不是集合,不要担心罗素悖论。如果你对此感到不满,核心的处理方式是引入大基数公理:对于任意基数 \(\kappa\) 都能找到一个不可达基数 \(\kappa'\) 满足 \(\kappa' > \kappa\)。所谓的不可达基数指的是所有自己及成员基数都小于 \(\kappa'\) 的集合都满足 ZFC 公理系统。通过这种方式构建层垒宇宙。参见 Markus Land 的论述。MacLane 和李文威老师的教材都是直接引入宇宙,笔者更偏好这种在 ZFC 外添加大基数公理的手段,尽管两者本质上并无不同。 

  2. \(\ast\) 指单元素集。 

  3. 来自 Gelfand 的同调代数方法第二章习题 1。 

  4. 我们以后通常用花体记某个范畴变元,以圆体记某个特定范畴。 

  5. 早些时候这玩意往往被称为协变函子(covariant functor,或共变函子),还有对应的逆变函子(contravariant functor,或反变函子)将态射反向。本文遵循近来的趋势,不再使用这类术语。