范畴论杂谈:数学,哲学,以及数学哲学
封面: https://www. pixiv.net/artworks/9269 1125
前言:期中周把脑力消耗完之后就只能写点哲学内容,随便夹杂点数学,以假装我在介绍数学而不是瞎讲哲学。如有错误请指出。
另外,这些是范畴论的第一课所应该包含的内容。如果某一个看起来涉及范畴论的课程没有包含以下内容(包括范畴、函子和自然变换的定义,对泛性质的介绍,以及Yoneda Lemma),那么那门课程就没有涉及范畴论的实质。
我们知道一个范畴 \mathcal C 由下面两个类构成:对象类 \operatorname{Ob}(\mathcal C) 和态射类 \operatorname{Hom}(\mathcal C) ,每个态射有起点 s 和终点 t ,每个对象有恒等态射 id ,两个态射可以复合 \circ ,满足一系列公理,比如结合律、恒等态射确实是单位元之类的你应该能期望的性质。
这是什么意思呢?
回顾我们的线性代数或者抽象代数课程。就拿线性代数举例,我们先介绍了什么是线性空间,讨论了线性空间的一大堆性质,然后再介绍线性空间之间的映射(线性映射)是什么。
集合论哲学:一切都是(纯)集合,集合是天上掉下来的。我们先有两个集合,然后通过乘积集合硬造出了一个集合间的"东西",我们把它叫做映射。
嗯——这很合理,不是吗?
Eilenberg和Mac Lane不这么想。任何一本范畴论教材都不会告诉你 \operatorname{Ob}(\mathcal C) 单独有什么性质,即便它确实有某种性质。
范畴论的零号哲学:永远不要脱离范畴谈对象。 态射和对象同时存在,而不是对象比态射先存在。从你的对象们出生的那一刻起,你就应当期望她们之间有自然的、令你感到舒服的某种态射,并且我们更关注态射而不是这些对象。
(好的,我的世界观崩塌了。——读者)
然后呢?
范畴里面就只装着对象和态射。没有其他东西了。
范畴论的零号哲学:永远不要脱离范畴谈对象。 对象依托态射而存在,对象之间除了范畴内的态射,就没有任何其他态射了。也就是说,线性空间没有集合上的映射,除非你把它们当做集合考虑。拓扑空间没有集合上的映射,除非你把它们当做集合考虑。
再回顾回顾我们的线性代数或者拓扑课程,你会发现这几乎总是对的。
然后呢?
范畴里面有什么?对象,以及态射。
对象是什么?不知道。所有的对象构成一个类。别的呢?不知道。不知道就是没有。
范畴论的零号哲学:永远不要脱离范畴谈对象。 所以,世界上没有什么元素或者子集之类的概念。在抽象代数课上,我们拿出一个群里的元素,然后Eilenberg & Mac Lane开始生气地对我们吼道:你凭什么能这么做??
(完了,我的世界观彻底崩塌了。——读者)
等一下——那么,什么是群(范畴)?
它是 \mathbf{Set} 范畴里面的四元组 (G,\pi,i,e)\in \operatorname{Ob}(\mathbf{Set})\times \operatorname{Hom}(\mathbf{Set})^3 ,满足: \pi:G\times G\to G (也就是 s(\pi)=G , t(\pi)=G )代表群乘法, i:G\to G 代表逆元, e:*\to G 代表零元,以及其他你应当期望群有的性质(肉眼可见的图表均交换)。态射是 G\to H 的一个集合上映射,满足你应当期望群同态所具有的性质(肉眼可见的图表均交换)。
啥是乘法?你这乘法不还是要构造集合吗?
这可不一定。我们稍后会介绍某种名为“泛性质”的东西,这种东西很能体现某种范畴论哲学。
(嗯……我可以去睡觉吗?看不懂。——读者)
最后一个问题:我们怎么谈论“范畴”这个对象?不是说不要脱离范畴谈对象吗?
因为所有范畴——更确切地说,“小”范畴,也就是对象类是集合且态射类是集合的范畴——构成了一个范畴 \mathbf{Cat} 。
那么,什么是范畴之间的态射?范畴之间的态射叫“函子”,它把某个范畴 \mathcal C 的对象映到 \mathcal D 的对象, \mathcal C 的态射映到 \mathcal D 的态射,满足好的映射(某个对象的恒等态射 id )以及好的性质(某个态射的起点 s 和终点 t ),并且肉眼可见的图表都交换。
习题:我们在文章的一开始介绍范畴时其实有一个更“范畴论”的方式,方法是通过(先验的) \mathbf{Set} 范畴里的某些对象组合来构造范畴 \mathbf{Cat} 。你能指出是什么吗?提示:是一个六元组 (\operatorname{Ob},\operatorname{Hom},s,t,id,\circ) ,你需要说明那些映射(集合间态射)的定义域和值域。
你能尝试指出范畴 \mathbf{Cat} 的态射吗?特别提醒:我们需要肉眼可见的图表都交换。范畴 \mathbf{Cat} 的态射叫做“函子”。请尝试具体地说明什么是函子。
那范畴有什么用?
我们所能体会的第一个范畴观点带来的好处就是,我们可以很轻松的定义“同构”了。我们说两个对象 A 和 B 间存在同构,如果存在 \varphi:A\to B 使得存在 \psi:B\to A 满足 \psi\circ\varphi=id(A) , \varphi\circ\psi=id(B) 。
第二个好处就是,我们可以很轻松的定义“乘积”了。我们说两个对象 A 和 B 的乘积是某个叫做 A\times B 的对象(更明智地说, A\times B 以及两个投影映射 \pi_1 和 \pi_2 ),如果对于任意映射 f:T\to A 和 g:T\to B ,存在唯一的映射 \varphi:T\to A\times B 使得 \pi_1\circ\varphi=f , \pi_2\circ\varphi=g 。
它存在吗?不知道。唯一吗?暂时不知道。
习题:验证 \mathbf{Set} 范畴的乘积是笛卡尔积。验证 \mathbf{Grp} 范畴的乘积是群的(外)直积。验证 \mathbf{Top} ,所有拓扑空间以及连续映射构成的范畴,其中的乘积是拓扑空间的笛卡尔积,赋予显然的拓扑。
你能否将“乘积”的概念推广至无穷多个对象的“乘积”?验证 \mathbf{Top} 范畴中无穷乘积是拓扑空间的笛卡尔积,赋予积拓扑(而非箱拓扑)。验证 \mathbf{Grp} 范畴的无穷乘积是群的直积,而非直和。
如果你熟悉纤维积,你能否给出 \mathbf{Set} 范畴中“纤维积”的泛性质?提示:假如有两个映射 A\to C 和 B\to C ,一个值为 A\times B 的函数如果落在 A\times_C B 中,那么它满足什么性质?
顺带一提,上面的描述叫“乘积的泛性质”。一般来说,某个泛性质对应的对象如果存在,那么一定在同构意义下唯一。但是同构就是相同(这个不对,应该说典范同构就是相同,但目前还不需要讨论典范性),于是泛性质如果决定一个对象,那么必定唯一决定一个对象。
习题:尝试证明在任何范畴下,“某两个对象的乘积”如果存在那么必定唯一。提示:什么是“同构”?按照范畴论哲学,哪里有态射?泛性质的表述中包含存在唯一性,但是哪一个态射总是存在的?
范畴论的一号哲学:要研究一个对象,只需要知道它与其他对象的关系。 我们想要知道一个对象,只需要观察它周围的态射就够了。这就是我们为什么喜欢泛性质。
更明智地说,在范畴 \mathcal C 中,我们考虑 \operatorname{Hom}(X,A) ,也就是所有起点为 X 终点为 A 的态射,其中 A 是范畴 \mathcal C 的一个对象, X 是范畴 \mathcal C 的另一个对象。一般来说,它应当是个类。如果所有的 \operatorname{Hom}(X,A) 都是集合,那么我们把 \mathcal C 叫做“局部小”范畴。接下来我们只考虑局部小范畴。如果你愿意,也可以只考虑小范畴,或者干脆认为世界上所有的类都是集合(然后等着集合论学家帮你解决这个问题)。
现在我们变化 A ,我们就得到了一个“反变”函子(将所有的态射反向),或者说 \mathcal C^{op} 到 \mathbf{Set} 的一个态射(你应该能指出 \mathcal C^{op} 是什么:对象与 \mathcal C 相同,态射与 \mathcal C 方向相反),记为 \operatorname{Hom}(-,A) 或者 h_A 。我们把这种函子叫做“表示函子”。
习题:请用你熟悉的语言说明什么是反变函子。请验证 h_A 是一个反变函子。或者说,请说明 h_A 把 \mathcal C 中的某个态射 f:X\to Y 变成了集合范畴中的哪个态射 \operatorname{Hom}(Y,A)\to \operatorname{Hom}(X,A) ,并验证一大堆交换性。提示:考虑映射的复合。
按照范畴论的一号哲学,我们想要研究 h_A 这个对象。按照范畴论的零号哲学,我们需要把它放在一个范畴里。这个范畴是什么呢?我们把它叫“函子”范畴。
两个小范畴 \mathcal C 和 \mathcal D 间的所有函子构成了一个范畴 \mathbf{Fun}(\mathcal C,\mathcal D) ,它的态射是“自然变换”。两个函子 F 和 G 间的某个自然变换 \eta:F\Rightarrow G 是一个映射(集合间态射) \operatorname{Ob}(F)\to \operatorname{Hom}(G) ,满足 \eta(X) 这个 G 上的态射的起点是 F(X) ,终点是 G(X) ,以及你所期望的其他好性质(肉眼可见的图表均交换)。
习题:尝试让这个表述变得明智,或者说,更符合范畴论哲学。
于是我们可以讨论 \mathcal C^{op} 到 \mathbf{Set} 的所有函子构成的范畴 \mathbf{Fun}(\mathcal C^{op},\mathbf{Set}) 。这个范畴很大,但是其中有一些对象我们是已知的,比如 h_A 。遗憾的是,我们对其中的大部分对象和态射一无所知。然而,我们将要给出的是一个神奇的结论,叫做Yoneda Lemma,这个命题声称 \mathcal C 中的一个对象 A 仅由其表示函子 h_A 决定。
Theorem. (Yoneda Lemma) 存在集合上的同构 \operatorname{Hom}(h_A,F)=F(A) ,其中 \operatorname{Hom}(h_A,F) 是 \mathbf{Fun}(\mathcal C^{op},\mathbf{Set}) 范畴中,起点为 h_A ,终点为 F 的态射(自然变换)的集合。
习题:证明Yoneda Lemma。
提示: h_A(A) 这个集合中有一个特殊的元素 id(A) 。对于每个 \eta\in\operatorname{Hom}(h_A,F) ,记 \xi=\eta(A)(id(A))\in F(A) ,也就是说, \xi 是 id(A) 在 \eta(A):\operatorname{Hom}(A,A)\to F(A) 这个映射下的像。 \eta \mapsto \xi=\eta(A)(id(A)) 给出了 \operatorname{Hom}(h_A,F)\to F(A) 的一个映射。如果我们能用任意一个 \xi\in F(A) 确定 \eta ,那么我们就建立了 F(A)\to\operatorname{Hom}(h_A,F) 的一个映射。请借助图表的交换性,用 \xi 的值确定 \eta ,也就是说,对于所有 B\in \operatorname{Ob}(\mathcal C) ,确定 \eta(B) 将 \operatorname{Hom}(B,A) 中的元素 f 映到 F(B) 中的哪个元素。
第二个提示: f 既是 \operatorname{Hom}(B,A) 的一个元素,也是 \mathcal C 中的一个态射。 h_A(f):\operatorname{Hom}(A,A)\to \operatorname{Hom}(B,A) 将 id(A) 映至 f 。在自然变换的定义中,我们要求 F(f)\circ \eta(A)=\eta(B)\circ h_A(f) ,它们作用在元素 id(A) 上分别是什么?
最后一个提示:这个证明不难,但其实不算简单。如果不会证,请上网查找证明。
一个直接推论是, \operatorname{Hom}(h_A,h_B)=\operatorname{Hom}(A,B) 。 (我们似乎不应该用等号,因为我们还没有确认它的典范性。先验地来说,它是典范的。)
这代表什么呢?
范畴 \mathbf{Fun}(\mathcal C^{op},\mathbf{Set}) 有一个子范畴 \mathbf{Rep}(\mathcal C) ,其中的对象是表示函子,态射是表示函子(作为函子)的自然变换。(我们还没有定义什么是子范畴;你应当可以简单地指出什么是子范畴。)
Yoneda Lemma给出了一个 \mathcal C\to \mathbf{Rep}(\mathcal C) 的函子 h ,将某个对象 A 映至 h_A ,态射 \xi\in \operatorname{Hom}(A,B) 映至你在证明Yoneda Lemma时确定的那个 \eta\in \operatorname{Hom}(h_A,h_B) 。(验证这是个函子!函子性就是上面提到的典范性。)
同时,Yoneda Lemma告诉我们, h 是 \mathcal C 和 \mathbf{Rep}(\mathcal C) 之间的范畴等价。
这是我们对范畴论的一号哲学的又一次确认:要研究一个对象 A ,我们只要研究 h_A 就够了。 h_A 是什么?就是 A 与其他对象之间的关系(态射)。
习题:请说明函子 h 保(范畴论)乘积,也就是说, h_A\times h_B=h_{A\times B} ,这里等号左侧的乘积在 \mathbf{Fun}(\mathcal C^{op},\mathbf{Set}) 中定义。提示:两个乘积都是用泛性质定义的,因此请借助泛性质验证。另外,需要验证等号左侧的乘积存在。
两个集合自然有笛卡尔积。我们定义反变函子 F 如下: F(X)=h_A(X)\times h_B(X) , F(f)=h_A(f)\times h_B(f) 。如果乘积 A\times B 存在,请说明 F 是可表的,也就是说 F\in \mathbf{Rep}(\mathcal C)\subset \mathbf{Fun}(\mathcal C^{op},\mathbf{Set}) 。 F 是哪一个对象的表示函子?
借助Yoneda Lemma给出 \mathbf{Rep}(\mathcal C) 和 \mathcal C 间的范畴等价,尝试在回避泛性质的直接表述的前提下,通过集合的笛卡尔积定义 \mathcal C 上两个对象 A 和 B 的乘积。这个乘积什么时候存在?
附录:两个范畴什么时候相同?
你可以表述成 \mathbf{Cat} 范畴中的同构。
范畴同构是一个很精确的概念。它要求, \operatorname{Ob}(\mathcal C) 和 \operatorname{Ob}(\mathcal D) 相同(同构),且 \operatorname{Hom}(\mathcal C) 和 \operatorname{Hom}(\mathcal D) 相同。这件事情很难做到。并且,有时候我们会发现,在一个范畴中,我们经常会把同构的对象视为相同,这可能会把很大的范畴缩成很小的范畴。怎么办?
我们引入“范畴等价”这个概念。如果存在两个函子 F:\mathcal C\to \mathcal D 和 G:\mathcal D\to \mathcal C ,使得 G\circ F 和 id(\mathcal C) 作为函子 同构 (而不是完全相等;也就是说,存在可逆的自然变换 \eta:G\circ F\Rightarrow id(\mathcal C) ),并且 F\circ G 和 id(\mathcal D) 同构 (而不是完全相等),那么就说 \mathcal C 和 \mathcal D 等价。
或者我们换一种更范畴论的定义。令范畴 \mathbf{Cat'} 为这样一个范畴: \operatorname{Ob}(\mathbf{Cat'})=\operatorname{Ob}(\mathbf{Cat}) , \operatorname{Hom}(\mathbf{Cat'})=\operatorname{Hom}(\mathbf{Cat})/\sim ,其中 \sim 代表两个函子的同构关系。 \mathcal C 和 \mathcal D 等价当且仅当它们在 \mathbf{Cat'} 中同构。
习题:证明 F:\mathcal C\to \mathcal D 是一个范畴等价,当且仅当它fully faithful & essentially surjective。Fully faithful的意思是,对于任意两个 \mathcal C 中的对象 A 和 B , F 给出了 \operatorname{Hom}(A,B) 和 \operatorname{Hom}(F(A),F(B)) 的同构。Essentially surjective的意思是,对于任意 X\in \operatorname{Ob}(\mathcal D) ,存在 A\in \mathcal C 使得 F(A) 与 X 同构。提示:构造函子 G:\mathcal D\to \mathcal C 。借助essentially surjective的条件,说明 G 在对象上的构造。借助fully faithful的条件,说明 G 在态射上的构造。