九章格数学 PhiloMath · K2C 正文 · C 段(大学低年级)· 正文

范畴论引论 · 从箭头到思想:结构先于个体

〇体例说明

体例

本书怎么读:一门关于「关系先于个体」的学问

本书讲一门学问:范畴论——它研究的不是任何一类具体的数学对象,而是「对象与对象之间如何相处」。一定见过这样的场景:线性代数讲「积」,群论讲「直积」,拓扑讲「乘积空间」,集合论讲「笛卡儿积」——名字里都有「积」,构造却各写一遍。范畴论的回答干脆利落:这些「积」是同一个东西的不同读法——都用「一对投影的万有性」来定义,一次定义,处处生效。它带来一串朴素而深刻的问题:为什么「商群」「商空间」「商集」也是同一个构造?为什么「自由群」「自由模」「自由么半群」的构造法完全平行?为什么两个数学对象「一样」竟有不同的严格含义(同构与等价)?为什么说一个对象「是什么」不如说它「与别的东西如何相处」?从 Eilenberg 与 Mac Lane 1945 年的奠基论文〈范畴、函子与自然变换〉,到 Yoneda 引理与伴随函子定理,再到单子理论、拓扑斯与高阶范畴,范畴论八十年只做一件事:把「由关系定义对象」变成一门精确的学问。

本书按章组织:绪论从「每门课都在重复什么」讲起,说清范畴论关心什么、箭头的眼光从何而来;第一章立稳语言的骨架——范畴的定义、例子巡礼、同构与等价、单态射与满态射、始终对象与对偶原理;第二章让范畴之间架起桥——函子、自然变换、自然同构、切片范畴、可表函子与 Yoneda 引理;第三章登第一座主峰——泛性质与极限,积、余积、等化子、拉回、核与余核、指数对象统一为一个句法;第四章请出全册的心脏——伴随函子,自由与遗忘的辩证、单位与余单位、三角等式与伴随函子定理;第五章进入结构的自我生成——幺半范畴、单子、Eilenberg–Moore 与 Kleisli 范畴、伴随单子定理;第六章望向思想的地平线——逻辑即范畴、Curry–Howard 对应、拓扑斯、Lambek 演算与结构主义哲学;综合站用年表、人物谱、方法决策树、两个综合实验与二十四题自查收束全书。

写作的三条约束(本书的自我要求)。① 直觉与例子先行:每一个概念都从一张图、一个具体的小例子讲起——先看见 Set 中两个集合的积怎样「被投影唯一刻划」、自由群怎样「把字母排队再加约简」、列表单子怎样「把副作用装进盒子」,再抽成定义。② 一步一图:凡能画的都画——范畴的箭头图、泛性质的投标图、伴随的三角桥、单子的平方与代数、Lambek 演算的箭头推导。范畴论最迷人的地方,正藏在「同一个定义在不同范畴里长出不同面孔」这条线索里。③ 自给自足:所需工具在书内随用随补——集合与映射、群与环的最基本常识、线性代数的对偶观念、一点拓扑与偏序集,都在需要它的那一页现学现用,不假设手边另有教材。个别深刻的整体性结论(伴随函子定理、伴随单子定理、拓扑斯的公理化、高阶范畴的存在性)给出精确陈述、证明思路与文献指引,数值与程序对拍在实验页随附。

页型节奏。每章以 导引 开篇(一页说清这一章要解决什么);主体是 讲义 页(概念、定理、证明,一步一图);每章配 例题 与 习题 各两页(先示范再放手)、知识地图 一页(本章概念怎么连成网)、小结 两页(正面清单+易错清单)、思想卡(一句话立起本章的哲学)、挑战(一道通向文献的硬题)、实验(一段可复算的程序)、格物札记(中国算学传统里的平行直觉)、速查表(本章公式与记号一页备翻);章末另设 衔接讲义,把下一章的问题提前立起来。所有编号 可跳读:每一页都自带上下文,随手翻开一页也能读下去。

一全册目录(绪论+六章+综合站)

目 录
范畴论引论 · 从箭头到思想:结构先于个体 · 全书正文页码一览
从「每门课都在重复什么」说起2
范畴论是什么:关于数学的数学3
百年路线图:从 Eilenberg–Mac Lane 到今天4
结构的思想:忘掉元素,只看箭头5
预备工具箱:集合、映射、关系与序6
中国源流:从《墨经》的「类」到珠算的复合7
本册的分工:六章与三重启发8
全书路线图9
第一章导引:把数学拍成一张航拍图10
1.1范畴的定义:对象、态射与两条公理11
1.2例子巡礼(上):Set、Grp、Top、Vec12
1.3例子巡礼(下):偏序集是「薄范畴」13
1.4对偶原理:把箭头翻转的世界14
1.5同构与等价:什么时候两个范畴「一样」15
1.6单态射与满态射:箭头语言里的单射满射16
1.7始对象与终对象:空与全17
1.8群与幺半群:单对象范畴18
1.9Hom 集合:把态射收进集合19
1.10交换图:证明的图形语言20
1.11追图法:从交换图读出等式21
1.12等价三件套:忠实、满、本质满22
1.13骨架化:等价类的标准形23
1.14对偶定理:证明一遍得到两个24
1.15小范畴的枚举:看见范畴自身25
1.16常见误读与澄清26
例题精讲(2 页)p.27–28
习题课(2 页)p.29–30
第一章知识地图31
第一章小结(上):定义与例子32
第一章小结(下):等价与对偶33
思想卡:对象是它的关系之总和34
挑战:范畴公理的独立性35
实验:小范畴的枚举与计算36
〖札记〗《九章》的「术」即态射37
第一章速查表38
衔接讲义:通往函子——让范畴之间架起桥39
第二章导引:让范畴之间有了桥40
2.1函子:范畴之间的映射41
2.2函子的例子:幂集、自由与遗忘42
2.3反变函子与对偶函子43
2.4函子的复合与 Cat:范畴的范畴44
2.5自然变换:函子之间的箭头45
2.6自然同构:「本质上唯一」46
2.7函子范畴与箭头图47
2.8切片范畴:在对象之上工作48
2.9可表函子:对象如何「被问到」49
2.10Yoneda 引理:关系即本质50
2.11Yoneda 嵌入:范畴住进函子世界51
例题精讲(2 页)p.52–53
习题课(2 页)p.54–55
第二章知识地图56
第二章小结(上):函子的演算57
第二章小结(下):自然性与 Yoneda58
思想卡:自然性是「不看元素」的承诺59
挑战:Yoneda 的推论串烧60
实验:函子作用的程序枚举61
〖札记〗珠算口诀与函子复合62
第二章速查表63
衔接讲义:通往泛性质——用箭头定义对象64
第三章导引:积为什么不由元素定义65
3.1泛性质总纲:用箭头「投标」66
3.2积:一对投影的万有性67
3.3余积:翻过来就是加法68
3.4Set 中的积与不交并69
3.5等化子与余等化子70
3.6拉回与推出71
3.7核与余核:代数的拉回72
3.8极限与余极限:锥形图73
3.9极限的存在性:Set 的完备性74
3.10指数对象与 Currying75
3.11Cartesian 闭范畴:逻辑的骨架76
3.12泛性质的存在与唯一:up to iso77
3.13图形范畴:极限的计算法78
3.14连通极限与有限极限79
3.15数系构造中的泛性质80
3.16常见误读与澄清81
例题精讲(2 页)p.82–83
习题课(2 页)p.84–85
第三章知识地图86
第三章小结(上):万有句法87
第三章小结(下):极限的演算88
思想卡:存在由万有保证89
挑战:极限函子的可表性90
实验:锥图极限的实例计算91
〖札记〗刘徽的「率」:关系先于数值92
第三章速查表93
衔接讲义:通往伴随——自由与遗忘的辩证94
第四章导引:自由群「自由」在哪里95
4.1伴随的动机:自由–遗忘对96
4.2伴随函子:Hom 集合的同构97
4.3单位与余单位98
4.4伴随例子(一):自由构造99
4.5伴随例子(二):Galois 连接100
4.6伴随保持极限:右伴随的连续性101
4.7伴随的唯一性:由一半定另一半102
4.8三角等式:伴随的心跳103
4.9伴随与可表:Hom 的两面104
4.10点式伴随与指数对象重逢105
4.11忘却函子的层级与逐级自由106
4.12线性代数重逢:对偶空间的伴随107
4.13Frobenius 伴随:左右通吃108
4.14伴随函子定理:存在的判据109
4.15伴随常见误读与澄清110
4.16伴随的演算速成:三招走天下111
例题精讲(2 页)p.112–113
习题课(2 页)p.114–115
第四章知识地图116
第四章小结(上):伴随的三个等价定义117
第四章小结(下):例子与判据118
思想卡:自由与遗忘互为镜像119
挑战:RAPL 的代数应用120
实验:自由幺半群的枚举对拍121
〖札记〗筹算与「借」:伴随的古老直觉122
第四章速查表123
衔接讲义:通往单子——结构如何自我生成124
第五章导引:结构如何自我生成125
5.1幺半范畴:张量积的世界126
5.2幺半群对象:在范畴里当群127
5.3单子:来自伴随的结构128
5.4单子的例子:列表、Maybe 与闭包129
5.5Eilenberg–Moore 范畴:单子的代数130
5.6Kleisli 范畴:单子的另一种展开131
5.7比较定理:Kleisli 与 EM 的两端132
5.8余单子:对偶的一面133
5.9幺半范畴的例子:Vec 的张量与链复形134
5.10对称幺半结构与交换性135
5.11幺半闭范畴与内部 Hom136
5.12伴随单子定理:单子的分类137
5.13泛代数一瞥:运算与单子138
5.14单子与计算:程序语言的视角139
5.15双代数与卷积:幺半群对象重逢140
5.16常见误读与澄清141
例题精讲(2 页)p.142–143
习题课(2 页)p.144–145
第五章知识地图146
第五章小结(上):单子的一族三式147
第五章小结(下):幺半范畴的演算148
思想卡:来自伴随的结构149
挑战:单子与余单子的对偶150
实验:列表单子的程序实验151
〖札记〗珠算口诀与 Kleisli 复合152
第五章速查表153
衔接讲义:通往逻辑与语言——范畴照进思想154
第六章导引:一门数学如何照进思想155
6.1逻辑即范畴:Cartesian 闭范畴中的命题156
6.2Curry–Howard 对应:命题即类型,证明即程序157
6.3直觉主义与拓扑斯:排中律的边界158
6.4拓扑斯初步:真理的对象化159
6.5语言学(一):Lambek 演算——句法即范畴160
6.6语言学(二):组合语义——意义即函子161
6.7语言学(三):DisCoCat 一瞥——文法与计算162
6.8认识论(一):结构主义——数学对象是什么163
6.9认识论(二):Yoneda 的认识论——认识即知关系164
6.10认识论(三):不变性与客观性165
6.11哲学(一):范畴论与数学基础:ETCS166
6.12哲学(二):柏拉图主义、形式主义与结构实在论167
6.13哲学(三):同一性与「up to iso」的世界观168
6.14三重启发总览:逻辑·语言·认识169
6.15范畴论与现代计算:类型论与量子语言170
6.16走向高阶范畴:∞-世界一瞥171
例题精讲(2 页)p.172–173
习题课(2 页)p.174–175
三重启发总览图176
第六章小结(上):逻辑与语言177
第六章小结(下):认识与哲学178
思想卡:结构先于个体179
挑战:ETCS 与 ZFC 对读180
实验:微型类型检查器181
〖札记〗墨辩三物:故、理、类182
第六章速查表183
衔接讲义:通往综合站——收束全景184
全景的收束185
全书概念依赖总图186
〖札记〗大事年表:1942 到 2026187
〖札记〗人物谱十四位188
方法决策树189
定理地图与疆界190
综合实验(一):伴随的数值对拍191
综合实验(二):Lambek 句法分析器192
终极挑战:三重启发的接力193
习题课(1 页)194
评讲:四类错因195
余韵(一):逻辑·语言·计算三条战线196
余韵(二):走向高阶范畴与 HoTT197
符号总表与终极速查198
绪论

箭头的眼光:为什么需要范畴论

微积分讲极限,线性代数讲基与维数,抽象代数讲同态与商,拓扑讲连续与同胚——每门课都在定义自己的「构造」与「相同」,却很少说破它们彼此的平行。范畴论的起点正是这个观察:把「对象与映射」本身当作数学对象,就能给全数学一副共同语汇。本册绪论先带看清「每门课都在重复什么」,再给范畴论一个精确的自我描述——关于数学的数学;随后沿百年路线图回望从 Eilenberg–Mac Lane(1945)到今天的高阶范畴,领会「忘掉元素、只看箭头」的结构思想;最后备齐集合、映射、关系与序的工具箱,并从《墨经》的「类」与珠算的「复合」里认出这条眼光的古老源头。读完绪论,将着一张全书路线图进入正文:先用两章立起范畴与函子的语言,再以泛性质、伴随与单子三步登堂,最后望向逻辑、语言与思想的地平线。
页型节奏:导引 → 讲义(概念 · 定理 · 证明 · 一步一图)→ 例题 → 习题 → 地图 · 小结 · 思想卡 · 挑战 · 实验
2导引

绪论 箭头的眼光:为什么需要范畴论从「每门课都在重复什么」说起

假设已修过几门数学课:微积分、线性代数、抽象代数、一点拓扑。回过头看,可以撞见一个奇怪的事实——每门课的开头几乎都在讲同一件事。集合论说:集合之间有映射,映射可以复合;抽象代数说:群之间有同态,同态可以复合;拓扑学说:空间之间有连续映射,也可以复合;就连线性代数,讲的也是线性空间之间的线性映射及其复合。

同一个句式重复了四遍、五遍、十遍。数学家对这种重复有一种职业敏感:凡是反复出现的模式,背后必有一个统一的结构。1942–1945 年,Eilenberg 与 Mac Lane 把这个结构正式写了出来:把每门课里的「对象」(集合、群、空间)与「箭头」(映射、同态、连续映射)一起收进同一个定义,命名为——范畴。

四门课,四个句式 集合论:集合 + 映射 群论:群 + 同态 拓扑:空间 + 连续映射 线性代数:空间 + 线性映射 句式相同,只是换了名词 抽象 一个定义:范畴 A B C D 箭头可复合 对象 + 箭头 + 复合 + 单位元
图 绪-1 范畴论的诞生动机:四门课重复着同一个句式「对象 + 保持结构的箭头」。把它一次写成定义,数学从此有了一门「关于数学的数学」。

读法建议:本书按「章」推进——第一、二章搭起范畴与函子的公理骨架,第三章练成泛性质与极限的方法,第四、五章抵达伴随与单子的高地,第六章全章讨论范畴论给认识论、语言学与哲学的三重启发。若时间有限,读绪论、第一、二章的定义与 Yoneda、第六章全章即可把握主脉。

3讲义

绪论 箭头的眼光:为什么需要范畴论范畴论是什么:关于数学的数学

一句话直觉。范畴论是「关于数学的数学」:它不研究某一种具体的数学对象,而研究所有数学分支共同使用的结构模式——对象、箭头、复合。就像语法书不写小说,却说明了一切小说为什么会通顺。

范畴论(category theory)。以范畴为基本研究对象,以函子比较不同的范畴,以自然变换比较不同的函子。它的方法论信条是:一个数学对象重要与否,取决于它与其他对象的关系;一个定义优雅与否,取决于它是否只用箭头说出。

这门学问在数学里的位置,可以拿两样东西打比方。第一样是化学的周期表:门捷列夫不研究某一种化合物的具体性质,他排出了所有元素的位置,于是新元素还没被发现,表格里已为它留好了格子。范畴论对「结构」做的事与此相同——极限、伴随、单子这些概念一旦定义,会在群论、拓扑、逻辑、计算机科学里反复撞见它们,仿佛早已预约。

第二样是元语言:语言学家用一套语言去描述另一套语言,逻辑学家用元逻辑去证明某条公理系统的相容性。范畴论是数学的元语言——它的词汇(对象、态射、泛性质)足够抽象,因此足以谈论任何数学分支;又足够严格,因此谈论的每一句都可证明。1945 年 Eilenberg 与 Mac Lane 的奠基论文里,这个「元」的野心已经写在标题中:General Theory of Natural Equivalences(自然等价的一般理论)。

需要立刻打一剂预防针:范畴论的名声之一是「抽象」。但抽象在这里不是逃避具体,而是对具体的极致尊重——正因为把所有无关细节(元素是什么、集合多大、空间几维)统统扔掉,那些真正跨分支存活下来的性质才第一次显形。这与 Euler 处理七桥问题的方式一脉相承:扔掉桥的长短宽窄,只留「谁连谁」;范畴论扔得更彻底——连「对象内部有什么」都扔掉,只留箭头。

一册之约:本册将遵守一条纪律——凡能只用箭头说的定义,绝不偷用元素。这不是苦行,而是范畴论全部力量的来源。

4讲义

绪论 箭头的眼光:为什么需要范畴论百年路线图:从 Eilenberg–Mac Lane 到今天

范畴论的历史不足百年,却完成了从「代数拓扑的工具」到「数学的公共基础设施」再到「照见思想的镜子」三级跳。路线如下。

1942–45 Eilenberg–Mac Lane:范畴与自然变换 为代数拓扑统一语言,「范畴」首次登台 1957–58 Grothendieck:Abelian 范畴;Kan:伴随函子 同调代数获得公理框架,泛性质成为方法论 1963–71 Lawvere–Tierney:拓扑斯与范畴论基础 逻辑进入范畴,挑战集合论基础的正统 1958–1970s Lambek 句法演算;Montague 语义学 范畴走进语言学:句法即箭头,意义即函子 1989–2006 Moggi–Wadler:单子与程序语言 Haskell 的 Functor/Monad 让范畴论跑在机器里 2006 至今 同伦类型论 HoTT 与 ∞-范畴 证明助手与高阶结构:明日的基础之争
图 绪-2 范畴论八十年:起点是代数拓扑的语言统一,中段是 Grothendieck 学派的公理化与 Lawvere 的基础纲领,晚近则全面进入逻辑、语言学与计算。

第一阶段:工具时代(1942–1957)。范畴诞生时身份卑微——Eilenberg 与 Mac Lane 只想给代数拓扑的「自然同构」一个严格定义,为此不得不先定义函子,又不得不先定义范畴。他们谨慎地预言这些概念「不应被过度使用」,历史很快开了玩笑:这三层概念成了二十世纪下半叶数学的主干语言。

第二阶段:公理时代(1957–1971)。Grothendieck 用 Abelian 范畴重写同调代数(相邻领域的主题正是从这里展开),Kan 发现伴随函子,Lawvere 提出用范畴公理替代集合论公理(ETCS,见第六章),Tierney 与之合作完成拓扑斯理论——逻辑学的「真值」本身可以被范畴化。

第三阶段:跨界时代(1958 至今)。Lambek 1958 年的句法演算把句子结构写成箭头的复合,Montague 把语义做成模型论,2010 年起 Coecke 等人的 DisCoCat 把二者合流并接上量子计算;Moggi 与 Wadler 把单子引入程序语言,今天 Haskell 程序员每天都在使用范畴论。第六章将逐一检视这些「数学之外的战果」。

5讲义

绪论 箭头的眼光:为什么需要范畴论结构的思想:忘掉元素,只看箭头

传统数学如何看待一个集合?把它打开:看里面装了哪些元素。范畴论提议换一种眼光:不打开,只看它与世界之间的箭头。这个转变小得像一个动作,大得像一次世界观革命。

先看一个例子。两个集合什么时候「一样」?传统答案:存在元素之间的双射。范畴论的答案:可以完全不用元素——两个集合同构,当且仅当「从任何集合射向它们的箭头总是一样多」。换句话说,同构这件事可以只凭箭头判定。这不是换汤不换药:在群、拓扑空间这些范畴里,「元素」往往不好用(拓扑空间的点太多了、群的元素带有运算约束),而箭头永远好用。

元素视角:打开看 对象 = 一袋元素;性质来自内部 换眼 箭头视角:闭上看 A 对象 = 关系之网的结点;性质来自箭头
图 绪-3 两种眼光。元素视角问「它里面有什么」;箭头视角问「它与其他一切有什么关系」。范畴论证明:在恰当的框架下,后者完全决定前者——这是 Yoneda 引理(第一、二章)的预告。

结构主义(structuralism)的原则。数学对象没有「内在的 identity」,它是它在结构中所处的位置、与其它对象发生的关系的总和。同一结构中的两个「复本」(同构的对象)不必区分——这句话在范畴论中有精确的表述与证明(第一、二章「同构与等价」一节)。

哲学家会立刻认出这句话的家族相似:莱布尼茨说「没有两个完全不可区分的事物」(同一不可区分原则),结构主义者说「可区分者皆结构」。范畴论的独特贡献是:它把这句哲学口号变成了可证明的定理。这种「哲学直觉 → 数学定理」的转化将在第六章反复出现,也是本书点题的方向——范畴论对认识论、语言学与哲学的三重启发,源头都在这一页的「换眼」动作里。

一个测试:以后每遇到一个新定义,先问「它用了元素吗?」——若答案为是,试着只用箭头重写它。本册第三章将把这个游戏玩到极致(泛性质)。

6讲义

绪论 箭头的眼光:为什么需要范畴论预备工具箱:集合、映射、关系与序

范畴论的门槛不高,但需要四样工具趁手。本页集中检点,后文随取随用。

其一,集合与映射。记号从简:f: A → B 表示从 A 到 B 的映射,idA 表示恒等映射,复合写作 g ∘ f(先 f 后 g)。复合满足结合律 h ∘ (g ∘ f) = (h ∘ g) ∘ f——这条律,它即将升格为「范畴的公理」。

其二,映射的三种品格。单射(不撞车)、满射(全覆盖)、双射(一一对应)。双射即集合的同构。范畴论的第一个惊喜:单、满这两种品格也完全可以用「箭头的可 cancellation 性」重新刻画(第一、二章「单态射与满态射」一节),从而推广到没有元素的范畴。

其三,关系与等价。集合 A 上的二元关系 ~ 若自反、对称、传递,则称等价关系;等价类可以拼成商集 A/~。等价关系是「同一性」的数学化身——「在什么意义上两样东西算一样」,是贯穿本书的哲学暗线(第六章「同一性与 up to iso」专门回收)。

其四,序。自反、反对称、传递的二元关系称偏序;任意两元素可比的偏序称全序。偏序集(如数的整除关系、集合的包含关系)将为范畴论贡献最极简的例子——「薄范畴」:每个 Hom 集至多一个箭头,命题的真假推理本身就是一张箭头图。

工具要义在本书中的角色
映射与复合g ∘ f 可结合,id 为单位范畴定义的两条公理的原型
单射·满射·双射品格可用「消去律」刻画单态射、满态射、同构(第一、二章)
等价关系与商把「视为相同」形式化同构 / 等价 / 局部化的原型
偏序与全序每对箭头至多一条的范畴薄范畴、Galois 连接(第四、五章)

若以上任何一项已生疏,不影响主线阅读——本书每用到一处工具,都会在原地给足说明。

7讲义

绪论 箭头的眼光:为什么需要范畴论中国源流:从《墨经》的「类」到珠算的复合

范畴论的正式诞生在 1945 年的纽约,但它关怀的两个问题——如何按结构分类、如何由复合生新——在中国思想传统里有极早、极深的回响。

「类」:《墨经》的分类学。战国《墨经》提出「故、理、类」三物:「以故生,以理长,以类行」——论证凭理由展开,推理循条理延伸,而贯穿三者的钥匙是「类」:同类方可相推,异类须察其界。《墨经》又言「同异交得」:同与异在比较中生义,不在孤立中显形。这与范畴论的立场惊人地一致——对象在同类的网络中获得意义;也与我们第 5 页的结构主义遥相呼应:先有类(结构),后有物(个体)。

「术」:算法即箭头的复合。《九章算术》的每道「术」都是从已知量到未知量的一条程序:今有粟三斛,欲为粝饭,以「粟米术」化之;再求酒,又以一术继之——上一术的输出恰是下一术的输入,术与术可以串联复合。这正是范畴论眼里态射的复合:箭头必须首尾相接,复合满足结合律。刘徽注《九章》,更是把「率」作为贯穿诸术的枢纽——关系(率)先行,数值随后(第三章札记专述)。

《墨经》:以类行 类:同异交得 物以类聚,理以类通 推类:由故而理 结构之网先于孤物 同构 范畴:态射复合 对象:结构之位 态射:保持结构 复合:术与术串联 关系之箭先于元素
图 绪-4 左右互译:《墨经》之「类」对应范畴之「对象与结构」,诸术串联对应态射复合。中国传统的算法眼光(术)与分类眼光(类),恰是箭头思维的两个源头。

珠算:口诀即复合的口诀化。程大位《算法统宗》的归除口诀「二一添作五,逢二进成十」——每句口诀是一个原子操作,连续念诵口诀,就是把原子操作依序复合。第一、二章札记将把这一观察精确化:《九章》之术即态射,珠算口诀链即复合律的民间形式。中国数学「重术」的传统常被误读为「轻理」;以范畴之眼重看,术正是箭头,术之链正是结构。

8讲义

绪论 箭头的眼光:为什么需要范畴论本册的分工:六章与三重启发

本册是 K2C 正文 C 段的一册,与姊妹诸册的分工如下。会认得其中三个概念的雏形(模范畴、函子与正合性);没读过的也完全无碍——本册自足,所有需要的背景都在绪论与第一、二章内备齐。

第一、二章「范畴与函子」:公理骨架。范畴定义、四大例子巡礼(Set、Grp、Top、Vec 加偏序集)、对偶原理、单态射与满态射、函子三层级(函子 / 自然变换 / 函子范畴),以 Yoneda 引理压轴——它是「关系即本质」的定理形式,全书第一根支柱。

第三章「泛性质与极限」:方法论。把「只用箭头下定义」练成体系:始与终、积与余积、等化子、拉回与推出,收拢为极限与余极限;指数对象与 Cartesian 闭范畴为第六章的逻辑篇埋线。方法论承诺:凡万有者必本质上唯一。

第四、五章「伴随与单子」:理论高地。伴随是范畴论最重要的单一定理——自由与遗忘的辩证、Galois 连接、右伴随保持极限;幺半范畴与张量积;单子把「结构来自复合」落成列表、Maybe、闭包等可执行的程序构造。

第六章「范畴、语言与思想」:本册的特色章,全章回答一个超越数学的问题——范畴论给人类思想带来了什么?分三线推进。语言学:Lambek 演算把句法做成范畴、组合语义把意义做成函子、DisCoCat 把文法接上计算;认识论:结构主义如何回答「数学对象是什么」、Yoneda 如何把「认识即知关系」变成定理、不变性如何重塑「客观性」;哲学:ETCS 与集合论基础之争、三大流派(柏拉图主义、形式主义、结构实在论)在范畴论视野下的重排、「up to iso」的世界观。

三重启发不是附录,而是正文的一半灵魂:前五章蓄水,第六章发电。绪论各页已为它们预留了伏笔——读到时「第六章回收」的标记。

9地图

绪论 箭头的眼光:为什么需要范畴论全书路线图

全书 198 页的地形如下:一条明线(从箭头到思想)贯穿六章,一条暗线(结构先于个体)由绪论埋下、第六章收束;两根定理支柱(Yoneda、伴随)分别在第一、二章与第四、五章铸成;综合站收拢全景。

绪论 箭头的眼光 第一、二章 范畴与函子 第三章 泛性质与极限 Yoneda:关系即本质 第四、五章 伴随与单子 极限与泛性质 伴随:自由–遗忘 第六章 范畴、语言与思想:三重启发 语言学(Lambek·组合语义)× 认识论(结构主义·Yoneda)× 哲学(ETCS·up to iso) 综合站 全景与余韵
图 绪-5 全书路线图:明线「从箭头到思想」自左向右推进;暗线「结构先于个体」自绪论直落第六章。第六章的三个色块对应语言学、认识论、哲学三条启发线。

阅读的三条推荐路径:主线(全书顺序读,约一学期);思想线(绪论 → 第一、二章 Yoneda → 第六章全章,适合哲学与语言学背景的,数学细节可缓);计算线(绪论 → 第一、二章函子层 → 第四、五章单子 → 综合实验二,适合计算机背景的)。三条线殊途同归于同一句结语:结构先于个体。

第一章

范畴:对象与箭头

本章把范畴的定义一次立稳,再用例子把它泡软。前半是「正餐」:范畴的两条公理(态射可结合、有单位态射)看似平淡,却足以承载全数学;Set、Grp、Top、Vec 四大例子之外,偏序集是「薄范畴」——任两个对象之间至多一支箭头,命题与证明的世界就此入册。中半把箭头语言磨亮:单态射与满态射是「单射满射」的箭头化——不再看元素,只看「箭头被箭头消去」;始对象与终对象是「空与全」的两极;群与幺半群竟是「单对象范畴」——一个范畴里住着一个代数结构。后半学会读与写交换图:图追法让等式变成看得见的路径,等价三件套(忠实、满、本质满)给「两个范畴一样」立第二重严格含义,骨架化把等价类收成标准形。对偶原理是本章的免费午餐:每个定理翻转箭头,就对偶定理免费到手。章末用小范畴的枚举实验让「看见」范畴自身——范畴不多,但每一个都有性格。
页型节奏:导引 → 讲义(概念 · 定理 · 证明 · 一步一图)→ 例题 → 习题 → 地图 · 小结 · 思想卡 · 挑战 · 实验
10导引

第一章 范畴:对象与箭头第一章导引:把数学拍成一张航拍图

站在地面看一座城市,看到的是一条条街道、一栋栋房子;坐上飞机俯瞰,看到的是街区之间的连接——环路如何串起新区,地铁线如何穿过老城。城市没有变,眼光变了,结构就显形了。

本章为全部数学拍这样一张航拍图。地面上,见过集合、群、拓扑空间、向量空间——每个分支有自己的对象、自己的映射、自己的公理;升到空中,它们都是同一样东西:一批对象,对象之间的一些箭头,箭头可以首尾相接。这个统一视角就叫范畴;而把一张地图叠到另一张地图上的对照关系,叫函子;函子之间的对照,叫自然变换——三层结构层层相套,构成本章的主楼梯。

代数岛 群 · 环 · 模 几何岛 拓扑 · 流形 分析岛 度量 · 积分 逻辑岛 命题 · 证明 函子=航线上的一座桥 范畴=岛与航线本身;本章的任务:把群岛画成一张图
图 1-1 数学群岛的航拍图。每个分支是一座岛,函子是岛与岛之间的金色航线;范畴论不取代任何一门数学,它画出的是所有岛屿共同的地理。

本章路线:先立范畴的公理(两页定义、四页例子巡礼),再升第一层——函子;再升第二层——自然变换;然后两件利器登场:可表函子与Yoneda 引理(本章压轴,也是全书的支点)。章末各页照例:例题、习题、地图、小结、思想卡、挑战、实验、札记、速查。

11讲义

第一章 范畴:对象与箭头1.1 范畴的定义:对象、态射与两条公理

一句话直觉。一个范畴就是一张有向箭头图,规则只有两条:箭头能接着走(复合),每处原地有不动箭头(单位元)。

范畴(category)。一个范畴 C 由以下数据组成:

① 一个对象类 Ob(C);② 对每对对象 A, B,一个态射集 Hom(A,B)(元素画成箭头 f: A → B);③ 复合运算 ∘:f: A → B 与 g: B → C 给出 g ∘ f: A → C;④ 每个对象 A 有单位态射 idA: A → A。它们须满足两条公理:

(结合律)h ∘ (g ∘ f) = (h ∘ g) ∘ f;(单位律)idB ∘ f = f = f ∘ idA。

注意定义里没有任何关于「元素」的话:对象可以不是集合,态射可以不是映射;要求的只是「箭头可接、接法规矩」。这种刻意的贫乏,正是它后来富有的原因——凡是满足两条公理的结构,范畴论的全部定理对它自动生效。

Hom 集是「数据」而非「记号」。Hom(A,B) 被要求是一个集合——这称范畴为局部小的。本册默认所论范畴均局部小;它保证「数一数箭头」这类操作合法(第 49 页可表函子正靠这一点)。
复合的次序。g ∘ f 读作「先 f 后 g」。代数书也用右到左;本册全按此约定,画交换图时尤其要盯紧次序。
单位元唯一。若 e: A → A 也满足单位律,则 e = e ∘ idA = idA——两行证明,用到自己也是单位。唯一性后面有大用(第 17 页)。
A B C g ∘ f f g 两条路,同一箭头: g ∘ f = 先 f 后 g 交换三角形:复合的「接龙」纪律
图 1-2 范畴的最小单元——交换三角形。范畴论的图不画「元素怎么流动」,只画「箭头怎么接」;图中两条路线代表同一个态射,这样的图称交换图,本册的母语。

两条公理早已见过千百次:映射的复合满足它们,同态的复合满足它们,矩阵乘法也满足它们——这不是巧合,而是「它们都是某个范畴里的箭头」的第一声回响。

12讲义

第一章 范畴:对象与箭头1.2 例子巡礼(上):Set、Grp、Top、Vec

定义的价值要靠例子兑现。四大「实体范畴」登场——它们对象不同、箭头不同,但公理一字不差。

范畴对象态射复合与单位
Set集合映射通常复合;恒等映射
Grp群群同态映射复合;恒同同态
Top拓扑空间连续映射映射复合;恒同(连续)
Vec线性空间线性映射映射复合;恒等线性映射

逐行过一遍公理的「验票口」:Set——映射复合结合律是第 6 页的旧知识;Grp——两个同态的复合仍保结构(φ(ab) = φ(a)φ(b) 与 ψ 的同类等式串起来即可),结合律继承自集合层面;Top——连续映射的复合连续(ε–δ 或开集原像的旧题);Vec——线性映射的复合线性。四个范畴,「对象 + 保结构箭头」句式完全同构(绪论第 2 页的预告在此兑现)。

值得停下来想一秒的是 Top:连续映射的复合连续,这条在分析课里用了一学期的事实,在这里的角色只是验票——保证 Top 配得上「范畴」这个名字。范畴论把每门课的入场手续变成统一的仪式。

Set 箭头=映射 公理:复合两律 Grp ·× 箭头=同态 保乘法结构 Top 箭头=连续映射 保邻近结构 Vec v 箭头=线性映射 保加法与数乘 四个范畴:对象各异,公理同一
图 1-3 四大实体范畴。范畴论不问「对象里装了什么」,只问「箭头保的是什么结构、复合是否守规矩」——于是四扇门合用同一把钥匙。

以后每遇一个新结构,先问两句:它的对象是什么?它的箭头是什么?——答案落进范畴定义的那一刻,全书积累的定理即刻为所用。

13讲义

第一章 范畴:对象与箭头1.3 例子巡礼(下):偏序集是「薄范畴」

实体范畴之外,还有两个「瘦削」的例子——它们把范畴定义的弹性发挥到极致。

偏序集是范畴。设 (P, ≤) 为偏序集。造范畴 P 如下:对象=P 的元素;Hom(x,y) 在 x ≤ y 时取单点集 {∗},否则取空集。复合由「x ≤ y ≤ z ⟹ x ≤ z」(传递性)给出,单位元由自反性给出。两条公理自动成立——因为每对对象之间至多一条箭头,「怎么复合」没有第二种选择。

这样的范畴称薄范畴(thin category)。在薄范畴里,范畴论的命题全部退化为序论的命题:同构=元素相等(x ≤ y 且 y ≤ x,即反对称);「始对象」将是序论的最小元,「终对象」是最大元(第 17 页兑现);第四、五章的 Galois 连接,正是两个偏序集之间的一对特殊函子。序论曾经学过的每句话,都会在范畴论里找到它的「原型」。

幺半群是单对象范畴。设 (M, ·, e) 为幺半群(有单位元的半群)。造范畴 M:只有一个对象 ∗;Hom(∗,∗) = M——每个元素 m ∈ M 就是一条 ∗ 到自身的箭头;复合=幺半群乘法,单位元=e。结合律即幺半群结合律,一条不差。

反之,任何单对象范畴恰是一个幺半群。「范畴」同时推广了「偏序集」与「幺半群」:前者是每对对象至多一条箭头(序结构),后者是只有一个对象(代数结构)——两个看似无关的本科概念,原来是同一张蓝图的两块剪影。

偏序集:薄范畴 d(顶) b c a(底) ≤ = 至多一条箭头 幺半群:单对象范畴 ∗ 箭头=元素,复合=乘法
图 1-4 两个瘦削而深刻的例子:偏序集每对对象至多一条箭头(序结构),幺半群只有一个对象(代数结构)。范畴=两者的共同推广。

把「同一种公理、不同贫富」排成谱系:幺半群(1 个对象)— 群范畴(对象多、箭头丰富)— 偏序集(箭头至多一条)— 离散范畴(只有单位箭头)。范畴论的定理在整条谱系上同时成立,这正是「抽象的力量」的兑现处。

14讲义

第一章 范畴:对象与箭头1.4 对偶原理:把箭头翻转的世界

范畴论有一种别处罕见的「买一送一」:每证明一个定理,免费获赠另一个定理。这份赠品的名字叫对偶原理。

反范畴(opposite category)。对范畴 C,其反范畴 Cop 定义为:对象与 C 相同;态射 fop: B → A 对应 C 中的 f: A → B——箭头全体调头;复合相应翻转:fop ∘ gop = (g ∘ f)op。

验证两条公理:结合律——hop ∘ (gop ∘ fop) = hop ∘ (f ∘ g)op = ((f ∘ g) ∘ h)op = (f ∘ (g ∘ h))op = (g ∘ h)op ∘ fop,与 C 中的结合律是同一句话的正反读法;单位律平凡。两次翻转复原:(Cop)op = C。

对偶原理。设 P 是一条只由「对象、态射、复合、单位」表述的命题。若 P 对一切范畴成立,则把 P 中所有箭头调头(即把 C 换成 Cop)所得的对偶命题 Pop 也对一切范畴成立。∎

证明只需一行:对一切范畴成立的命题,当然对一切 Cop 成立;而 Cop 中的 P 读出来恰是 C 中的 Pop。便宜归便宜,后果深远——比如「单态射」与「满态射」(第 16 页)、「始对象」与「终对象」(第 17 页)、「积」与「余积」(第三章)都是彼此的对偶:证明了一个,另一个不用再证。

C (原方向) A B f f: A → B op Cop​ (全部调头) A B fop​ fop​: B → A
图 1-5 反范畴:对象不变,箭头全体调头,复合随之倒序。两次翻转复原——于是每个定义都自带一个镜像定义,每条定理都自带一条免费定理。

使用对偶原理有一门小手艺:并非所有命题都有漂亮的镜像(「一切范畴有单位元」的对偶是它自己)。判别法:命题里出现「从……出发」之类的方向词,翻转后往往换一个概念的名字。本册对偶概念将成对出现,留意每对定义的「免费」标记。

15讲义

第一章 范畴:对象与箭头1.5 同构与等价:什么时候两个范畴「一样」

「一样」有两档强度,先看弱的一档——对象层面的同构。

同构(态射层面)。f: A → B 称为同构,若存在 g: B → A 使 g ∘ f = idA 且 f ∘ g = idB。记作 A ≅ B。逆若存在必唯一:若 g, g' 都是逆,则 g = g ∘ id = g ∘ f ∘ g' = id ∘ g' = g'——只用结合律与单位律,这是范畴论式证明的第一次亮相。

在四大实体范畴里,同构就是老朋友:Set 中的双射、Grp 中的群同构、Top 中的同胚、Vec 中的线性同构——「保结构 + 可逆」在箭头语言里的统一表达。

再升一档,看范畴之间的「一样」。这需要函子(第 41 页),此处先给结论以供回望:

范畴的等价。函子 F: C → D 是范畴等价,若它(i)全忠实:每对 A,B,映射 Hom(A,B) → Hom(FA,FB) 是双射;(ii)本质满:每个 D-对象都同构于某个 FA。等价允许「漏掉同构的复本」——它数的是结构类,不是对象。

一个立竿见影的例子:设 vFd 为有限维线性空间范畴。任取维数 n,一切 n 维空间彼此同构;于是 vFd 在等价意义下的「清单」就是自然数集 0, 1, 2, …——这份去重后的清单称为骨架。vFd 与它的骨架范畴等价,却不同构(对象个数都对不上)。范畴论关心等价远胜于同构,这是它与集合论气质最深的分歧之一,也是第六章「up to iso」世界观的数学根。

一句话记忆:同构问「逐个对象能否配对」,等价问「结构类是否穷尽」。序论里已经用过等价的眼光——「偏序集的同构型」数的就是骨架,不是标记。

16讲义

第一章 范畴:对象与箭头1.6 单态射与满态射:箭头语言里的单射满射

「单射」「满射」是元素语言的孩子;范畴论用消去律给它们换了箭头语言的父母。

单态射(monomorphism)。m: A → B 称为单态射,若对一切 g,h: X → A:m ∘ g = m ∘ h ⟹ g = h(可左消去)。

满态射(epimorphism)。e: A → B 称为满态射,若对一切 g,h: B → X:g ∘ e = h ∘ e ⟹ g = h(可右消去)。

两条定义互为对偶(第 14 页:把箭头调头、mono 换 epi,定义原样成立)——免费定理的机制第一次实战。验票:在 Set 中,设 m 非单射,取 a ≠ a' 同像,令 g,h: X → A 分别把某点送到 a, a'(其余点同值),则 m∘g = m∘h 而 g ≠ h,故单射 ⟹ 单态射;反过来的方向也容易(考察两点域 {0,1})。于是 Set 中单态射=单射、满态射=满射;Grp、Vec 同法验票通过。旧概念在箭头语言里顺利落地。

但箭头语言马上给出一个元素语言给不出的警告:在含幺交换环范畴 CRing 中,自然含入 ℤ → ℚ 是满态射却远非满射——两个环同态若在 ℤ 上相等,因它们必保 1,进而在所有整数上相等;而整数相等则分数四则(同态保逆)逼它们在 ℚ 上也相等。右消去成立,像却薄得很。教训:「满态射」不必「像覆盖全部」;在哪些范畴里两者重合,是需要逐个验票的定理,不是天经地义。

单态射:左消去 X g h A m∘g = m∘h ⟹ g = h op 满态射:右消去 X A B e g∘e = h∘e ⟹ g = h
图 1-6 mono 与 epi:把「单射/满射」翻译成左/右消去律。二者互为对偶;且 mono∘mono=mono、epi∘epi=epi(习题课(一)验证)。

同构 ⟺ 既是单态射又是满态射吗?在 Set 成立;但在一般范畴这是需要条件的——「平衡范畴」的概念将在习题课(二)讨论。箭头语言处处在追问:哪些性质属于「结构」,哪些只是「元素的恩惠」。

17讲义

第一章 范畴:对象与箭头1.7 始对象与终对象:空与全

范畴论的第一个「泛性质」定义不需要函子,现在就能读——它也是最短的一个。

始对象(initial object)。对象 I 称为始对象,若对每个对象 A,Hom(I,A) 恰有一个元素。

终对象(terminal object)。对象 T 称为终对象,若对每个对象 A,Hom(A,T) 恰有一个元素。

二者互为对偶(把 Hom 的箭头调头)。各自的速记:始=「出发的箭头唯一」,终=「抵达的箭头唯一」。巡礼验票:

范畴始对象终对象
Set空集 ∅(到任何集合的唯一空映射)任一单点集 {∗}
Grp平凡群 {e}平凡群 {e}
CRing整数环 ℤ(保幺同态由像 1 定)零环 {0 = 1}
偏序集(作范畴)最小元(若有)最大元(若有)

注意 Set 行:始对象到 ∅ 自身有一条箭头(id),恰一条——「空映射」的存在是约定,而范畴语言把这条约定变成了公理的推论。再看 CRing 行:始对象是 ℤ,因为保幺环同态从 ℤ 出发别无选择(1 ↦ 1 逼出全部整数);这个「无选择」将在第 49 页升格为一句漂亮的话——ℤ 表示「取底集」这个函子。

命题(本质唯一)。两个始对象 I, I' 之间必存在唯一同构 I ≅ I'。

证。唯一箭头 f: I → I' 与唯一箭头 g: I' → I 存在;复合 g∘f: I → I 是 Hom(I,I) 的元素,而该集合恰含 idI,故 g∘f = idI;同法 f∘g = idI'。∎

证明只用了「恰有一个」四个字——这就是泛性质的方法论:**不指定对象是谁,只规定它与世界的关系,唯一性自动到账**。第三章的积、余积、极限,全是这台发动机的放大版。

对偶速查:始的对偶是终。「空与全」这对意象在 Set 里最直观——空集什么都给不出(所以从它出发的箭头只能唯一),单点集什么都装不下(所以抵达它的箭头只能唯一)。

18讲义

第一章 范畴:对象与箭头1.8 群与幺半群:单对象范畴

一句话直觉。群论研究「元素相乘」,范畴论研究「箭头复合」——把一个群的所有元素看成同一支箭头的复本,乘法就成了复合。这不是比喻,而是精确的数学同构。

定理(群=单对象群胚)。一个群 G 恰等价于一个范畴 BG:BG 只有一个对象 •,其态射集 Hom(•, •) 取为 G 的元素,复合取群乘法,单位态射取单位元 e。每支箭头 g 都有逆箭头 g-1(群公理),这样的范畴称群胚(groupoid);只要求结合律与单位律而不要求逆元,得的是幺半群对应的范畴。

表示论的入口。群在集合上的作用 = 函子 BG → Set;群在向量空间上的表示 = 函子 BG → Vec。第五章的幺半范畴将把「表示」再升一级。一条定义,三处开花。
基本群就是群胚。拓扑空间的基本群 π1(X, x) 只看基于点;把全部点与道路一起收进来,得到的是基本群胚 Π1(X)——对象是点、态射是道路的伦类。「以全体对象为对象」的版本更自然,这也是范畴论眼光的一次小胜。
为什么要绕这一圈。把群看成范畴后,「群的子对象、商、直积」都自动获得范畴论定义的读法,而这些读法立刻推广到群根本没有的场合(如偏序集、拓扑空间)。语言的统一,就是力量的复用。
图 1-7 单对象范畴:群住在里面 • g h 一个对象,箭头全是自己到自己 箭头集 = 群(或幺半群)的元素 群公理 范畴公理 乘法结合律 复合结合律 单位元 e 单位态射 id 逆元 g⁻¹ (额外要求)可逆 群的元素 自同态 Hom(•,•) 把「元素相乘」读成「箭头复合」——群就是单对象范畴
图 1-7 一个只装一个对象的范畴:全部态射都是这个对象的自同态,复合即「乘法」,单位态射即「单位元」。幺半群=这样的范畴;再要求每支箭头可逆,就得到群。代数结构原来是范畴的特殊面貌。
19讲义

第一章 范畴:对象与箭头1.9 Hom 集合:把态射收进集合

一句话直觉。范畴的公理只谈「箭头可接、接法规矩」,而「箭头全体」本身也要住在一个集合里——这就是 Hom 集合。把态射收进集合,「数箭头」「比较箭头集的大小」这类操作从此合法。

定义(Hom 集与局部小)。范畴 C 称局部小,若每对对象 A, B 的态射全体 HomC(A, B) 构成一个(真)集合。本册默认所论范畴皆局部小。记 End(A) = Hom(A, A)(自同态集),它自带复合乘法与单位元,是一个幺半群——上一页的群胚视角在这里落地。

数箭头算结构。Set 里 |Hom(A, B)| = |B||A|;Vec 里 Hom 是一个向量空间(线性映射全体),维数 dim Hom(V, W) = dim V · dim W;偏序集(薄范畴)里 Hom 至多一个元素——「有没有箭头」本身携带全部信息。同一个记号,三种读数。
Hom 是两条公理的舞台。结合律说:三张乘法表怎样卷起来都一样;单位律说:表里有「乘不动的 1」。第 49 页将看到:固定 Hom 的第一格或第二格、让对象变动,就得到反变与协变两族函子——可表函子的雏形。
「集合大小」的警示。严格地说,「所有集合」凑不成一个集合(Russell 悖论),故 Set 的对象类是真类;局部小只要求每两个对象之间的箭头成集——这个折衷让日常推理安全,又不必陷入基础公理的泥潭。需要更细的装置(宇宙公理)时,本书会在相应页面点名。
图 1-8 Hom 集合:范畴的乘法表 Hom(A, B) Hom(B, C) Hom(A, C) ( g, f ) ↦ g ∘ f 复合 = 一张乘法表 Hom(−, −):两个变量的函数 第一格挖 A、第二格挖 B ◇ 结合律 = 乘法表相容 ◇ 单位律 = 表中有 1 ◇ 后两章:固定一格变另一格   → 函子与可表性 范畴的全部「数据」都装在 Hom 集合与复合运算里——数箭头成了合法操作
图 1-8 范畴要求每对对象 Hom(A, B) 是一个集合(局部小)。复合于是成了一张「乘法表」:Hom(A, B) × Hom(B, C) → Hom(A, C),结合律与单位律是表的两条相容性。后两章的关键动作——固定一格、让另一格变动——正是函子与可表函子的胚芽。
20讲义

第一章 范畴:对象与箭头1.10 交换图:证明的图形语言

一句话直觉。交换图是范畴论的「乐谱」:对象是音符,态射是旋律线,「两条路径必落在同一个音」是唯一的演奏规则。

定义(交换图)。一个由对象(顶点)与态射(边)组成的图称交换,若图中任意两个对象之间、沿任何两条有向路径的复合都相等。一个方块交换 = 一条等式 v ∘ f = f′ ∘ u;三角形交换 = h ∘ g = k。复杂的交换图由基本方块拼成,「图中每个方块交换」通常足以推出「整图交换」(拼图定理,1.11 给出典型手法)。

画图即思考。同一个命题「h ∘ (g ∘ f) = (h ∘ g) ∘ f」写出来是一条结合律,画出来是一个三角形自动交换——结合律在图上「看一眼就成立」。越是复杂的命题,图的红利越大:第三章的极限、第四章的伴随三角,全是靠图才变得可读。
对偶原理在图上的样子。把一张交换图整体翻转箭头,得到它的对偶图;原命题证毕,对偶命题自动成立(1.14 详述)。绘图的手不必重画两遍,定理却白拿一份。
陷阱:交换图不自动交换。随手画的方块不必交换——交换是断言不是记号。初学最常见的事故是把「想证的图」当成「已交换的图」使用。规范:图旁注明哪些方块「已知交换」、哪些是「待证」。
图 1-9 交换方框:一条等式画成一个方块 A B A′ B′ f u v f′ = 可交换 v ∘ f = f′ ∘ u 交换图的读法 ◇ 顶点 = 对象 ◇ 边 = 态射 ◇ 每个方块=一条等式 ◇ 图「跑不通」才要证 ◇ 证明 = 补全对角箭头   (对角线分解) 从两条路径相等(v∘f 与 f′∘u)到「整张图处处相等」——交换图把代数变成几何
图 1-9 交换图用顶点装对象、用边装态射:图中每个小方块断言「沿两条路径复合结果相等」。于是「验证一个代数等式」变成「检查一张图是否交换」,而许多证明的本质动作——把已知的方块拼起来、补上一条对角箭头——正是下一页「追图法」的日常。
21讲义

第一章 范畴:对象与箭头1.11 追图法:从交换图读出等式

一句话直觉。追图法(diagram chase)= 在交换图上「沿着箭头走路」:想去哪儿,就把已知方块当桥,一步步把元素(或箭头)从起点送到终点。

两行证明的样板(拼图定理)。设上图两个小方块皆交换。则外圈交换:g ∘ f ∘ u = g ∘ f′ ∘ v。证:左方块给 f ∘ u = f′ ∘ v,两边左乘 g、用结合律即得。把「两边左乘」换成图的语言:两条路径在 Y 或 Y′ 处汇合后再同行。
对偶方向免费赠送。把这张图整体翻转,得「内圈交换 ⇒ 外圈交换」的对偶版本——证明一个字都不用改(1.14 的对偶原理提前上演)。追图法的每个招式都自带镜像。
元素的版本与箭头的版本。在 Set 里追图可以真「追元素」:一点沿边走,路径唯一处结果唯一。但在一般范畴里没有元素——追图的严格版本改追广义元素:任取试探箭头 x: T → X,沿边送它到终点,再由「对一切 T 相等」用 Yoneda 精神读出箭头相等(第二章展开)。本书正文默认的追图,凡涉及元素处均按此「试探箭头」语义解读。
图 1-10 拼图定理:方块相接,外圈自动交换 X Y Z X′ Y′ f g u v f′ 两个方块交换 ⇒ 外圈也交换 g∘f∘u = g∘f′∘v 拼图定理:已知方块横向拼接,外沿路径自动相等——「追图」就是沿边走路
图 1-10 追图法的第一定理:两个交换方块拼在一起,外圈大长方形自动交换。证明只需两行:沿上图走 g ∘ f,逐方块改道,两条路径在每一个中间站「对齐」。复杂的图证明不过是这一步的反复使用。
22讲义

第一章 范畴:对象与箭头1.12 等价三件套:忠实、满、本质满

一句话直觉。「两个范畴一样」有两档严格含义:同构(逐对象逐箭头对上,太苛刻)与等价(允许差一层同构的模糊,数学真正在用的那档)。等价的体检单有三张。

定义(范畴等价)。函子 F: C → D 称范畴等价,若它是忠实的(每对 A, B,Hom 映射单射)、满的(Hom 映射满射)且本质满(每个 D ∈ Ob(D) 同构于某 F(C))。此时记 C ≃ D。存在 G: D → C 与两支自然同构(单位与余单位的影子),使 GF ≅ id、FG ≅ id——「等价 = 带同构余论的逆」将在第二章用自然变换的语言重述。

为什么要「本质」满。拓扑学只关心同胚类、群论只关心同构类——数学命题对同构对象一视同仁。因此要求函子「对象层面双射」是过度苛刻:把每个集合复制一份多出来的范畴,与原范畴理应「一样」。本质满正是把这份宽容写进定义——差一层同构,不算差别。
忠实而满 = 逐对象同构。若 F 忠实且满,则每个 Hom 映射是双射,F 在「箭头层面」是同构;此时它自动把对象分进同构类。等价 = 忠实满 + 对象层面只差复本——三张体检单合起来的画像。
等价是自反的台阶。1.13 将证明:任何范畴等价于它的骨架(每同构类留一个代表)。于是「研究范畴」常常可以「先取骨架再动刀」——这是把无限对象类压成可操作清单的标准 preprocessing。
图 1-11 范畴等价的三张体检单 忠实 Hom 上是单射 箭头不并案 满 Hom 上是满射 箭头都有像 本质满 对象打到同构类 对象不漏类 不并案 无漏箭 不漏岛 F: C → D 的三张体检单
图 1-11 函子 F: C → D 称为范畴等价,须过三关:忠实(每对对象上的 Hom 映射单射——不把不同态射并成一案)、满(Hom 映射满射——每个目标态射都有原像)、本质满(每个目标对象同构于某个 F 的像——对象层面不漏「岛」)。注意:等价不必在对象层面双射——同构的对象彼此是复本,复本多几个无妨。
23讲义

第一章 范畴:对象与箭头1.13 骨架化:等价类的标准形

一句话直觉。同构的对象彼此是复本;把复本扔掉、每类留一件真品,得到的就是骨架——范畴的「压缩包」,解开还是原范畴。

定义与定理(骨架)。范畴 C 的骨架是一个满子范畴 sk(C):每同构类恰含一个对象,且同构仅存在于恒等。包含函子 sk(C) ↪ C 是范畴等价(本质满:每类有代表;忠实·满:态射原样保留)。两范畴等价 ⟺ 它们的骨架同构——等价论由此归约为同构论。

选择公理的小账。「每类挑一名代表」用到了选择公理;对小范畴这是常识操作,对大类(如全部集合)需谨慎——本书的应用都在局部小、可枚举的层面,按常识取代表即可。
骨架不是万能的。骨架化删掉了「复本之间的迁移」信息:有些构造(如第 25 页的枚举实验)恰恰关心同构有多少个;群胚的分类定理也把自同构群当主角。骨架用来分类,不用来计数——工具各有辖区。
线性代数的真身。「有限维向量空间」范畴的骨架是一个对象 k (自同态是矩阵半群代数 Mn 们的并)。「维数不变量」「秩—零化度」这些定理,在骨架语言里都变成关于一支对象的自同态的陈述——分类学的终点是极简,这是等价概念送给线性代数的第一份礼物。
图 1-12 骨架化:每同构类留一名代表 每个虚圈=一个同构类(互相复本) C1​ C2​ 每类留一名代表 骨架化 骨架与原范畴等价(忠实·满·本质满全过) 有限维向量空间:骨架只有一个对象 k——「维数」就是它的全部性格
图 1-12 骨架(skeleton):从每个同构类里挑一名代表对象、只保留代表与其间态射。骨架化函子忠实、满且本质满——是与原范畴等价的。最著名的例子:有限维向量空间的骨架只有一个对象 k——整门线性代数的「分类」浓缩成一个自然数(维数)。
24讲义

第一章 范畴:对象与箭头1.14 对偶定理:证明一遍得到两个

一句话直觉。对偶原理是范畴论的制度性福利:证明一遍,白拿一份。1.4 已见反范畴的定义,本页把它升级成「定理生产线」。

对偶原理。设 P 是一条只由范畴论词汇(对象、态射、复合、Hom、单/满、始/终、积/余积……)写成的命题。若 P 对一切范畴成立,则 P 的对偶命题 P°(把每个词汇换成对偶词汇、箭头全部翻转)也对一切范畴成立。证:P 在 C 中成立 ⟹ P 在 C° 中成立(P 对一切范畴成立);而 C° 中的 P 恰是 C 中的 P° 照镜子。∎

对偶词典(本章部分)。单态射 ↔ 满态射;始对象 ↔ 终对象;交换图 ↔ 自己(图翻转后仍是图);「f 是同构」↔「f 是同构」(自对偶——好性质自带镜像)。第三章将添入:积 ↔ 余积、极限 ↔ 余极限;第四章:左伴随 ↔ 右伴随。词典会随章节增厚,用法不变。
对偶不是「对称」。对偶命题与原命题同时为真或同时为假(原理保证),但两者内容可以殊异:Set 里单态射恰是单射(直观),满态射恰是满射(同样直观),而对偶迁移到拓扑范畴后,「单」与「满」都不再是集合论字面——词典要逐范畴核对。
使用守则。凡证明里只用了公理与已有范畴论结论的,对偶版免费;凡用到了某范畴的内部特殊性(如 Set 的元素、Vec 的基),对偶版不保真——免费午餐只供应给「纯箭头语言」写就的命题。这也是把命题写成箭头语言的最大动机之一。
图 1-13 对偶原理:一面照定理的镜子 对偶镜 命题 P:f 单 ⟺ 可左消去 对偶 P°:f′ 满 ⟺ 可右消去 始对象:到每处恰一支箭头 终对象:从每处恰一支箭头 积:投影的万有性 余积:注入的万有性 单调 ⟹ 单射(Set) 对偶读法:满的镜像陈述 C 中证得的 C° 中白拿的 翻转全部箭头(C → C°):每条定理立刻一分为二——「买一送一」是范畴论的制度性福利
图 1-13 对偶范畴 C°:对象不变、箭头全体调头、复合倒序。任何在 C 中成立的命题,把「单↔满、始↔终、积↔余积」等词全部换成对偶词,就在 C° 中成立——而范畴论的定理对每个范畴(包括 C°)一视同仁。于是每个证明自动产出两条定理:原版与镜像版。
25讲义

第一章 范畴:对象与箭头1.15 小范畴的枚举:看见范畴自身

一句话直觉。范畴不多——小数目的对象只撑得起少数几种合法的箭头图。把前几个 n 的范畴一个个列出来,抽象定义立刻变得可以「过目」。

n = 2 的穷举(手工可做)。设对象 0, 1。Hom(0,0) 与 Hom(1,1) 各是含 id 的幺半群;Hom(0,1) 是任意集合;Hom(1,0) 通常取空。要求全部合法时,同构意义下恰三种:离散(两孤点)、序 0 ≤ 1(唯一一支跨箭头)、自由象(跨箭头两支 a, b——复合自由生成)。第三个范畴虽小,却是「自由构造」的胚胎,第四章再见。
数数背后的自由度。n 个对象时,箭头集合与复合表须同时满足结合律——约束是二次的,自由度是三次的,故 n = 4 后数目骤增(218 → 数千)。这也解释了为何范畴论的「分类」通常不按对象数、而按泛性质与伴随来组织:后两者才是低维描述。
枚举的用途。① 反例检索器:想检验「凡范畴皆……」的猜想,先在 n ≤ 4 的 238 个样本里找反例;② 语义最小模型:一个定义若在 3 个对象的小范畴里都能读出味道,多半讲的是真结构而非记号游戏;③ 与第 36 页实验页的程序对拍——每个数字都可复算。
图 1-14 小范畴计数:n 个对象的范畴有多少 n 严格范畴数 含至少一支非平凡箭头 1 1 0 2 3 2 3 16 13 4 218 199 n 个对象的严格范畴计数(同构意义下) 1:终对象 a 2:序 0 ≤ 1 3 与 4 的样态见实验页程序 n = 5 起数目爆炸(数千),枚举止步
图 1-14 同构意义下,n 个对象(全部态射显式列出)的严格范畴数目:n = 1, 2, 3, 4 时分别有 1, 3, 16, 218 个。两个对象的三个范畴:离散(两孤立点)、序 0 ≤ 1、与「两支平行箭头」的自由象。实验页的程序将逐个枚举并验证公理。
26讲义

第一章 范畴:对象与箭头1.16 常见误读与澄清

一句话直觉。新语言的错误大多不是「不会算」,而是「拿旧直觉偷换新定义」。本页把第一章最常撞的五面墙钉在一张卡上。

墙一:对象里「装着」元素。范畴定义对对象内部只字未提——Top 的对象里藏着点,但范畴论的定理从不打开它。正确姿势:问「有哪些箭头进出它」。第 50 页的 Yoneda 引理将把这变成定理;本页先立为纪律。
墙二:把「等价」当「同构」用。两范畴等价时,对象层面可能差出许多复本。凡涉及「对象的个数」的命题(如「范畴里恰有 n 个对象」)在等价下无意义——换成语义稳定的说法(「骨架里有 n 个对象」)。1.13 的骨架是唯一合法的计数场合。
墙三:把愿望画成交换。追图法只在已断言交换的方块上行走。证明里每个方块都要交代来历:公理、已证、或本图之假设。草稿纸上可以用虚线标「待证」,成稿务必消歧。
墙四:对偶用过头。对偶免费只对纯箭头命题生效(1.14 守则)。「Set 中单射必满射当且仅当……」这类掺了元素语言的陈述,翻转箭头不会自动成立——先把它翻译回箭头语言(单态射、满态射),再谈对偶。
墙五:范畴论是「玄学」。恰恰相反:Hom 集合的计数、小范畴的枚举(第 36 页实验)、乃至第五章单子的程序模拟,全是可运行、可对拍的硬活。范畴论换掉的只是「数什么」——从数元素变成数箭头,而箭头恰恰是计算机最能理解的东西。
图 1-15 常见误读对照卡 误读 澄清 「对象是装元素的袋子」 对象无内部;其「内容」由入箭头与出箭头刻划 「同构与等价一回事」 等价允许多余复本;同构是逐对象的严格双射 「交换图自动交换」 交换是断言;未证的方块只是愿望 「对偶命题需另证」 纯箭头语言命题对偶免费(1.14) 「范畴论离计算很远」 Hom 计数、小范畴枚举、单子模拟都是程序活 五张「纠偏卡」——初学一个月内最常撞的五面墙
图 1-15 五张纠偏卡:对象不是元素的袋子(它由关系刻划);等价宽于同构;交换是断言不是记号;对偶免费但限于纯箭头命题;范畴论并不拒绝计算——它只是把「计算什么」换成了箭头与泛性质。
27例题

第一章 范畴:对象与箭头例题课(一):范畴与态射判定

例 1.定义映射 T: Set → Set:T(A) = A × A(有序对集合),T(f) = f × f(逐点作用)。问:T 是函子吗?

解。保复合:(g∘f)×(g∘f) 逐点作用等于先 f×f 再 g×g,即 T(g∘f) = Tg∘Tf;保单位:id×id = idA×A。两律成立,T 是函子。它是「平方」函子,且可表:Hom(2,−)(第 49 页)。∎

例 2.把拓扑空间 X 送到其连通分支集 π0(X),连续映射 f 送到「把每个分支送到其像所在分支」的映射。验证 π0: Top → Set 是函子。

解。关键观察:连续映射把连通集送成连通集,故 f 把整条分支送进同一条分支——定义合法。保复合:先 f 后 g 与直接 g∘f,分支归属一致(「像的像的分支=像的分支」由两步连通性合成);保单位显然。∎(π0 与 π1 是一对:π0 数「块」,π1 数「洞」。)

例 3.在 Set 中,唯一映射 m: ∅ → B 是单态射吗?是满态射吗?

解。单:对任意 g,h: X → ∅——若 X ≠ ∅,Hom(X,∅) = ∅,前提「m∘g = m∘h」空真,结论亦空真;若 X = ∅,则 g = h = id∅。故可左消去,是单态射。满:设 B 非空,取 g,h: B → {0,1} 分别常值 0、常值 1,则 g∘m = h∘m(都定义在空集上)而 g ≠ h——不可右消去,非满态射。∎(「从空出发只有一条路」与「空到非空堵不住别人」:始对象的两副面孔。)

例 4.范畴 Pos(对象=偏序集,态射=单调映射)的始对象与终对象是什么?与「偏序集作为范畴」的最小元、最大元如何区分?

解。始=空偏序集 ∅(到任何偏序集有唯一单调映射——空映射);终=任一单点偏序集 {∗}(任何元素唯一送到 ∗,单调性自动)。而「最小元/最大元」说的是一个偏序集内部(把它当薄范畴看)的始终对象——两个不同层面的同名概念:前者在 Cat 的对象层面提问,后者在薄范畴内部提问。∎(两层范畴的把戏,值得在草稿纸上重演一遍。)

判定类题目的通法:先写清「对象送什么、箭头送什么」,再逐条过两律;单满判定一律回到消去律,始终判定一律回到「恰有一个」。

28例题

第一章 范畴:对象与箭头例题课(二):等价与对偶的构造

例 1.完整验证双对偶的自然性:对线性映射 f: V → W,证明 ιW ∘ f = f∗∗ ∘ ιV。

解。两边都是 V → W∗∗ 的映射,逐点验证:对 v ∈ V、φ ∈ W∗,左边 ιW(f(v))(φ) = φ(f(v));右边 f∗∗(ιV(v))(φ),按 f∗(φ) = φ∘f 的双重对偶定义展开 = ιV(v)(f∗(φ)) = (f∗(φ))(v) = φ(f(v))。两缘相等,方块交换。∎(「双重转置不须选基」的每一代都显式写出——自然性从口号变成算术。)

例 2.对幂集函子 P: Set → Set(直接像版,第 42 页),构造自然变换 s: id ⇒ P,并验证。

解。取分量 sA: A → P(A),sA(a) = {a}(单点子集)。自然方块:对 f: A → B,P(f)(sA(a)) = f!({a}) = {f(a)} = sB(f(a)),即 P(f)∘sA = sB∘f。∎(「单点化」对一切映射兼容——又一例「默默用过的自然性」。)

例 3.证明:不存在自然同构 id ⇒ (−)∗(对 vFd 的恒等函子与单对偶函子——后者是反变函子,先把目标换成 (−)∗∘(−)op 使同为协变再谈)。

解。思路演示(完整论证留习题课(二)):若 αV: V → V∗ 自然,考虑 ℝ 与倍乘映射 mλ: ℝ → ℝ(x ↦ λx)。自然方块左缘给出 αℝ(λx) = λ·αℝ(x)(函数空间上以 λ 倍乘),右缘经 mλ∗(同样是倍乘)再算一遍,对 λ = −1 联立两式得 2αℝ(x) = 0,即 αℝ = 0——同构不可能为零,矛盾。∎(技术细节见习题课(二)第 6 题;此处体会「自然性是强到能挡住假同构的约束」。)

构造自然变换的三步流程:① 定分量(每个对象一根映射);② 验自然方块(对一切箭头);③ 若自称「同构」,逐对象验可逆。跳过第②步是初学第一大坑——「一族好映射」不等于「一个自然变换」。

29习题

第一章 范畴:对象与箭头习题课(一):基本功

习 1.证明:对象间的同构关系(A ≅ B)是等价关系。自反:id;对称:逆存在且唯一(第 15 页);传递:同构的复合仍是同构,逆为逆的复合(注意次序)。

习 2.证明 mono∘mono = mono、epi∘epi = epi;再举例说明 mono∘epi 不必是单也不必是满。用两次消去律串联;反例可回到 Set 用具体映射凑(如先满后单的「先挤后拉」)。

习 3.在 Set 中证明:满射是满态射。设 e 满、g∘e = h∘e;对 b ∈ B 取原像 a(选择公理),得 g(b) = g(e(a)) = h(e(a)) = h(b)。留意这里用到了选择——第 30 页第 3 题回望此事。

习 4.把「整除关系」的整数集 (ℕ, |) 看成薄范畴:写出其始对象、终对象;并说明「同构」在此范畴中意味着什么。1 整除一切(始);一切整除 0(终——0 被一切整除);反对称:互相整除 ⟹ 相等。

习 5.定义 O: Topop → Set:O(X)=X 的开集族;f: X → Y 送 f−1: O(Y) → O(X)(连续性的定义正是原像开)。验证 O 是(反变)函子,并把它翻成协变函子 O: Topop → Set 的等价说法。原像保并交(分析旧题)+ (g∘f)−1 = f−1∘g−1;「翻成」=第 43 页「反变即 Cop 上的协变」。

习 6.对群 G,构造双射 HomGrp(ℤ, G) ≅ U(G),并说明它对 G 是自然的(即给出 U ≅ Hom(ℤ,−) 的自然同构)。同态由 1 ↦ g 决定(ℤ 由 1 生成,n ↦ gn 是唯一的候选且确为同态);自然性:对同态 φ,两边都把 1 的像送成 φ(g)。

本页六题全部「基本功」——定义直用、无需新思想;目标是在动笔第三章前,把消去律、两律验票、「恰有一个」三个动作练到不假思索。

30习题

第一章 范畴:对象与箭头习题课(二):进阶

习 1.设 F: C → Set、α: Hom(A,−) ⇒ F。证明:α 自然当且仅当对一切 f: A → B 有 αB(f) = F(f)(αA(idA))。「拆引线」恒等式(第 50 页证明第②步)的正反两用:必要性令方块中的箭头取 f;充分性把方块两侧分别代入验证。

习 2.证明:在 Set 中,「既是单态射又是满态射」的映射必是双射(即 Set 是平衡范畴)。单态射=单射、满态射=满射(第 16 页+习 3),直接拼接。

习 3.在第 16 页「ℤ → ℚ 是满态射」的证明里,哪一步用到了「同态保逆」?把该步写成显式等式。设 g,h: ℚ → R 在 ℤ 上相等;对 p/q ∈ ℚ(p,q ∈ ℤ),g(p/q)·g(q) = g(p) = h(p) = h(p/q)·h(q),而 g(q) = h(q) 非零可消——「除法」正是保逆。

习 4.构造同构 Set/1 ≅ Set(1 为单点集),并构造等价 Set/({a,b}) ≃ Set × Set。前者:对象 f: X → 1 一一对应集合 X,三角交换自动;后者:逐纤维(a 袋与 b 袋)拆分与合并,单调映射=逐纤维映射。

习 5.证明 (−)op: Cat → Cat 是函子:F: C → D 应如何送出 Fop: Cop → Dop?两律如何过?对象不动、箭头 f 送 Ff 再调头;保复合要验 F(g∘f)op = Ffop∘Fgop——目标范畴里本就倒序。

习 6.补全例 3:写出 αℝ 在自然方块两缘的完整计算,证明 id ⇒ (−)∗(协变化后)无自然同构。关键一击:αℝ(−x) 沿左缘等于 αℝ(x)∘(−1)?——把 m−1 分别作用在「像函数的自变量」与「像函数本身」两处,联立即得 αℝ(x) = −αℝ(x)。若卡住,先用具体 x = 1 算一遍数值。

本页六题开始「进阶」:习 1 是 Yoneda 的心脏,习 5–6 涉及把「调头」当作数据使用。卡住时回到第 50 页的三行证明——答案全部藏在那里。

31地图

第一章 范畴:对象与箭头第一章知识地图

本章 16 节的地形:一条主轴(定义 → 例子 → 对偶 → 同构与等价 → 单/满 → 始/终),两座侧峰(把态射收进 Hom 集合;用交换图与追图法做计算),三条与相邻领域的接口用金色标注——它们不是装饰,是「这门语言可以向外说话」的证据。

图 1-16 第一章地形:一条主轴,两座侧峰 范畴定义(1.1):对象 · 箭头 · 两条公理 例子巡礼(1.2–1.3) Set/Grp/Top/Vec 偏序集=薄范畴 群与幺半群(1.8) 单对象范畴 群=单对象群胚 Hom 集合(1.9) 局部小 · 乘法表 End(A) 是幺半群 箭头语言重写旧概念 单/满(1.6)· 始/终(1.7) 交换图与追图(1.10–1.11) 拼图定理 · 试探箭头 收束:等价三件套(1.12)→ 骨架化(1.13)→ 对偶定理(1.14)→ 小范畴枚举(1.15)
图 1-16 第一章地形:一条主轴(定义 → 例子 → 对偶 → 同构与等价 → 单/满 → 始/终),两座侧峰(Hom 集合;交换图与追图),收束于等价三件套与骨架化。金色=公理起点,蓝色/米色=例子与代数结构,绿色=把态射收进集合,红色=箭头语言对旧概念的重写。

三条「主线走法」:赶路者走金色主轴(p11 → p12–13 → p14 → p15 → p16 → p17);好古者沿棕色对偶线——对偶原理(p14)贯穿全章,p16 与 p17 的成对定义是它的第一批收成;接桥者走蓝色接口(p19 的 Hom 集合直通相邻领域的模与复形,p20–21 的交换图回望相邻领域的 π1)。三条线在「等价三件套」处汇合:范畴论只数结构,不数对象。

32小结

第一章 范畴:对象与箭头第一章小结(上):定义与例子

上半章六件带走。逐条给出页码,复习时先遮住细目自测复述。

一、公理骨架(p11)。范畴=对象 + Hom 集 + 复合 + 单位元,两条公理(结合律、单位律);刻意不谈元素——凡是满足公理者,定理通吃。局部小=每对对象之间的箭头成集。

二、例子谱系(p12–13)。实体范畴 Set/Grp/Top/Vec 共用同一句式「对象 + 保结构箭头」;偏序集=薄范畴(至多一条箭头)——序与代数同框。

三、群与幺半群的单对象读法(p18)。一个对象 + 一支自箭头 = 一个幺半群;再要求箭头可逆,就是群。群作用=从单对象范畴出发的函子;每个对象自带自同态幺半群 End(A)。

四、对偶原理(p14)。Cop 把箭头全体调头;一切「纯箭头命题」买一送一。mono/epi、始/终、积/余积皆成对出现。

五、「一样」的两档(p15)。态射同构(可逆 + 逆唯一);范畴等价(全忠实 + 本质满)——范畴论计「结构类」,不计「对象个数」。

六、箭头语言重写旧概念(p16–17)。mono/epi=左/右消去律(警告:CRing 中 ℤ → ℚ 是 epi 非满);始/终=「出发/抵达的箭头恰一条」,本质唯一。

上半章给出的是「名词」:对象、箭头、复合、同构、始与终。下半章给出「语法」——交换图与追图法,以及度量「两个范畴一样」的三件套。把这六件收好,第一章只剩收束。

33小结

第一章 范畴:对象与箭头第一章小结(下):等价与对偶

正面清单(本页管下半章)。

交换图与追图法。方块交换=一条等式;拼图定理(方块相接外圈自动交换)是追图法的引擎;一般范畴中的「元素」按试探箭头语义解读。
等价三件套。忠实(不并案)· 满(无漏箭)· 本质满(不漏岛)。等价 = 带同构余论的逆;同构是它的严格特例。
骨架。每同构类留一名代表;与原范畴等价;两范畴等价 ⟺ 骨架同构。有限维向量空间的骨架只有一个对象 k。
对偶原理。纯箭头语言的命题证明一遍、对偶版免费;词典(单↔满、始↔终、积↔余积……)随章节增厚。掺了元素语言的命题不享免费。
群与幺半群的单对象读法。BG 把群变成范畴;群作用=函子 BG → Set;基本群胚是基本群的「全对象」升级。

易错清单。① 把等价当同构用(对象计数失义);② 把待证方块当已交换用(追图踩空);③ 对掺元素命题做对偶(免费失效);④ 骨架化后还想数复本(信息已删);⑤ 忘了 Hom 集合是「数据」——第 19 页一切都建立在它是集合之上。

与上半章的接口。上半章(定义、例子、单/满、始终对象)提供「名词」,下半章(图、追图、等价、对偶)提供「语法」。二者合起来,范畴已是一门可写可读的语言——但还没有「句子之间的翻译」。下一页的衔接讲义请出翻译官:函子。

34思想卡

第一章 范畴:对象与箭头思想卡:对象是它的关系之总和

Yoneda 引理说:知道一个对象与全世界的箭头关系,就完全知道了这个对象——Hom(A,−) 的全部取值复原本体,连「本体」这个说法都显得多余。

这不是技术,是立场。莱布尼茨说:若两个事物的一切属性皆同,则它们是同一事物(同一不可区分原则)。Yoneda 把「一切属性」精确化为「一切箭头」,把「同一事物」精确化为「本质唯一同构」——哲学直觉第一次拿到了定理编号。

于是范畴论给出一条认识论的纲领:要认识一物,不必打开它——去问它与一切他物的关系。对象是它的关系之总和;个体让位于位置,实体让位于网络。本章的每一个定义都是这条纲领的预演:单射不再「逐点看」,而是「可消去」;「空」不再「没有元素」,而是「出发的箭头恰一条」。

第六章(二)将把这条纲领系统展开为数学哲学中的结构主义;第四、五章的伴随将以「自由与遗忘互为镜像」给出它的动力学版本。此刻一句话:在范畴的疆域里,是谁,取决于与谁相连、如何相连。

回到第 5 页的「换眼」动作:当时是一个提议,如今是一个定理。下一页的挑战将说明:这条纲领如此之紧,连范畴公理本身都动它不得。

35挑战

第一章 范畴:对象与箭头挑战:范畴公理的独立性

公理体系像石拱桥——抽走一块石头,桥塌还是自立?本页做两次「抽石头实验」,看看两条范畴公理谁也离不开谁,以及谁还能再省。

实验一:结合律救不了单位律。取「右零半群」:x·y = y(取后者)。结合律验证:(x·y)·z = z = x·(y·z) ✓。但单位元存在吗?需 e·x = x 且 x·e = x——第一条要求 x = e 对一切 x,多元素集合上不可能。结论:结合律 + 右单位不成单位律;左右单位须同时约定(或约定「双侧」)。顺手可得一个精致推论:若 e 只是左单位、且有右逆可消,则可推出双侧单位——「左单位 + 右零 + 可消」三角中最弱的一角也能撑起全局,这正是挑战的精神:搞清每条公理的承重结构。

实验二:只有单位律会怎样?取任意集合配「右投影」x·y = x。单位律要 e·x = x——即 e = x 对一切 x,多元素上又失败。而结合律呢?(x·y)·z = x·z = x = x·(y·z) ✓。两次实验合读:两条公理在「多元素」世界里相互独立——谁也不能从谁推出来;只在单元素世界里它们才彼此重合(此时一切运算自洽)。

实验三:单位元唯一性的省写。第 11 页证明了单位元唯一。能否更省:只要求存在左单位与右单位(不必是同一个),推出双侧单位存在且唯一?答案是可以——经典的「左右相遇」论证(习题课(一)第 4 题的升级版):设 eLx = x、x eR = x,则 eL = eLeR = eR。∎范畴定义的「每对象一根 id」写法,正是把这个省写预先打包。

延伸:范畴论文献里还有「半范畴」(无单位律)与「预序充盈」等削公理游戏——它们不是无聊练习,而是在测绘「定理的势力范围」:每条定理到底吃几条公理?Yoneda 吃「局部小 + 单位律」全餐,一个都不能少。

36实验

第一章 范畴:对象与箭头实验:小范畴的枚举与计算

单对象范畴=幺半群(第 13 页)——这条等式让「范畴」可以被程序穷举。本实验:写一个验票器,把小集合上的一切「候选结构」过一遍公理安检。

# 半自动验票:给一张乘法表,判断它是否构成幺半群(= 单对象范畴)
def check(table, elems):
    # table[(x,y)] = x*y ;elems 为元素列表
    for x in elems:
        for y in elems:
            for z in elems:                      # 结合律
                if table[(x, table[(y, z)])] != table[(table[(x, y)], z)]:
                    return False, "associativity"
    for e in elems:                              # 找双侧单位元
        if all(table[(e, x)] == x and table[(x, e)] == x for x in elems):
            return True, ("unit = %s" % e)
    return False, "no unit"

# 2 元素实验:枚举全部 24 = 16 张候选乘法表
from itertools import product
elems = [0, 1]
ok = [t for t in product(elems, repeat=4)
      if check({(x, y): t[x * 2 + y] for x in elems for y in elems}, elems)[0]]
print(len(ok))   # 输出 4 :单位元 2 种选择 × 另一元素自乘 2 种去向

# 同构意义下仅 2 个:C2 型(另一元素自乘得单位)与 2 链型(自乘得自身)

实验报告三问。① 16 张表中,为何「单位元选择 ×2」乘「自乘去向 ×2」恰好穷尽?(提示:单位元素确定后,另一元素 a 的 e·a、a·e 被单位律锁死,唯一自由的是 a2。)② 把 4 张合格表逐个画出:哪张是 C2(二阶群),哪张是二链偏序集(min 或 max)?③ 换 3 个元素:候选表 39 = 19683 张——运行程序数出合格者(程序会自动数完),并与学生对拍结果;再思考:同构意义下还剩几个?(提示:先用单位元个数初筛,再做乘法表的同构搜索单。)

这枚小验票器正是范畴论「公理贫乏」的兑现:判定一个结构是不是「单对象范畴」,不需要任何群论、序论知识——两条公理,一份乘法表,程序即可代劳。第三章的实验将升级它:枚举「两条箭头的图」的全部锥形,亲眼看见极限的唯一性在枚举中浮出。

动手纪律:把 check() 中的结合律换成「只验单位律」再跑一遍 2 元枚举——合格表会变多吗?多出的是哪些「有单位不结合」的怪结构?(与第 35 页实验二互证。)

37格物札记

第一章 范畴:对象与箭头〖札记〗《九章》的「术」即态射

绪论第 7 页埋下伏笔:中国算学的「术」是箭头思维的算法形态。本页把这句话做成一张对照表与一张图——这枚札记是本册中西对照线的第一站,第四、五章(珠算口诀)与第六章(墨辩三物)将各自续一站。

「术」的箭头身份。《九章算术》粟米章开卷即立「今有术」:以所有数乘所求率为实,以所有率为法,实如法而一。译成现代话:已知量 A(所有数)在「所有率」r1 之下,换成所求量 B,取值 B = A × r2/r1。这是一条从「粟」到「米」、从「米」到「菽」的通用换算程序:它有明确的「出发点」(已知量)、明确的「抵达点」(所求量),并且——关键的一步——两段换算可以首尾相接:粟 → 米的术接着米 → 菽的术,效果恰是粟 → 菽的复合。刘徽注里反复出现的「术可相错」,说的正是复合的合法性;而「率」在诸术之间保持不变换算关系,正是复合的结合律在算学现场的运作。

粟 所有数 A 米 中转量 菽 所求量 C 粟米术(率 r1) 菽米术(率 r2) 今有术(复合):B = A × r2 / r1 两段相接=一段直达:「术可相错」,复合也 率在诸术间不变换算关系=结合律现场
图 1-17 「今有术」的交换三角:粟→米→菽的两段术,与粟→菽的一段复合术结果相同——刘徽笔下的「相错」,正是范畴交换三角的公元前版本。

为什么这是范畴论式的眼光?因为《九章》的作者们关心的从来不是「粟有几斗」这个对象,而是「怎样从一类量走到另一类量」这条箭头;诸术的编排(先化粟为米,再化米为菽)是纯粹的复合设计。以范畴之眼重读《九章》: 它是一部态射手册——九章各章是一个「态射库」,题是「态射的调用实例」,而「注」是「复合的合法说明书」。绪论说中国数学「重术」常被误读;现在可以说得更准:术正是箭头,重术即重关系——与 Yoneda 的纲领(对象是关系的总和)隔两千年级相视一笑。

下一站预告(第四、五章札记):珠算口诀「二一添作五」——单句口诀是原子箭头,口诀串是复合链,恰是第四、五章「单子」的民间预演。

38速查

第一章 范畴:对象与箭头第一章速查表

条目陈述出处
范畴公理h∘(g∘f) = (h∘g)∘f;idB∘f = f = f∘idAp11
局部小每对对象 Hom(A, B) 是一个集合p11
对偶Cop:箭头调头;真命题 ⟹ 对偶真p14
同构g∘f = id 且 f∘g = id;逆唯一p15
范畴等价全忠实 + 本质满;骨架=去重清单p15
单/满态射m∘g = m∘h ⟹ g = h;g∘e = h∘e ⟹ g = hp16
始/终对象Hom(I, A) 恒单点;Hom(A, T) 恒单点;本质唯一p17
群/幺半群单对象范畴;群=单对象群胚;End(A) 是幺半群p18
Hom 集合复合=乘法表;Set 中 |Hom(A, B)| = |B||A|p19
交换图两条路径给出同一箭头;拼图定理(外圈自动交换)p20–21
等价三件套忠实(不并案)· 满(无漏箭)· 本质满(不漏岛)p22
骨架每同构类留一名代表;C 与其骨架等价p23
对偶定理命题证明一遍,对偶版免费p24

使用建议:本表按「定义—定理—接口」排列,复习时先遮出处列自测复述;第二章的速查表把「函子与自然变换」一族接续在「同构」一行之后,两表合读即得全书语汇的骨架。

39讲义

第一章 范畴:对象与箭头衔接讲义:通往函子——让范畴之间架起桥

第一章完成了什么。立稳一门语言的词汇与语法:范畴(名词)、态射(动词)、交换图(句法)、等价与对偶(修辞)。但每个范畴都是一座孤岛——「范畴与范畴之间」还是一片空白。

三个悬而未决的问题。① 两个范畴之间的「保结构映射」该满足什么?(直觉:保复合与单位——但「到什么程度」有讲究,第 41 页见分晓。)② 两座桥之间如何比较?(第 45 页:自然变换。)③ 「对象由关系决定」只是纪律吗,能否成为定理?(第 50 页:Yoneda 引理——范畴论最深刻也最常用的定理。)
带着问题走的路标。第二章将以三步走完这座桥:函子(2.1–2.4)→ 自然变换与自然同构(2.5–2.7)→ 可表函子与 Yoneda(2.9–2.11)。第三章的泛性质、第四章的伴随,全部是 Yoneda 的推论——语言 Investment 的一次性回报。
图 1-18 衔接预告:范畴之间的桥 范畴 C (对象+箭头) 第一章:内部 范畴 D (对象+箭头) 第一章:内部 函子 F 保结构 的翻译官 C ⋯→ D 之间此前是空白 第二章:把「空白」填成函子与自然变换 预告三问:什么叫保结构?两个函子何时「一样」?对象由关系决定如何成定理? Yoneda 引理已在门口等——第二章 2.10
图 1-18 第一章的范畴彼此孤立:C 与 D 之间没有合法通道。第二章的第一件事就是架桥——函子(保复合与单位的映射),随后给桥与桥之间立规矩——自然变换,并以 Yoneda 引理收束:对象由它与全体对象的关系完全决定。
第二章

函子与自然变换

范畴看见了对象,函子让范畴之间有了桥:它把对象送到对象、态射送到态射,并保住复合与单位。幂集函子、自由–遗忘函子、对偶空间函子——早已在具体数学里与它们打过照面。反变函子把箭头翻转,Cat 把范畴自身收进一个范畴——「关于数学的数学」在此字面成真。而本章真正的主角是自然变换:函子之间的箭头。它把「两个构造本质上一样」变成可以证明的命题——自然同构的「自然」,正是「不依赖任意选取」的严格化身。切片范畴教「在对象之上工作」;可表函子把「问对象一个问题」变成「问它的箭头」;Yoneda 引理随后登场——全范畴论最深刻的定理,一句话:对象由它与全体对象的关系完全决定。本章末的 Yoneda 嵌入让范畴住进函子世界,为第三章的泛性质备好语言:所谓万有性质,不过是「某个函子可表」。
页型节奏:导引 → 讲义(概念 · 定理 · 证明 · 一步一图)→ 例题 → 习题 → 地图 · 小结 · 思想卡 · 挑战 · 实验
40导引

第二章 函子与自然变换第二章导引:让范畴之间有了桥

一句话直觉。函子是范畴之间的「保结构翻译」:把 C 的对象与态射整批送往 D,复合表与单位元原样保真。自然变换则比较两个翻译——要求「换一种译法,答案本质上一样」。

为什么需要函子。数学家每天都在做「翻译」:把群的问题化成集合的问题(忘掉乘法表)、把集合的问题化成拓扑的问题(加离散拓扑)、把空间的问题化成代数的问题(基本群)。这些翻译的共同点——保住结构、保住证明——正是函子公理的内容。
为什么需要自然变换。同一个集合可以有多种「自由化」:自由群、自由幺半群、自由向量空间——它们彼此不同却精神相通。「相通」的严格含义是:两座桥之间可以再架一层不依赖任意选取的梯子。Eilenberg 与 Mac Lane 1945 年发明范畴论,最初动机恰恰不是为了范畴,而是为了把「自然」二字说清楚。
本章路线。2.1–2.4 架桥与桥的代数(复合、反变、Cat);2.5–2.7 自然变换与自然同构;2.8–2.9 切片范畴与可表函子(「问对象一个问题」的严格化);2.10–2.11 Yoneda 引理与嵌入——全范畴论最深刻的定理,也是第三章泛性质的预备语言。
图 2-1 本章地图:从桥到桥的规矩 范畴 C 对象 · 态射 复合 · 单位 范畴 D 对象 · 态射 复合 · 单位 函子 F 对象↦对象 态射↦态射 自然变换 α: F ⇒ G 「桥与桥之间也要有规矩」 第二章两步走:先架桥(2.1–2.4),再给桥立法(2.5–2.9),终点是 Yoneda(2.10–2.11)
图 2-1 第一章的范畴彼此孤立;本章先架桥——函子(保复合与单位的映射),再为「桥与桥」立规矩——自然变换。终点的 Yoneda 引理把「对象由关系决定」从纪律升格为定理。
41讲义

第二章 函子与自然变换2.1 函子:范畴之间的映射

范畴立起来了,下一步是比较范畴。比较者必须自己守范畴的规矩——这就是函子。

(协变)函子。函子 F: C → D 由两部分数据组成:① 对象映射——每个 C-对象 A 送到 D-对象 FA;② 态射映射——每个箭头 f: A → B 送到 Ff: FA → FB。要求两条公理:

(保复合)F(g ∘ f) = Fg ∘ Ff;(保单位)F(idA) = idFA。∎

函子是「保结构的映射」的升级版:同态保乘法,连续映射保邻近,而函子保「复合结构」本身——它不问 C 与 D 里装的是什么,只要求箭头图被原样搬进目标范畴(交换图搬过去还是交换图)。验票两例:① 常值函子——一切对象送 B0,一切箭头送 idB0,两律立验;② 遗忘函子 U: Grp → Set——群送底集、同态送原映射,「保复合」自动(集合层面的复合没变)。

A B f 范畴 C FA FB Ff 范畴 D F F 同时搬运对象与箭头 交换图原样入 D
图 2-2 函子=跨范畴的搬运工:对象搬、箭头搬、复合与单位两律不丢。画成图——上面的交换三角形,经 F 搬到下面仍是交换三角形。

验票练习(例题课(一)将正式做):「把每个集合送到它的幂集、每个映射送到直接像」是 Set → Set 的函子;把「直接像」换成「原像」,两律还成立吗?——答案藏在第 43 页。

42讲义

第二章 函子与自然变换2.2 函子的例子:幂集、自由与遗忘

三个高频函子登场,它们将贯穿全书并在第四、五章结出「伴随」之果。

其一,幂集函子。P: Set → Set:集合 A 送幂集 P(A)(全体子集);映射 f: A → B 送直接像 f!: P(A) → P(B),f!(S) = {f(s) : s ∈ S}。验票:直接像的复合 (g∘f)! = g!∘f!(子集逐点过两道)与 id! 为恒等,两律成立。

其二,自由函子。F: Set → Grp:集合 X 送自由群 F(X)——以 X 为字母表、由「词」与约化规则构成的群(如 x y x−1 这样的字,相邻逆字母对消)。直觉:不施加任何额外关系,把集合「放生」成群。它的泛性质(任何映射 X → U(G) 唯一扩张为同态 F(X) → G)是第四、五章「伴随」的第一主角。

其三,遗忘函子。U: Grp → Set(也用于 Ring→Set、Top→Set……):把结构忘掉,只留底集。它「什么都不做」却绝不平凡——第四、五章将证明:自由与遗忘天生一对(伴随对),「造结构」与「拆结构」是同一枚硬币的两面。

Set 裸字母表 X Grp x y x−1… 自由群 F(X):词与约化 F(放生:加结构) U(遗忘:拆结构) 一对相反方向的函子:自由 ⇄ 遗忘
图 2-3 自由–遗忘对:F 把集合放生成群,U 把群拆回集合。第四、五章将证明二者之间有 Hom 同构——「自由」的严格含义,其实是「遗忘的左伴随」。

检索旧知的接口:相邻领域第一、二章的「自由模与基」正是 F: Set → Vec 的实例;当时「基的唯一表出」,就是自由性。本册把这类现象一网打尽。

43讲义

第二章 函子与自然变换2.3 反变函子与对偶函子

箭头也有逆行版本。第 41 页的验票练习在此揭晓:「原像」走的是反方向。

反变函子(contravariant functor)。F: C → D 称为反变函子,若它把 f: A → B 送到 Ff: FB → FA,且 F(g ∘ f) = Ff ∘ Fg、F(id) = id。

与协变只差两处:箭头调头、复合倒序。而这两处恰可合并成一句干净的话——反变函子 C → D 就是协变函子 Cop → D(也等价于 C → Dop)。对偶原理(第 14 页)在此兑现第一笔红利:本册此后只证协变版本,反变结论全部自动继承。

原像函子。P∗: Setop → Set:对象仍送幂集;f: A → B 送原像 f∗: P(B) → P(A),f∗(T) = f−1(T)。验票:(g∘f)−1 = f−1∘g−1——分析课的旧题,正是「倒序」公理。

对偶空间函子。线性代数的招牌例子:(−)∗: Vecop → Vec,空间 V 送对偶空间 V∗ = Hom(V, k)(线性函数全体);线性映射 f: V → W 送拉回 f∗: W∗ → V∗,f∗(φ) = φ ∘ f——函数本来就从 W 出发,被 f 一接,出发点变成 V,方向自然倒转。「行向量转置」「对偶基」「矩阵的转置」,全是这条函子在具体基下的面孔。

V W f V∗ W∗ f∗ φ ∘ f:先 f 再 φ 为什么调头? φ 是「从 W 出发」的函数; 被 f 接上一段后,起点 改为 V —— 出发点搬家, 箭头随之调头。 矩阵语言:转置
图 2-4 对偶空间函子:f∗(φ) = φ ∘ f。「用 f 先走一段再测量」——复合的内侧倒序,正是反变函子的两律。转置矩阵是它在基下的算术面孔。

术语预警:本册「函子」默认协变;说反变时一定点名。凡遇反变命题,先翻成 Cop 的协变命题再动手——这是省一半笔力的固定动作。

44讲义

第二章 函子与自然变换2.4 函子的复合与 Cat:范畴的范畴

函子能接龙吗?能——而且接法严丝合缝。

函子的复合。设 F: C → D、G: D → E。定义 G ∘ F: C → E:对象 A ↦ G(FA),箭头 f ↦ G(Ff)。两律验票:G(F(g∘f)) = G(Fg∘Ff) = GFg ∘ GFf(内层用 F 的保复合,外层用 G 的);单位律同理。∎

每个范畴 C 有恒等函子 idC。于是——「对象=小范畴,箭头=函子」恰好又是一个范畴!记作 Cat(严格说,对象取「小范畴」——对象集与 Hom 集皆为集合的范畴,避免集合论悖论)。这是范畴论的第一次自我复制:范畴论不但谈论一切数学,它自己也成了被谈论的一员。

自相似立刻给出新例子:偏序集的范畴 Pos、群的范畴 Grp(把每群看成单对象范畴后所得)、单对象子范畴的枚举……都是 Cat 里的对象。更妙的是,Cat 里的「同构」就是范畴同构,而「等价」正是第 15 页的范畴等价——vFd 与其骨架在 Cat 中等价的那句话,如今是 Cat 内部的一个箭头事实。

Set 对象=集合 Grp 对象=群 Top 对象=空间 U 函子 Cat=范畴的范畴 对象=小范畴(三个蓝盒) 箭头=函子(金箭)
图 2-5 Cat 的自相似:Set、Grp、Top 本身是范畴,又是 Cat 的对象;函子是它们的箭头。范畴论成为「关于数学的数学」的形式保证——它把自己也收录了进去。

小范畴的尺寸纪律:Cat 只收「小」范畴(Hom 集都是集合)。Set 本身不小时,处理要靠更大宇宙的 Grothendieck 万有域技巧——本册点到为止,只提示:第 11 页「局部小」的括号,在此兑现。

45讲义

第二章 函子与自然变换2.5 自然变换:函子之间的箭头

范畴论的第三级楼梯:函子也要能相互比较。1942–45 年,Eilenberg 与 Mac Lane 正是为了说清「自然」二字才发明这一切——「自然变换」是整座大厦最初的心跳。

自然变换。设 F, G: C → D 为两个函子。自然变换 α: F ⇒ G 是一族 D-态射 {αA: FA → GAA∈Ob(C)}(每个对象一根「分量」),满足自然方块:对每个 f: A → B,

Gf ∘ αA = αB ∘ Ff。

方块说的是:先在 A 处「换轨」再运货(Gf∘αA),与先运货再在 B 处换轨(αB∘Ff)结果相同。「自然」的日常含义——不依赖任意选择——在此变成一条可验证的交换等式。若每根分量都是同构,称α 为自然同构(下一页专述)。

FA FB GA GB Ff Gf αA αB 方块必交换 自然变换 α: F ⇒ G:一族分量 + 一片交换方块
图 2-6 自然方块:Gf ∘ αA = αB ∘ Ff。「换轨」与「运货」先后可交换——这就是 Eilenberg–Mac Lane 笔下「自然」一词的精确化身。

第一个实例:阿贝尔化。对每个群 G,商群 Gab = G/[G,G](换位子子群的商)是阿贝尔群;投射 ηG: G → Gab。取阿贝尔化是函子(同态 φ 送诱导商同态),而「取像为投射」这件事是自然的:对任何同态 φ: G → H,方块「先投射再诱导」=「先诱导再投射」——因为同态把换位子送成换位子,商结构兼容。一句话:η: id ⇒ ab 是自然变换。「任何同态都兼容商映射」——凡学过群论者都默默用过这个事实,范畴论把它点名成图。

分量符号 αA 的下标是对象,不是元素——「每个对象一根分量」,这就是函子之间比较的全部内容。例题课(二)将亲手验证两族分量是否合格。

46讲义

第二章 函子与自然变换2.6 自然同构:「本质上唯一」

当自然变换的每根分量都是同构,我们得到范畴论最常用的一个词——「本质上」。

自然同构。自然变换 α: F ⇒ G 称为自然同构,若每根分量 αA 都是同构;记作 F ≅ G。此时逆变换 α−1(分量取逆)自动自然——逆的方块由原方块「翻面」即得。∎

正例:有限维双对偶。对有限维线性空间 V,取 ιV: V → V∗∗,ιV(v)(φ) = φ(v)(把向量看成「给线性函数打分的人」)。每根分量是同构(维数相等、单射足够),而方块自动交换——ιW∘f = f∗∗∘ιV 两边都是 ιW(f(v))(φ) = φ(f(v)),逐点可验。于是 id ≅ (−)∗∗ 是自然同构。

反例:单对偶。V ≅ V∗ 在有限维也成立(维数相等),但不自然:每个同构都须先选一组基,把基映成对偶基;换一组基,同构跟着换。范畴论对「依赖基的选择」给出了精确判词——那是一个自然性不成立的同构族。教材里常说的「典范同构」「典范映射」,范畴论的翻译正是:自然(或不自然)。

V ≅ V**:自然 ✓ 向量给函数「打分」 ⟨v, φ⟩ = φ(v),无基可逃 方块自动交换 选不选基都一样 ✓ 典范 V ≅ V*:不自然 ✗ 同构须先把基 映成对偶基 换基则同构跟着换 每选一组基,一个新同构 ✗ 依赖选择
图 2-7 「自然」与「典范」的精确化:双对偶无需选择、方块自换(左);单对偶依赖基的选择、换基即换同构(右)。教材口中的「典范」,范畴论写作「自然同构」。

「本质上唯一」句式预告:泛性质(第 17 页)证明的唯一性都「up to iso」——对象同构唯一;配上函子与自然变换后,整句话升级为「表示函子本质唯一」(第 49 页)。「本质」从此有严格语义。

47讲义

第二章 函子与自然变换2.7 函子范畴与箭头图

把第 45–46 页的新居民安家:自然变换之间能不能复合?能——逐对象复合分量即可,且两律易验。于是又一轮「自我复制」:

函子范畴。设 C 为小范畴、D 为任意范畴。函子范畴 DC 的对象是函子 F: C → D,态射是自然变换 α: F ⇒ G;复合逐对象进行,单位元是 idF(每根分量取 idFA)。∎

第三层楼梯修完:对象、函子(一阶箭头)、自然变换(二阶箭头)——范畴论是一台三层发动机,且每层都守同一套公理。 Cat(第 44 页)与函子范畴 DC 的分工:前者以范畴为对象,后者以「固定两个范畴之间的函子」为对象——后者像把镜头对准一对城市之间的全部航线。

箭头图也是函子。最简单的小范畴之一:形如 • → • 的两点一箭范畴(记作 2)。一个函子 F: 2 → C 是什么?两个对象、一条箭头——就是 C 里的一张一箭图!三角范畴 3(三点三箭成三角形)的函子,是 C 里一张交换三角图。于是「画交换图」这个动作获得了严格身份:交换图=从图范畴出发的函子;「图交换」=函子性自动保证的等式。第三章的极限将把「图」用到极致——极限就是「对一张图取万有锥」,而已经掌握了图的严格定义。

图范畴 3(形状) 只管「形状」:三点三箭 函子 C 里的交换三角 A B C h∘f = k
图 2-8 「画交换图」的严格身份:左边的形状范畴(自由生成的三角图)配上一个函子,右边就是 C 里一张具体的交换三角——「交换」由函子性白送。

三层总结:范畴论的所有「图」都活了——它们不是插图,而是函子;画的每张交换图都在声明一条定理级别的等式。本册的「一步一图」因此字字有据。

48讲义

第二章 函子与自然变换2.8 切片范畴:在对象之上工作

范畴论的又一种「取局部」手艺:不换范畴,而是站到某个对象之上看全局。

切片范畴(slice category)。设 C 为范畴、A 为其对象。切片范畴 C/A 定义为:对象=一切箭头 f: X → A(把 X「盖」在 A 上的方式);态射 f → g(其中 g: Y → A)是使三角交换的箭头 h: X → Y:g ∘ h = f。∎

验票:复合 h'∘h 后 g∘h'∘h = g∘h∘(?)——由 h 与 h' 各自的交换三角串联即得;单位元是 idX(f∘id = f)。两律成立,C/A 是货真价实的范畴。

Set 中的切片最直观。对象 f: X → A=「A-标记集」:每个 a ∈ A 头顶挂着一袋元素 f−1(a)(纤维)。态射=保标记的映射(h 必须把 a 头顶的元素送到 a 头顶)。于是 Set/A 恰是「逐纤维工作的集合论」——A = {红,蓝} 时,一个切片对象就是「一袋红元素 + 一袋蓝元素」。

两个速算:当 1 是终对象(单点集),Set/1 ≅ Set——盖在一点上毫无约束,切片退化回原范畴(习题课(二)第 4 题验票)。当 A = B ⊔ C(两个标记),Set/A ≅ Set × Set——标记集逐纤维分裂。切片是第三章「拉回」的伏笔:我们将证明,两个切片对象的「积」(在 C/A 里取)恰是原范畴中的拉回——届时「拉回」这一新名词将是免费赠品。

Set/A:每个标记头顶一袋纤维 a b c 对象 f: X → A(袋口都朝向 A) 态射=保标记的映射:只在同一根线上搬家
图 2-9 切片范畴 Set/A:对象是把集合「盖」到 A 上的箭头——逐纤维看,就是「每点一袋」。第三章的拉回,就是这架天平上的「积」。

对偶地有余切片 A/C(对象=从 A 出发的箭头)——又一次免费镜像。切片的思想在几何里叫「在底空间上工作」,在层论里叫「茎」,在数据库里叫「按主键分组」:同一手艺,处处留名。

49讲义

第二章 函子与自然变换2.9 可表函子:对象如何「被问到」

本章的两大主角即将同台。第一位:可表函子——它把「对象」翻译成「一整个提问程序」。

可表函子。函子 F: C → Set 称为可表示的,若存在对象 A 与自然同构 Hom(A, −) ≅ F;此时称 A 表示 F。

回忆第 11 页:Hom 是「数据」——对每个 B,集合 Hom(A,B) 数出「从 A 到 B 的方式」。Hom(A,−) 是函子(箭头 f: B → B' 以后复合送过去:Postf,两律即结合律)——它叫 A 的共变表示,或说「A 的提问程序」:到一个新对象 B,先问一句「从 A 出发能怎么走?」

两个好例子。① 在 Grp 中,「取底集」函子 U: Grp → Set 被整数加法群 ℤ 表示:HomGrp(ℤ, G) ≅ U(G)——同态由 1 ↦ g 的 g 唯一决定(第 17 页「无选择」的复述),且对 G 自然而然。② 在 Set 中,Hom(2, −)(2 = {0,1})把 B 送到 B × B ≅ B2——「带两个标签的取点」,它表示了「取有序对」这个操作;一般地 Hom(n,−) ≅ (−)n 是「取 n-元组」。

命题(表示本质上唯一)。若 A 与 A' 都表示 F,则 A ≅ A'。

证。两条自然同构串联给出 Hom(A,−) ≅ Hom(A',−);由第 50 页 Yoneda 的推论,这迫使 A ≅ A'。∎(第 17 页「始对象本质唯一」正是本命题对 F =常值单点函子的特例——始对象表示「一切 Hom 皆单点」的程序。)

对象 A 被装箱的「提问者」 内部构造不可见 Hom(A, −) 逐对象回答: 「从 A 到 B 能怎么走?」 Yoneda 打开箱子 可表函子:把对象变成一整套提问
图 2-10 可表函子的隐喻:对象 A 是黑箱,Hom(A,−) 是它的「对外问卷」;Yoneda 引理(下页)宣布——问卷的答案足以完整复原黑箱。

逆过程也值一问:拿到一个 Set 值函子 F,何时它是某个对象的问卷?——「可表性定理」是高级课程的主题;本册满足于:凡是泛性质定义的东西,几乎都以可表函子的面目出现(积、指数、始与终……第三章逐一兑付)。

50讲义

第二章 函子与自然变换2.10 Yoneda 引理:关系即本质

范畴论的第一定理。它短小到可以印在名片上,深刻到值得用第六章一整章消化。

Yoneda 引理。设 C 局部小,A 为对象,F: C → Set 为函子。则映射

Φ: Nat(Hom(A,−), F) → F(A), α ↦ αA(idA)

是双射。其逆把 x ∈ F(A) 送到自然变换 Φx,分量定义为

Φx(B): Hom(A,B) → F(B), f ↦ F(f)(x)。∎

证明(三行)。① Φx 自然:对 h: B → B',两边都算出 F(h∘f)(x)。② Φ 与逆互消:Φ(Φx) = Φx(A)(idA) = F(idA)(x) = x(保单位律);反过来,任一 α 的分量在 f 处,用自然方块「拆引线」(记 x = αA(idA) = Φ(α)):

αB(f) = αB(Hom(A,f)(idA)) = F(f)(αA(idA)) = Φx(B)(f)

——α 在任何处的取值,被它在 idA 处的取值完全决定,故 ΦΦ(α) = α。两条合成,双射到手。∎

推论(Yoneda 嵌入的核心)。Hom(A,−) ≅ Hom(B,−) 当且仅当 A ≅ B。

证。(⟸ 显然。)⟹:取 F = Hom(B,−),同构 α 对应 g = αA(idA): B → A;引理证明的「拆引线」恒等式表明 α 恰是前复合 g∘−。α 是自然同构,故每分量 g∘−: Hom(A,A) → Hom(B,A) 双射;由满取 k: A → B 使 g∘k = idB,由单(考察 g∘(k∘g) = (g∘k)∘g = g = g∘idA)得 k∘g = idA。∎

推论正读:若两个对象的「提问程序」完全相同,则它们同构——对象由它与全世界的箭头关系唯一决定。「关系即本质」不再是口号,而是三行证明撑起的定理。

记忆锚点:Yoneda 说「自然变换由一个点决定」——αA(idA) 这一个取值,像杠杆的支点,撬动全部分量。第 34 页思想卡给出它的哲学译文;第六章(二)给出它在认识论里的全面开花。

51讲义

第二章 函子与自然变换2.11 Yoneda 嵌入:范畴住进函子世界

一句话直觉。Yoneda 引理(2.10)说「对象由它的关系决定」;Yoneda 嵌入把这进一步做实:把每个对象干脆替换成它的关系数据——范畴整体搬进函子世界,寸步不失。

定义(Yoneda 嵌入)。函子 Y: C → SetC°,Y(A) = Hom(−, A)(反变可表函子),箭头 f: A → B 送到自然变换 Hom(−, A) ⇒ Hom(−, B)(复合 − ∘ f)。定理:Y 忠实且满——是范畴等价到它的像上。

「住进去」意味着什么。等价(1.12 三件套全过)意味着:C 的全部范畴论内容——哪些箭头存在、如何复合、哪些对象同构——都被「探针函数」Hom(−, A) 家族原样携带。对象不再是黑箱,而是它接收的全部探针读数的汇总。
与 2.10 的分工。Yoneda 引理是「逐点读数」:Nat(Hom(−, A), F) ≅ F(A);Yoneda 嵌入是「整体搬家」:把读数机本身当作对象。前者用来证命题,后者用来转移舞台——第三章的泛性质、第六章的结构主义哲学,都住在搬进去之后的世界里。
提示。嵌入的目标是 SetC°——反变函子的函子范畴(上标 C° 记反变)。协变版 Hom(A, −) 同样嵌入到 SetC;两版等价,习惯用反变版。若 C 只是小范畴,这套构造毫无基础隐患——这也是「小范畴枚举」(1.15)实用的原因之一。
图 2-11 Yoneda 嵌入:范畴住进函子世界 范畴 C 对象 A, B, … 函子范畴 SetC​ C → Set 的函子全体 自然变换为态射 Yoneda 嵌入 A ↦ Hom(−, A) faithfully(忠实)+ full(满) C 完整地住进函子世界——对象变成「探针函数」 推论:C ≃ 它在 SetC​ 里的像;研究 C = 研究它与万物的关系 Yoneda:Nat(Hom(−, A), F) ≅ F(A)——关系即本质
图 2-11 Yoneda 嵌入把每个对象 A 送到可表函子 Hom(−, A)、每支箭头送到自然变换;这一嵌入忠实且满——范畴 C 与它在函子范畴里的像等价。于是「研究一个范畴」合法地等于「研究每个对象与全体对象的关系」——第一章的纪律在第 50 页 Yoneda 引理处完成了定理化。
52例题

第二章 函子与自然变换例题课(一):函子与自然变换的构造

例 1(幂集函子是函子)。令 𝒫: Set → Set:对象 A ↦ 𝒫(A)(子集全体),态射 f: A → B 送到直接像 𝒫f(S) = f(S)。验证函子公理。① 复合:像的像=复合的像,𝒫(g ∘ f) = 𝒫g ∘ 𝒫f;② 单位:𝒫(idA)(S) = S。∎ 三行完毕——但:若把态射送到逆像 f-1(T),公理变成 (𝑔 ∘ f)-1 = f-1 ∘ g-1——次序颠倒,那是反变函子(2.3)。

例 2(忘却函子)。U: Grp → Set:群送到底集合、同态送到底映射。复合与单位在底层面自动成立。它「忘掉」了乘法表——第 42 页的自由–遗忘对从这里起跑。易错点:U 不保双射=同构——两个不同构的群可以有同构的底集合(ℤ/6 与 S3)。函子保同构(忠实即保单满),但不反射同构:底集合同构推不出群同构。

例 3(构造一个自然变换)。取双重对偶 ηV: V → V**(向量送入「求值泛函」)。对每个线性映射 f: V → W,验证方块交换:f** ∘ ηV = ηW ∘ f——两边都把 v 送到「对 φ ↦ φ(f(v)) 求值」。∎ 这就是 η: id ⇒ ** 的自然性;「不依赖基」正是自然性的代名词(第 46 页细讲)。

53例题

第二章 函子与自然变换例题课(二):可表函子的判定

例 4(可表函子判定)。问:函子 F: Set → Set,F(X) = X × {0, 1}(双份拷贝),可表吗?判定:可表 ⟺ 存在集合 A 使 Hom(A, −) ≅ F。取 A = {0, 1}:一条箭头 A → X恰是「给两个标记各挑一个元素」= X × {0, 1} 的一点。自然性逐点验证(后复合 vs 后配对)。∎ 可表——表示对象是二元集。

例 5(不可表的旁观证)。G(X) = X ∗ X(自由积,两份拷贝的「字」)可表吗?若 G ≅ Hom(A, −),看单点集:|G(1)| 应等于 |A|;但 G(1) 是两字母自由幺半群的元素集——无穷。而 Hom(1, −) 读出的恰是 A 自己的元素个数——有限集 A 无从表示。(若允许无穷 A,再用 |G(2)| = |A|2 的两条约束联立即出矛盾。∎)方法总结:可表性判定=「在试探对象上读数、联立方程」。

例 6(从 Yoneda 读信息)。设 Hom(A, −) ≅ Hom(B, −)(自然同构)。由 Yoneda(2.10),取 F = Hom(B, −):Nat(Hom(A, −), Hom(B, −)) ≅ Hom(B, A) 的恒等同构给出箭头 B → A;对称地再给 A → B;两个复合各是恒等(再次用 Yoneda)。∎ A ≅ B——「探针读数完全相同则对象同构」,这是 Yoneda 最常用的姿势。

54习题

第二章 函子与自然变换习题课(一):基本功

习 1(热身)。验证:常量函子(一切对象 ↦ 固定对象 D、一切态射 ↦ idD)确是函子;它在什么范畴间「保同构」?(答案提示:任何两个同构的对象被送到同构——但反射不出源的同构。)

习 2。P: Set → Set 的反变版:X ↦ 𝒫(X)、f ↦ f-1。验证公理(注意复合次序),并说明它与例 1 的协变版是「同一数据的两种朝向」。

习 3。证明:函子保同构——若 f: A ≅ B,则 Ff: FA ≅ FB。(两行:对 f ∘ f-1 = id 与 f-1 ∘ f = id 作用 F。)

习 4。找出一个函子 F 与一对不同构的对象 A, B 使 FA ≅ FB——(提示:U: Grp → Set 与 ℤ/6, S3;或「把一切对象送到 1」的常量函子。)结论记牢:函子保同构,不反射同构——反射是「忠实+满」以上才谈的事。

55习题

第二章 函子与自然变换习题课(二):进阶

习 5(自然性计算)。双对偶 η(例 3)之外,再验证「有限维向量空间到自身的双重转置」 V ↦ V** 在态射上的自然性;并指出为何「V ≅ V*」不给出自然同构(提示:同构依赖基的选取;换基后方块破裂——这正是「自然」二字的反面教材。)

习 6。证明自然变换的竖直复合(α: F ⇒ G、β: G ⇒ H 给 β ∘ α: F ⇒ H)满足结合律,且每个函子有恒等自然变换——于是「函子+自然变换」自成一个范畴(函子范畴,2.7)。

习 7。在偏序集范畴(薄范畴)里:函子=单调映射;自然变换 α: F ⇒ G 存在 ⟺ 对每个 x 有 Fx ≤ Gx(分量箭头至多一支,存在即唯一)。据此写出:单调映射之间的「序」恰是逐点序——薄范畴把自然变换「压扁」成了不等号。

习 8(挑战级热身)。设 A 是 Set 的单点集。证明 Hom(1, −) 可表(它就是自己),且 Nat(Hom(1, −), F) ≅ F(1)——这正是 Yoneda 在 A = 1 的特例;试着不引用 Yoneda、直接构造双方射完成它(为 2.10 做手感训练)。

56地图

第二章 函子与自然变换第二章知识地图

本章一句话。函子让范畴之间有了桥,自然变换给桥立了规矩,Yoneda 证明桥的读数足以还原对象——「由关系定义对象」从纪律变成定理。

概念依赖链。函子公理(2.1)→ 反变(2.3)→ Cat(2.4)→ 自然变换(2.5)→ 自然同构(2.6)→ 函子范畴(2.7)→ 切片(2.8)→ 可表(2.9)→ Yoneda(2.10)→ 嵌入(2.11)。每一环都只踩在前一环上——回头查漏时按链找。
两条副线。① 群=单对象范畴的函子读法(表示论视角,1.8 的延续);② 薄范畴的「压扁」读法(习 7)——偏序、Galois 连接(第 100 页)都住在这条线上。
考试要害。函子公理的两个方向(协变/反变)、自然性方块的三种画法、可表判定的「试探读数法」、Yoneda 的两种用法(读信息 / 造同构)。例题课与习题课共 12 题,全部围绕这四件兵器。
图 2-12 第二章知识地图 2.1–2.4 函子与桥的代数 2.5–2.7 自然变换·同构 2.8 切片范畴 2.9 可表函子 2.10–2.11 Yoneda 引理·嵌入 保复合·保单位 「本质上唯一」 可表 = 「问对象一个问题」的严格化;Yoneda = 关系即本质 主轴:结构翻译 → 翻译之间的翻译 → 由翻译读出对象本身 出口:第三章泛性质 = 可表性;第四章伴随 = Yoneda 的工程化
图 2-12 本章主轴一条:先造「结构翻译」(函子),再造「翻译的翻译」(自然变换),最后证明翻译读数能还原对象(可表性与 Yoneda)。切片范畴是可表性的舞台;出口通向第三章:所谓泛性质,不过是某个函子可表。
57小结

第二章 函子与自然变换第二章小结(上):函子的演算

正面清单(函子部分)。

定义三角。函子=对象映射+态射映射+两条公理(保复合、保单位);协变保次序、反变倒次序(2.1、2.3);两个函子可复合(2.4),Cat 把范畴收进范畴。
标配例子。幂集(协变/逆像反变两版)、自由–遗忘、对偶空间(反变)、常量函子、同调函子 Hn: Top → Ab(第 42 页「函子的例子」的拓扑写真)。
基本定理。函子保同构(两行证明);函子不反射同构(ℤ/6 vs S3);忠实+满 = Hom 层面双射;等价 = 忠实+满+本质满(1.12 在函子语言下的重述)。
演算守则。① 验证函子公理永远是两行(复合、单位);② 看到「f-1」立即警觉反变;③ 「保结构」有强弱之分——满忠实 > 忠实 > 保同构,引用定理前先核对档位。

易错清单。① 忘了反变函子的复合倒序;② 把「保同构」说成「反射同构」;③ 对真类大小的范畴滥用「函子范畴」(需局部小或小范畴假设);④ 常量函子的态射映射忘写 id。

58小结

第二章 函子与自然变换第二章小结(下):自然性与 Yoneda

正面清单(自然变换部分)。

定义三角。自然变换=一族分量箭头+对每支箭头的方块交换;自然同构=每支分量皆同构;竖直复合成函子范畴(2.5–2.7)。
标配例子。双对偶 η: id ⇒ **;有限维 V ≅ V*(不自然);行列式对基变换的交换;「求逆」在群论里的自然性。
可表与 Yoneda。可表函子=Hom(A, −)(协变)或 Hom(−, A)(反变);Yoneda 引理 Nat(Hom(−, A), F) ≅ F(A)(2.10);嵌入忠实且满(2.11)。两个招牌应用:读数相同 ⟹ 对象同构;泛性质=可表性(第三章)。
判「自然」的速记。构造若不挑基、不挑生成元、不挑代表元——多半自然;凡是「取标准正交基」「取字典序代表」的构造,一律先怀疑自然性。

易错清单。① 自然性方块的方向画反(分量箭头与源函子的箭头同向);② 把「分量皆同构」写成「存在整体逆」(需逐分量验证相容性才配称自然同构);③ Yoneda 里 Hom 的变位记反(反变版 Nat(Hom(−, A), F) ≅ F(A);协变版 Nat(Hom(A, −), F) ≅ F(A) 各自成立);④ 用 Yoneda 时忘了核对方块确实交换。

59思想卡

第二章 函子与自然变换思想卡:自然性是「不看元素」的承诺

自然性是「不看元素」的承诺。

「自然」在日常语言里是「顺理成章」;在范畴论里它是一条可以逐字验证的契约——无论用哪个对象、哪条路径去问,答案都经同一张方块换算。双对偶 η 为什么自然?因为它对每个向量空间用同一个公式(求值泛函),公式里没有「先选一组基」这个动作。V ≅ V* 为什么不自然?因为「把向量映成坐标泛函」必须先挑基——挑法不同,方块就裂开。

这份承诺的深意在于:凡自然者,皆可搬运。自然变换在一切范畴、一切函子间通用——Eilenberg 与 Mac Lane 正是为了给「通用」二字立契约,才顺手发明了范畴论。读到第四章的伴随三角与第五章的单子平方,会一再遇见同一句话:那些最深刻等式的成立,都只因为它们自然。

一句话带走:看一个构造配不配称「好」,先问它换不换舞台都成立。

60挑战

第二章 函子与自然变换挑战:Yoneda 的推论串烧

挑战:Yoneda 的推论串烧。不查文献,仅用 Yoneda 引理(2.10)与嵌入(2.11),依次证明以下四连推。每一步都只许用箭头语言。

第一棒(读数即同构)。若 Hom(A, −) ≅ Hom(B, −)(协变可表的自然同构),则 A ≅ B。例 6 已给反变版;协变版自证。
第二棒(自同构即中心)。Nat(Hom(A, −), Hom(A, −)) ≅ Hom(A, A):可表函子的自然自同构全体恰是 A 的自同态幺半群——「探针机的内部对称性=对象自己的对称性」。
第三棒(稠密性)。用嵌入的满性证明:任意函子 F: C → Set(小范畴 C)是可表函子的逐点余极限——第三章 3.8 的预演,先按定义硬写。
第四棒(对偶的 Yoneda 版)。证明 C ≃ C 当且仅当 SetC° 中 Y(C) 的像 ≃ Y(C°) 的像——并解释为何这说明「对偶原理在函子世界有一面镜子」(1.14 的升华)。

突破口提示。四棒共用一个动作:把想证的箭头放进 Nat 的位置,让 Yoneda 把它换算成 F(A) 的元素。文献指引:Mac Lane《Categories for the Working Mathematician》§III.2–3(Yoneda 及其推论的标准清单)。

61实验

第二章 函子与自然变换实验:函子作用的程序枚举

实验目的。在最小的玩具范畴——2 元素链与 3 元素链(薄范畴:函子=保序映射)——程序枚举全部函子、复合封性与 Yoneda 读数,让本章三个抽象概念各自交出一份可复算的数字。

from itertools import product

def mono(f):                       # 薄范畴(偏序集)上:函子 = 保序映射
    return all(f[i] <= f[i+1] for i in range(len(f)-1))

up = [f for f in product(range(3), repeat=2) if mono(f)]   # P(2链) -> Q(3链)
dn = [f for f in product(range(2), repeat=3) if mono(f)]   # Q(3链) -> P(2链)
print('P->Q: 9 个映射里函子', len(up), '个;Q->P: 8 个里', len(dn), '个')
print('up 的 Hom(0,1) 像:', [f for f in up])
comp = [tuple(g[x] for x in f) for g in dn for f in up]    # g∘f : P -> P
print('复合 g∘f 共', len(comp), '个,保序?', all(mono(c) for c in comp))
H = (1, 1)                          # 可表 Hom(0,-) 的薄编码:处处恰一支箭头
for F in [f for f in product((0, 1), repeat=2) if mono(f)]:
    cnt = len([1 for a0 in ([1] if F[0] == 1 else [])
                 for a1 in ([1] if F[1] == 1 else [])])
    print('F =', F, ' |Nat(H,F)| =', cnt, ' |F(0)| =', F[0],
          '->', 'OK' if cnt == F[0] else 'BAD')

实跑输出。

P->Q: 9 个映射里函子 6 个;Q->P: 8 个里 4 个 up 的 Hom(0,1) 像: [(0, 0), (0, 1), (0, 2), (1, 1), (1, 2), (2, 2)] 复合 g∘f 共 24 个,保序? True F = (0, 0) |Nat(H,F)| = 0 |F(0)| = 0 -> OK F = (0, 1) |Nat(H,F)| = 0 |F(0)| = 0 -> OK F = (1, 1) |Nat(H,F)| = 1 |F(0)| = 1 -> OK
读数一(函子稀有)。9 个映射只有 6 个配称函子(保序)——「保结构」是真实约束,不是空话;方向反着来更严:8 个里只剩 4 个。函子的数量由源与目标的「形状」共同决定。
读数二(复合封闭)。24 个逐对复合全部保序——函子类对复合封闭,Cat 是货真价实的范畴(2.4 的程序版证词)。
读数三(Yoneda 薄版)。三个自函子上逐一清点自然变换:|Nat(H, F)| 恰等于 |F(0)|——「探针读数=关系读数」在 2 链玩具上完全对拍(2.10 的数值预告)。
62格物札记

第二章 函子与自然变换〖札记〗珠算口诀与函子复合

〖札记〗珠算口诀与函子复合。

珠算的口诀体系是一套精致的「映射语言」:「三下五除二」把「见三」这一状态确定地映射为「拨珠动作」,口诀接口诀就是映射接映射——复合。更妙的是口诀的普适性:同一句「三下五除二」,不管珠盘上其他档是什么数、不管这道题是加是减,动作照旧——口诀与状态之间的对应不挑场合。这正是自然性的直觉内核:对应关系对一切对象用同一配方,换舞台不换规则。

《九章算术》的术文结构同样自觉:「术曰」之间互相引用,上一术的输出是下一术的输入——「今有术」之下,粟米、衰分、均输诸章的术皆「相生」,刘徽注谓之「术苟有据此以设问者,皆可广用」——方法一经写成复合安全的形状,就自动获得全域适用性。函子公理(保复合、保单位)不过是把这份手艺写成公理:翻译接翻译还是翻译,恒等翻译原地不动。

带走一句话:好的算法从来是函子——换题不换法,接题即复合。

图 2-13 珠算口诀:复合与自然的古老直觉 「三下五除二」 口诀:机械复合 下一句口诀 作用在结果上 拨珠路径 与次序无关 复合 再复合 口诀的「自然性」:无论算盘多大、数多大, 口诀到动作的对应不换配方——正是函子公理的精神 《九章》术文「皆相生」:上一术的输出即下一术的输入——复合的古老自觉
图 2-13 珠算口诀是「保结构的映射」:一句口诀把珠盘状态映射到新状态,口诀接口诀即复合,且不依赖具体的数——这份「换数不换法」正是自然性的民间版本。
63速查

第二章 函子与自然变换第二章速查表

第二章速查表(一页备翻)。

条目定义 / 陈述出处
函子对象↦对象、态射↦态射;保复合、保单位2.1
反变函子(g∘f) ↦ Ff ∘ Fg(次序倒)2.3
Cat范畴(对象=小范畴、态射=函子)2.4
自然变换分量 αA: FA → GA,对每支 f 方块交换2.5
自然同构每分量皆同构的自然变换(记 ≅)2.6
函子范畴SetC:函子为对象、自然变换为态射2.7
切片范畴C/I:对象=箭头 X→I;态射保三角交换2.8
可表函子Hom(A, −) 或 Hom(−, A);泛性质=可表2.9
Yoneda 引理Nat(Hom(−, A), F) ≅ F(A)2.10
Yoneda 嵌入A ↦ Hom(−, A);忠实且满2.11
保同构函子保同构但不反射(ℤ/6 vs S3)例 2
自然性速记不挑基、不挑代表元 ↔ 自然思想卡

记号约定。≅ = 自然同构;≃ = 范畴等价;SetC 的上标记协变、C° 记反变源。

64讲义

第二章 函子与自然变换衔接讲义:通往泛性质——用箭头定义对象

第二章完成了什么。架起范畴之间的桥(函子),给桥立了规矩(自然变换),并证明桥的读数足以还原对象(可表与 Yoneda)。「由关系定义对象」不再是纪律,而是定理。

一个悬而未决的问题。可表函子 Hom(A, −) 把「A 与万物的关系」打成一包数据;那么「积」「直和」「核」这些具体构造,能否也用纯箭头语言一次性定义、让它们在一切范畴里自动获得对应版本?答案在第三章:泛性质与极限——一个句法统吃全部构造,而「万有之眼」将成为读数学的新习惯。
带着问题走的路标。第三章三步走:万有句法(3.1–3.7:积、余积、等化子、拉回、核)→ 统一理论(3.8–3.9:极限与余极限、存在性)→ 闭世界(3.10–3.12:指数对象、Cartesian 闭范畴、up to iso)。
图 2-14 衔接预告:从可表到泛性质 问:什么是一个「积」? 旧答案:装元素的袋子 (集合论式的构造) 新答案:被投影唯一刻划 「谁都能进,路径唯一」 (箭头语言的投标) 泛性质 可表函子说:这样的答案不止对「积」成立——对「核」「拉回」「指数」全成立 预告:一个句法统吃全部构造 = 极限与余极限(第三章 3.8) 带着一个问题走:为什么「唯一性」部分才是定义的心脏? 下一章终点:万有之眼——看见构造先问泛性质
图 2-14 第二章的终点是一句新话:构造可以由箭头关系唯一定义。第三章把这句话做成通用句法——泛性质与极限;第四章再证明这句法的终极形态是伴随。
第三章

泛性质与极限:由关系定义对象

为什么「积」在集合、群、拓扑里各长一副面孔,却是同一个定理?本章给出统一句法:泛性质——不构造对象,只指明它「被怎样的箭头唯一刻划」。积是一对投影的万有性,余积是翻转后的加法;Set 中的不交并把「和」还原成箭头。等化子与余等化子处理「相等」本身,拉回与推出把两者装进方框,核与余核是代数里的特例——线性代数的核、群论的正规子群,都在同一张图里。极限与余极限把这个句法推到任意图形:锥形图让「一图一极限」成为算法,Set 的完备性保证这类构造处处可做。指数对象与 Currying 把「函数的函数」变成对象,Cartesian 闭范畴由此成为逻辑的骨架——蕴涵即是指数。本章还交代 up to iso 的含义:万有对象唯一到同构,构造法可以千差万别。读完本章,将获得一双「万有之眼」:看见任何构造,先问它的泛性质。
页型节奏:导引 → 讲义(概念 · 定理 · 证明 · 一步一图)→ 例题 → 习题 → 地图 · 小结 · 思想卡 · 挑战 · 实验
65导引

第三章 泛性质与极限:由关系定义对象第三章导引:积为什么不由元素定义

先出一道冷静的题:什么是「两个集合的积」?会脱口而出——把元素摆成有序对。可再追一句:「有序对」本身是什么?数学家 Kuratowski 的答案是 (a,b) = {{a}, {a,b}}——一个奇怪的套盒。定义合法,却与直觉全然脱节:我们关心的从来不是这对括号怎么搭,而是那句更朴素的话——给出对,就能取第一分量、取第二分量;给出两个分量,就唯一还原出对。

把括号丢掉,剩下的是两句行为承诺:两条投影 π1、π2,加上「任何一对映射都唯一地经过它分解」。本章的全部主角——积、余积、等化子、拉回、极限、指数——都是这个句式的变奏。它们统称泛性质(universal property):不描述对象「是什么」,只立法规定它「如何与万物相处」。

Set:笛卡尔积 Grp:直积 Top:乘积拓扑 同一张万有合格证:π1​、π2​ 加「唯一分解」
图 3-1 三个范畴里的「积」元素长相各异——集合的对子、群的逐点乘法、拓扑的开集网——但万有合格证一模一样。定义在关系,不在元素。

本章的航线:先立总纲(投标句式),再依次拆解积与余积(第 67–69 页)、等化子与拉回(第 70–72 页),然后合拢为极限(第 73–74 页);最后两级台阶通向逻辑——指数与 Cartesian 闭范畴(第 75–76 页),并以「up to iso」收束全章(第 77 页)。暗线依旧:结构先于个体。

66讲义

第三章 泛性质与极限:由关系定义对象3.1 泛性质总纲:用箭头「投标」

泛性质有一个统一的语法模板,像一场公开招标:出题人写下一份测试——「对每个竞争者,要求一条兼容箭头」;中标者是那个让测试有且仅有唯一解的对象。

泛性质(模板)。求对象 X 连同一批数据(如箭头 π1, π2),使得:对每个携带同样数据的竞争者 Q,存在唯一的箭头 Q → X(或反向),使整个图交换。∎

「对每个……存在唯一」是万有性的灵魂:存在,保证中标者不缺席;唯一,保证它不敷衍——解与解之间自动 compatible,逼出同构(第 77 页)。最朴素的两个泛性质已在第一、二章见过:终对象(每个对象到它恰有一条箭头)与始对象(从它到每个对象恰有一条)。它们是模板的零阶版本——竞争者不带任何额外数据,测试只剩一条箭头。

X Q Q Q Q 唯一! 唯一! 中标者:一切竞争者都经它分解,且分解唯一
图 3-2 投标句式:灰色竞争者各带同样数据应试,金色中标者 X 使所有虚线(分解箭头)存在且唯一。虚线唯一,是万有性的牙齿。

用箭头的语言重述:「映射进 X 的方式」与「竞争者的合法数据」一一对应。Hom(Q, X) ≅ {Q 上的合法数据}——这句话在可表函子(第 49 页)里已见过一次,本章它将以「极限函子的可表性」卷土重来(第 90 页挑战)。

67讲义

第三章 泛性质与极限:由关系定义对象3.2 积:一对投影的万有性

第一主角登场。积的投标书只要求两份「读取权」:第一分量、第二分量。

积。范畴 C 中对象 A, B 的积是三元组 (P, π1: P → A, π2: P → B),使得对任意 Q 与任意 f: Q → A、g: Q → B,存在唯一箭头 ⟨f,g⟩: Q → P 使

π1 ∘ ⟨f,g⟩ = f, π2 ∘ ⟨f,g⟩ = g。∎

A B P π1​ π2​ A B Q f g ⟨f,g⟩ 唯一 下:竞争锥 上:中标锥
图 3-3 积的万有性:任何「到 A、到 B 的一对映射」(下锥)都唯一地经过积 P 分解(金色虚线)。⟨f,g⟩ 读作「把两条路捆成一条」。

Set 里验票:A × B 为笛卡尔积,π1(a,b) = a;给 f, g,令 ⟨f,g⟩(x) = (f(x), g(x))——存在无疑;唯一性一句话说完:若 h 也满足两条方程,则 h(x) 的两个分量被钉死为 f(x) 与 g(x),故 h = ⟨f,g⟩。

用 Hom 集压缩成一行,积就是:Hom(Q, A × B) ≅ Hom(Q, A) × Hom(Q, B)——「进积的映射」恰是「一对映射」。映射集合本身做了一次积,这是泛性质自带的镜像(第 75 页将把它升级为指数定律)。

顺手收纳两个约定:三元积 A × B × C 由两步二重积归纳得到,万有性照抄;零个对象的积=终对象——没有任何投影要满足,只剩「从任何处恰一箭头」。终对象由此获得新身份:空积。

68讲义

第三章 泛性质与极限:由关系定义对象3.3 余积:翻过来就是加法

对偶原理第二次开工(第一次在第 14 页):把积的定义里所有箭头掉头,「存在唯一分解」原样保留,得到的就是余积。

余积。对象 A, B 的余积是三元组 (S, ι1: A → S, ι2: B → S),使得对任意 Q 与任意 f: A → Q、g: B → Q,存在唯一箭头 [f,g]: S → Q 使

[f,g] ∘ ι1 = f, [f,g] ∘ ι2 = g。∎

A B S ι1​ ι2​ A B Q f g [f,g] 唯一 上:中标余锥 下:竞争余锥
图 3-4 余积=积的镜像:内含映射 ι1, ι2 打头,任何「从 A、从 B 出发的一对映射」都唯一地经 S 汇流(红色虚线)。[f,g] 读作「按来源分道」。

Set 里验票:余积是不交并 A ⊔ B。ι1, ι2 把两块各自装进左半、右半;[f,g] 在左半用 f、右半用 g 分段定义——唯一性由「每个点必有唯一来源」保证。基数账本顺势对上:|A ⊔ B| = |A| + |B|,而 |A × B| = |A| · |B|——余积是加法的结构化身,积是乘法的结构化身,范畴论把小学算术的两个动作升格为两种「相处方式」。

范畴不同,化身不同:Ab 的余积是直和 A ⊕ B(分量各自运算);Grp 的余积是自由积 A ∗ B(两群字母交替约化,自由性由此而来——第四、五章「自由构造」的直感预存);Pos 的余积是上界之最的离散并。同一张投标书,各范畴交出自己的答卷——这正是「由关系定义」的深意。

69讲义

第三章 泛性质与极限:由关系定义对象3.4 Set 中的积与不交并

泛性质的价值在「验票」中显影。本页把积与余积在 Set 里的验票完整走一遍,往后各范畴的同款论证可以照抄骨架。

积的存在与唯一(Set)。① 构造:A × B = {(a,b)},投影取分量。② 存在:任何 f: Q → A、g: Q → B,令 ⟨f,g⟩(x) = (f(x),g(x)),两条方程立验。③ 唯一:若 h: Q → A × B 也满足 π1∘h = f、π2∘h = g,则 h(x) = (f(x),g(x))——对即唯一。∎

余积的存在与唯一(Set)。① 构造:A ⊔ B = ({0}×A) ∪ ({1}×B)——左半贴标签 0、右半贴标签 1,即便 A, B 有公共元素也不相撞。② 存在:[f,g](0,a) = f(a),[f,g](1,b) = g(b)。③ 唯一:每个点的来源(左或右)被 ι1, ι2 钉死,无自由度。∎

积 A × B余积 A ⊔ B
数据投影 π1, π2(向外读)内含 ι1, ι2(向内装)
万有性一对 f,g 经 ⟨f,g⟩ 唯一分解一对 f,g 经 [f,g] 唯一汇流
Set 实现有序对集合贴标签不交并
基数语义乘法 |A|·|B|加法 |A|+|B|
对偶方向箭头进积箭头出余积

警惕一个误区:「积」不等于「笛卡尔积」。笛卡尔积只是 Set 这位投标人交上的答卷;换到 Grp,答卷要附带乘法——逐点运算 (a,b)·(a',b') = (aa',bb'),投影自动成为同态。结构不是白送的:它恰是「让投影保结构」的最省方案。泛性质只指路,不代劳——各范畴自备砖瓦。

检索旧知:相邻领域的乘积拓扑、相邻领域的直和,都是各范畴对同一张投标书的应答。回头看「乘积拓扑为什么取最细使投影连续」——那不是约定,是万有性的最小承诺。

70讲义

第三章 泛性质与极限:由关系定义对象3.5 等化子与余等化子

第二对主角处理「两条路线的分歧」。给定平行的一对映射 f, g: A → B,问:哪些点让它们重合?

等化子。f, g: A → B 的等化子是 (E, e: E → A),满足 f ∘ e = g ∘ e,且对任何 h: X → A 使 f∘h = g∘h,存在唯一 u: X → E 使 e∘u = h。∎

A B f g E e e 落点恰使两条路线重合——「共识区」的准入印章
图 3-5 等化子:e 的像落在 f 与 g 的重合处;万有性说它是「最大的共识区」——任何已达成共识的 h 都必须经 e 唯一分解。

Set 验票:E = {x ∈ A : f(x) = g(x)},e 为内含。万有性翻译成大白话:凡是让两条路线重合的映射,像必落在共识区里——一句话的证明。

余等化子是它的镜像:求 q: B → Q 使 q∘f = q∘g,且对一切 h: B → X 满足 h∘f = h∘g 者,h 必经 q 唯一分解。Set 里:Q 是把 f(x) ~ g(x) 逐点粘合后再取等价闭包的商集——「把分歧焊死」。Ab 里更干净:余等化子就是商掉 im(f − g)(第 84 页习题亲手算)。

一句口诀:等化子=「让两条路重合的最大来源」,余等化子=「把两条路的分歧焊死的最小目标」。一个收缩来源,一个焊接目标,对偶成对。

71讲义

第三章 泛性质与极限:由关系定义对象3.6 拉回与推出

把「重合」从一维升到二维:两条映射 f: A → C、g: B → C 指向同一目标,求「它们相遇之处」。

拉回。f: A → C 与 g: B → C 的拉回是 (P, p1: P → A, p2: P → B),满足 f∘p1 = g∘p2,且对任何满足同款的 (Q, q1, q2),存在唯一 u: Q → P 使两条三角同时交换。∎

P A B C p1 p2 g f 方框交换:f∘p1​ = g∘p2​
图 3-6 拉回=把交换方框补全左上角的万有补全:P 连同 p1, p2 是所有补法中最省的一种——任何别的补法都唯一地经它分解。

Set 验票:P = {(a,b) ∈ A × B : f(a) = g(b)}——「在 C 处对上号的配对」。拉回因此别名纤维积:固定 b,p2 的纤维 {(a,b)} ≅ f−1(g(b))——沿 g 搬运 f 的纤维,几何家的「限制在一张叶子上看」由此有了代数身份。

推出是拉回的镜像:把 f: C → A 与 g: C → B 的像焊接成最省的目标。Set 里:不交并 A ⊔ B 再商掉 f(c) ~ g(c)——「沿公共来源粘连」。拓扑学的粘合空间(把两块布沿缝线缝起)正是 Top 里的推出。

检索旧知:两个子集 A, B ⊆ X 的交 A ∩ B,正是两条内含映射沿 X 的拉回。「交是重合处」从比喻升格为定理。

72讲义

第三章 泛性质与极限:由关系定义对象3.7 核与余核:代数的拉回

线性代数与群论里如雷贯耳的「核」,在范畴语言里只是拉回的一个特例——代数的两条腿终于并到范畴的骨架上。

核与余核。在含零对象的范畴(如 Ab、Vec、Grp)中,f: A → B 的核是 f 沿零映射 0: 0 → B 的拉回;余核是 f 沿 0: A → 0 的推出。∎

K A 0 0 B k ! f 0 f∘k = 0:像落在零点 万有性:K 是「最大的」这种来源
图 3-7 核=沿零映射的拉回:方框 0 → B 与 A → B 的万有补全。任何使 f∘h = 0 的 h 都唯一地经过 k 分解——「落进核里的都从核里来」。

Ab(或 Vec)里核名实相副:ker f = {a : f(a) = 0},万有性正是「若 f∘h = 0 则 h 过 ker f 分解」这条例行引理。余核对偶地是 B/im f——「把像焊成零」。两个极端(核=失真的全部来源,余核=失真的全部后果)夹住 f,同调代数的第一块砖就是它们的接力:

HA 接口:相邻领域的短正合列 0 → ker f → A → im f → 0 与 0 → im f → B → coker f → 0,如今每一段都是一次拉回或推出。范畴论没有发明新对象,它把旧对象点名归队——归队之后,第 19 页 Hom 双变量函子预告的 Ext/Tor 才有统一的舞台。顺带:第一同构定理 A/ker f ≅ im f,用余等化子的万有性即可一句话推得(本章习题课(二)第 3 题验证)。

73讲义

第三章 泛性质与极限:由关系定义对象3.8 极限与余极限:锥形图

积、等化子、拉回——三员大将其实是同一位将军的三次点名。把他们统一起来的,是本章的定海神针:极限。

统一步骤分两拍。第一拍:形状。把「参与竞争的箭头图样」抽象成一个小的形状范畴 J——散落三点(无形箭头)对应积,平行一对对应等化子,沙发四点对应拉回。第二拍:图。D: J → C 是 C 里按形状摆好的对象与箭头。

锥与极限。一个锥是对象 C 连同一族箭头 λj: C → D(j)(j 取遍 J 的对象),使得沿 J 的每条箭头都交换:D(α) ∘ λi = λj。极限是万有锥:任何别的锥都唯一地经过它分解。余极限对偶(锥倒扣成伞)。∎

C A B 散两点 → 积 C 平行对 → 等化子 C 沙发 → 拉回 形状决定影子:图长什么样,极限就是那样的「最省锥顶」
图 3-8 三种形状,三次点名:同一句万有性(金色虚线皆唯一分解),因形状不同而分身为积、等化子、拉回。极限=一切锥中的「终锥」。

极限不是新的应考者,而是把先前所有考题装订成册:形状里有多少约束,极限就满足多少约束,且满足得最省。极限的方向朝内(箭头进锥顶),余极限朝外(箭头出伞底)。离散形状(无箭头)的极限是积,空形状的极限是终对象——一切旧识在统一的语法里各归其位。

74讲义

第三章 泛性质与极限:由关系定义对象3.9 极限的存在性:Set 的完备性

极限处处可求吗?Set 给出响亮的「是」——而且只需两块旧砖。

定理(Set 完备)。任何小形状 J 的图 D: J → Set 都有极限。

证(积 × 等化子)。先取大积 ∏j D(j)——把每个 j 处的对象各放一份。再对 J 的每条箭头 α: i → j,造两条到积的映射:一条取第 i 分量后沿 D(α) 送出,一条直接取第 j 分量。令 L 为这全部平行对的公共等化子:

L = {( xj )j ∈ ∏ D(j) : D(α)(xi) = xj 对每条 α}。

——「沿形状走得通」的族之全体。锥的各分量取自族本身,交换性即成员资格;万有性由积与等化子的万有性逐级传递:任何竞争锥先散进大积,再因兼容被等化子接住。∎

证明的骨架值得背下来:「全体候选 × 逐条约束」——先不设防地取积,再用等化子筛掉不合格的。任何「带约束的选择」在 Set 里都这样两步走,极限不过是给它起了名字。对偶地,Set 也余完备(余积+余等化子造一切余极限)。

数字小演算(手工走一遍公式):平行对 f, g: A → B 的极限,按公式是 A × B 的子集 {(a,b) : f(a) = b 且 g(a) = b} ≅ {a : f(a) = g(a)}——果然就是等化子;沙发形状算出的是 {(a,b) : f(a) = g(b)}——果然就是拉回。统一不是口号,是可执行的程序(第 91 页实验让 Python 亲跑一遍)。

更大的世界:Grp、Top、Vec 同样完备(遗忘函子右伴随——第四、五章的伏笔——会把 Set 的极限原样搬运)。极限的存在性,从此是「查表题」而不是「发明题」。

75讲义

第三章 泛性质与极限:由关系定义对象3.10 指数对象与 Currying

新问题:把「函数」本身当对象。两参数函数 f: A × B → C,能否等价地看成「一参数函数、返回函数」?

指数对象。对象 B、C 的指数 CB 是对象 CB 连同求值映射 ev: CB × B → C,使得对任何 f: A × B → C,存在唯一 λf: A → CB 使 ev ∘ (λf × idB) = f。∎

A B C 两参数直进 f B CB(函数仓库) λf:先入库取函数 ev:再配参数 两条管道输出相同:Currying
图 3-9 Currying=把「两参数直进」改走「先取函数、再配参数」的管道;两条管道可互相还原,且还原方式唯一——唯一性又是万有性的牙齿。

Set 验票:CB 就是函数集 {B → C},ev(φ,b) = φ(b);λf(a) 是「一元函数 b ↦ f(a,b)」。万有性写成同构即指数定律:

Hom(A × B, C) ≅ Hom(A, CB)

——映射进「函数仓库」恰是「两参数映射」。这个名字致敬逻辑学家 Curry:他三十年代就把两参数函数拆成一串一参数函数;编程语言里的柯里化、Python 的 lambda 与偏函数,都是这条万有性的工程化身。第六章 Curry–Howard 对应里,它将升格为「蕴含即函数」的逻辑骨架(第 76 页立刻预演)。

注意 Set 不是处处能做「函数当对象」:CB 要对一切 A 万有,这在 Set 成立(函数集足够大),在部分范畴(如某些预序框架)会缺席——缺席与否,本身成为范畴的身份证,见下一页。

76讲义

第三章 泛性质与极限:由关系定义对象3.11 Cartesian 闭范畴:逻辑的骨架

把积、终对象、指数三件套打包,就得到一张含金量极高的「身份证」。

Cartesian 闭范畴(CCC)。具有有限积、终对象、且任意两对象 B, C 都有指数 CB 的范畴。∎

Set 是 CCC;更妙的是,薄 CCC(任何 Hom 集至多一个箭头)恰好是Heyting 代数——直觉主义逻辑的代数化身。对照表一出,逻辑与算术在同一条生产线上:

逻辑(命题)CCC(对象与箭头)Set 实现
「P 与 Q」∧积 P × Q有序对
真命题 ⊤终对象 1单点集
「P 蕴含 Q」→指数 QP函数集
假言推理 P, P→Q ⊢ Q求值 ev: QP × P → Q代入得值
证明(构造性)箭头 1 → P选一个证据

读一遍最妙的一行:假言推理(modus ponens)=求值映射。「由 P 与 P→Q 得 Q」这条千年推理规则,在 CCC 里就是把函数配上参数按下扳机——逻辑的最小动作,原来是千万人每天写的 ev。而「证明=箭头」一栏,正是第六章 Curry–Howard 对应(命题即类型、证明即程序)的预告片。

还有一层伏笔:CCC 只保证「有 →」这类构造,不保证排中律 P ∨ ¬P——「或」在薄 CCC 里是并不总存在的并。逻辑里被直觉主义挡下的排中律,在范畴这边成了「未必存在的余积」。这不是缺陷,是更精细的地图:哪些推理要资源、哪些要构造,第六章拓扑斯一节(第 158 页)继续深挖。

检索旧知:命题演算里的「P → Q 有证明 = Q 可从 P 构造」,与指数定律 Hom(1 × P, Q) ≅ Hom(1, QP) 逐字对译——Currying 在逻辑侧的回声。

77讲义

第三章 泛性质与极限:由关系定义对象3.12 泛性质的存在与唯一:up to iso

泛性质签发的证件始终写着两行:存在,与唯一。本页把「唯一」铸成定理——它将贡献第六章「up to iso」世界观的全部底气。

定理(积的唯一性)。若 (P, π1, π2) 与 (Q, ρ1, ρ2) 都是 A, B 的积,则存在唯一同构 φ: P → Q 保持投影:ρ1∘φ = π1,ρ2∘φ = π2。

证(三行)。① 积的万有性把 (π1, π2) 装进 (Q, ρ1, ρ2),得 φ = ⟨ρ1,ρ2⟩: P → Q;反向得 ψ = ⟨π1,π2⟩: Q → P。② 考察 ψ∘φ: P → P:它与 idP 都满足「投影后为 π1, π2」,而 (P, π1, π2) 自身的万有性说这样的箭头唯一——故 ψ∘φ = idP;同理 φ∘ψ = idQ。③ φ 与 ψ 互逆,φ 为所求同构;其唯一性:任何保投影的同构都在万有性的唯一分解之列。∎

P Q A B A B φ 唯一(双向虚出实回) π1​, π2​ ρ1​, ρ2​
图 3-10 两份答卷(P 与 Q)彼此唯一同构且兼容投影——「应答方式可以不同,相处之道只有一个」。

这三行证明是全章最值得咀嚼的文本:唯一性不是附加彩蛋,而是用来证同构的引擎——「任何两个都一样」由「分解唯一」一步带出。线性代数里「两组基之间过渡矩阵唯一可逆」、群论里「循环群生成元的像决定同构」,都是这一句的旧相识。

于是「由关系定义对象」获得完整含义:泛性质不给出任何一个具体的 P,却把所有合格的 P 钉死到同构。既然一切后续定理对同构一视同仁,「选哪一份答卷」便无关紧要——对象即同构类,个体让位于结构。这句话的哲学分量,第六章(三)再展开。

一个 terminology 速记:「泛性质的存在与唯一」在文献里常写作「the universal object, unique up to unique isomorphism」——「唯一的,直到唯一的同构」。两处「唯一」各司其职:前者靠存在性,后者靠分解唯一性。

78讲义

第三章 泛性质与极限:由关系定义对象3.13 图形范畴:极限的计算法

一句话直觉。极限不是新构造,而是给任意图形配顶点:画什么图,就有什么极限——计算极限=先画对图,再解万有方程。

定义(图形范畴)。小范畴 J 称图形形状,函子 F: J → C 称一张 J 形的图。图 F 的锥是对象 L 加上一族态射 λj: L → Fj(j 跑遍 J 的对象),使每条边 u: j → j′ 满足 Fu ∘ λj = λj′。万有锥(到任何锥有唯一分解)的顶 lim F 即极限;箭头翻转同法得余极限 colim。

对照表(形状 → 极限)。无边两点图 → 积;一点图 → 该对象自己;平行箭头对 → 等化子;人字图 a→c←b → 拉回;离散图(n 个孤立点)→ n 重积。第三章前半的全部构造由此「一份句法各自发货」。
计算的三步法。① 把构造画成 J 形图(对象几个、边几条);② 写下锥的万有方程(任何候选顶唯一分解);③ 在具体范畴里解方程——Set 里逐元素解、Ab 里逐生成元解。第 91 页实验页在 Set 里对三个图形各解一遍。
余极限的镜像表。无边图 → 余积;平行对 → 余等化子;人字图 → 推出。凡此皆对偶原理(1.14)的白拿件——证明一个方向,另一个方向照镜子。
图 3-11 一图一极限:人字图的锥 a b c J = 人字图(三条边) 两条边 L Fa Fb 锥形三条腿 极限 L = 万有锥顶 等化子=「两条边相等」的人字图极限;积=无边图
图 3-11 极限的计算法:给图形 J(如人字图 a→c←b),取 J 的像(F a, F b, F c 与两条边)上的一只「锥」——顶 L 加三条腿;万有锥的顶就是极限。等化子是「两条边相等」的极限,积是无边图的极限——同一个句法、不同的图形。
79讲义

第三章 泛性质与极限:由关系定义对象3.14 连通极限与有限极限

一句话直觉。极限家族太大,需要分层管理:连通极限(图是连成片的)与有限极限(图只有有限个对象与边)是两个最常用的档位。

定义(连通极限)。图形 J 连通(把对象当点、边当线,图连成一片)时,J 形极限称连通极限。典型:等化子、拉回、核。有限极限:J 的对象与态射皆有限。有穷积、等化子、拉回都在此档。能造一切有限极限的范畴称有限完备;Set、Grp、Top、Vec 全部有限完备。

生成定理(有限极限的积木)。一个范畴有全部有限极限 ⟺ 它有终对象+全部二元等化子(或等价地:终对象+全部拉回)。「积木定理」把无穷多条公理压成两条——验证完备性只需检查两件小事。
连通性管什么。连通极限与有限积的交换有微妙账目:过滤范畴(filtered,任何有限图可延展成锥)的余极限与有限积交换——这是「集合论直线=过滤余极限」的根源,第六章拓扑斯语义再相见。眼下记住:连通/过滤是控制交换律的旋钮。
应用抽查。① Top 里核(等化子)存在、上核存在——拓扑范畴有限完备且有限余完备;② 场上的向量空间范畴里,一切有限极限余极限皆存在且可显式计算——线性代数是有限完备性的免费样板间;③ 偏序集范畴里,极限=最大下界、余极限=最小上界——完备格的语言。
80讲义

第三章 泛性质与极限:由关系定义对象3.15 数系构造中的泛性质

一句话直觉。数系的每一次扩张——整数、有理数、多项式环、分式环——都可用泛性质一句话定义。定义换了读法,定理换了国籍。

整环的分式环(局部化的种子)。交换整环 R 与乘法封闭集 S:分式环 S-1R 由泛性质定义——「把 S 的元素变成可逆」的万有环映射 R → S-1R。ℤ ↦ ℚ(S = 非零整数)与多项式环的局部化是同一构造的两张脸——这正是第四章「平坦与局部化」的前奏(范畴论先给定义,交换代数再算细节)。
多项式环是自由对象。R[x] 的泛性质:给任何 R-代数 A 与元素 a ∈ A,求值映射 R[x] → A(x ↦ a)唯一存在。「多项式」= 自由对象 = 左伴随(第四章 4.4 的核心例子)——第一次有人说明「代入求值」是一个万有性质。
商与积。商群/商环/商空间由「万有满射」定义(余极限的人字图版本);直积由「万有投影」定义(极限的无边图版本)。同一对构造在 Grp、Ring、Top、Vec 里词同义同——第一章许诺的「一次定义处处生效」,至此全部兑现。
81讲义

第三章 泛性质与极限:由关系定义对象3.16 常见误读与澄清

一句话直觉。泛性质最大的坑不在定义本身,而在「用旧直觉偷读新定义」。五面墙钉在一张卡上。

墙一:把「存在」当「构造」。泛性质只保证万有对象存在且唯一到同构(3.12);它不给出构造算法。Set 里我们顺手造积,但同样的定义在没造出来之前只是「空头的万有承诺」。存在性由完备性定理(3.9、3.14)分范畴担保。
墙二:把「唯一」读成「唯一元素」。万有分解的唯一是态射层面的唯一——不是「积只有一个元素」。A × B 的元素可以很多;唯一的是「从任何锥顶出发的那条分解箭头」。
墙三:极限与「取到最小的」混淆。偏序集里极限=最大下界——「大」字方向初学常反。口诀:锥腿越多越难当,万有顶取「最贴近图」的那个;余极限镜像取「最贴近的上界」。
墙四:把 up to iso 当 up to equality。两个万有对象同构但不相等——写成 A × B = B × A 是记号懒散,严格写法是≅。第三章的定理全是同构级陈述。
墙五:忘了检查自然性。「对每个对象给一个构造」不够,构造还须在对象间相容(函子性)——第 58 页的 V ≅ V* 反面教材在极限世界同样生效:逐点存在 ≠ 极限函子存在。
82例题

第三章 泛性质与极限:由关系定义对象例题课(一):积与余积的构造

例 1.在 Set 中取 A = {0,1}、B = {a,b},写出积并验证万有性。

解。A × B = {(0,a),(0,b),(1,a),(1,b)},四点方阵,投影取第一、第二坐标。给定 f: Q → A、g: Q → B(如 Q = {∗},f(∗)=0、g(∗)=b),则 ⟨f,g⟩(∗) = (0,b)——万有性说它唯一:点 ∗ 的去向被两条投影方程同时钉死。∎

例 2.群范畴中求 ℤ/2 与 ℤ/3 的积,并连向中国剩余定理。

解。积为直积 ℤ/2 × ℤ/3(逐点加法),六元素。由 2 × 3 = 6 且两因子互素,同态 ℤ/6 → ℤ/2 × ℤ/3(1 ↦ (1,1))是同构——这正是中国剩余定理:一个模 6 的钟,同时看模 2、模 3 两只钟即唯一确定。泛性质视角:积的万有性说「进 ℤ/6 的同态」恰是「一对进 ℤ/2、进 ℤ/3 的同态」——CRT 是积的万有性在有限群上的年报。∎(第 84 页习题 5 把「唯一」补成完整证明。)

例 3.薄范畴 Pos 中,积与余积是什么?

解。预序范畴箭头 = ≤。「到 P 的一对箭头」即 x ≤ a 且 x ≤ b;万有性要求存在最大下界——积=下确界 inf{a,b}。对偶地余积=上确界 sup{a,b}。在 (ℕ, ≤) 上:inf = min,sup = max。有全部二元 inf/sup 的预序叫格——「薄 CCC 还要指数」,格论从此挂上范畴的车厢。∎

例 4.Ab 中 ℤ ⊔ ℤ(余积)是什么?Grp 中呢?

解。Ab 中余积是直和 ℤ ⊕ ℤ:[f,g](m,n) = m f(1) + n g(1) 唯一合法(加法可交换,两块互不干扰)。Grp 中余积是自由积 ℤ ∗ ℤ:两副生成元的交错字,无任何交换律可借——同一张投标书,交换律的有无交出两种答卷。∎

通法提示:积与余积的题先问三句——「箭头向哪边?」「万有性约束谁?」「这个范畴的砖是什么?」三问答完,构造自然落地。

83例题

第三章 泛性质与极限:由关系定义对象例题课(二):拉回的计算

例 1.Set 中 f: {1,2,3} → {0,1} 送 1,2 ↦ 0、3 ↦ 1;g: {x,y} → {0,1} 送 x ↦ 1、y ↦ 0。求拉回。

解。P = {(a,b) : f(a) = g(b)} = {(1,y),(2,y),(3,x)}——「0 对 0、1 对 1」的配对。投影 p1 取左、p2 取右;与 p2 的纤维对账:p2−1(y) = {(1,y),(2,y)} ≅ f−1(g(y)) = f−1(0) = {1,2} ✓。∎

例 2.把「核=沿零的拉回」算一遍:f: ℤ/6 → ℤ/3 为模 3 投像。

解。零映射 0: 0 → ℤ/3;拉回 {a : f(a) = 0} = {0, 3} ≅ ℤ/2。万有性验票:任何 h: T → ℤ/6 使 f∘h = 0,其像落在 {0,3} 内,唯一过 k: ℤ/2 ≅ {0,3} → ℤ/6 分解 ✓。∎

例 3.验证「交=沿包含的拉回」:A = 偶数、B = 3 的倍数,皆含于 ℤ。

解。拉回 {(a,b) : a = b} 恰好对出 A ∩ B = 6 的倍数——两条约束的交点,6 = 2 × 3 又见 CRT。∎

例 4.证明:等化子是拉回的特例——f, g: A → B 的等化子 ≅ ⟨id, f⟩ 与 ⟨id, g⟩: A → A × B 的拉回。

解。拉回的条件 ⟨id,f⟩∘p1 = ⟨id,g⟩∘p2 两投影对比即 p1 = p2 与 f∘p1 = g∘p2,合成恰为「过 A 且两条路重合」——与等化子万有性逐句相同。∎(极限统一性的第一枚铁证:第 74 页公式把它自动算出。)

通法提示:算拉回三步——「列出两条边的像 → 配对相等者 → 与纤维对账」。第三步最常被省略,而它恰是万有性的体检表。

84习题

第三章 泛性质与极限:由关系定义对象习题课(一):基本功

1.Set 中 Q = {0,1},f: Q → {a,b} 送 0↦a, 1↦b,g: Q → {x,y} 送 0↦y, 1↦y。写出 ⟨f,g⟩ 并逐点验证两条投影方程。

提示:⟨f,g⟩(0)=(a,y)、⟨f,g⟩(1)=(b,y)——每点由两条方程同时决定,体会「唯一」从何而来。

2.构造双射 Hom(Q, A ⊔ B) ≅ Hom(Q, A) × Hom(Q, B),并指出逆映射用了万有性的哪半句。

提示:正方向 h ↦ (h∘ι1, h∘ι2);逆方向就是 [f,g]——「存在」造逆,「唯一」证互逆。

3.在 (ℕ, ≤) 中求 {4, 6} 的积与余积;再问:若换成 (ℕ, | )(整除序)呢?

提示:≤ 序下 min/max;整除序下积=最大公约数、余积=最小公倍数——「乘法的两条路」在两种序里的化身,例题课(一)例 3 的姊妹题。

4.求 f(x) = x2 与 g(x) = x( ℝ → ℝ)的等化子,并用万有性语言复述为什么只取这两个点。

提示:x2 = x 的解 {0,1};「任何与两条路兼容的 h,像必落在共识区」——万有性是共识区的最大性证书。

5.用积的万有性证明:同态 ℤ/6 → ℤ/2 × ℤ/3(1 ↦ (1,1))是双射。(例题课(一)例 2 的欠账。)

提示:单=1 的像生成整群(6 阶),满=两分量同时非零的同态恰有 6 个——或直接用 CRT。泛性质视角:「进积」=「一对进」,Hom 集计数即得。

6.验证:Set 的终对象是任意单点集 {∗}、始对象是空集;并说明「终对象=空积、始对象=空余积」两句话各自对在哪。

提示:空积=「没有任何投影方程」,只剩「从任何处恰一箭头」;空余积对偶。第一、二章始终对象在此归队。

85习题

第三章 泛性质与极限:由关系定义对象习题课(二):进阶

1.模仿第 77 页定理,证明 A × B ≅ B × A(保投影的同构唯一)。

提示:两份「积答卷」互相唯一分解——第 77 页三行证明原样套用,唯一性引擎再启动。

2.证明等化子的万有性在 Set 中成立:E = {x : f(x) = g(x)},任何 h: X → A 使 f∘h = g∘h 必经 e 唯一分解。

提示:h 的像落在共识区是逐点的——u = h 取值即得;唯一性来自 e 是内含映射。

3.Ab 中求 f, g: ℤ → ℤ(1 ↦ 2 与 1 ↦ 0)的余等化子,并验证「第一同构定理」的特例。

提示:商掉 im(f−g) = ⟨2⟩,得 ℤ/2;q ∘ f = q ∘ g 即 2 ≡ 0——「把分歧焊死」的代数全身像。

4.Vec 中 f: ℝ2 → ℝ2 为 (x,y) ↦ (x,0)。求 ker 与 coker,并核对「核=失真的来源、余核=失真的后果」。

提示:ker = 纵轴 ℝ(被压没的方向),coker ≅ ℝ(没被照到的方向)——秩-零化度的范畴装裱。

5.证明纤维传递:拉回方框中 p2 在 b 处的纤维同构于 f−1(g(b))(例题课(二)例 1 已对过账,此处要一般证明)。

提示:双向构造映射并用方框交换性说明互逆——「在 C 处对上号」逐字翻译为集合语言。

6.用泛性质证明第一同构定理:设 f: A → B(Ab 中),则 A/ker f ≅ im f。

提示:商映射 q: A → A/ker f 满足 f∘k = 0,由余核万有性 f 过 q 唯一分解得 ḟ: A/ker f → B;再用 im 的万有性收紧到双射。两件万有武器各出一招。

86地图

第三章 泛性质与极限:由关系定义对象第三章知识地图

第三章 30 页的地形:一张投标书(泛性质)层层变奏,五组构造全部是它的化名。

泛性质总纲(p66–67) 积/余积(p67–69) 等化子(p70) 拉回/核(p71–72) 极限/余极限(p73–74) 指数/CCC(p75–76) up to iso(p77) 金色=投标句式的一贯主线 绿=构造群 红=统一与升级 蓝=出口
图 3-12 第三章地形:五组构造自投标书分岔,极限与指数各领一支,最终在「up to iso」合流——唯一性引擎把定义铸成定理。

三条「主线走法」:求全者走红色大支(p73–74 把前四格装订成册);对偶爱好者走绿色成对线(p67↔p68、p70 内对、p71↔p72,处处「翻箭头」);接口旅人走蓝色出口(p72 通相邻领域的核与余核;p76 通第六章逻辑——CCC 是 Curry–Howard 的前厅)。

学完本章再回看第一章图 1-16:那里的「函子(p41–43)」在中段运货,本章的「极限(p73–74)」在下游收货——下一章,运货与收货将在「伴随」处握手。

87小结

第三章 泛性质与极限:由关系定义对象第三章小结(上):万有句法

九条带走:

① 泛性质=投标句式:对每个竞争者,存在唯一分解——存在与唯一两条腿,缺一不可。

② 积是一对投影的万有性,Hom(Q, A×B) ≅ Hom(Q,A) × Hom(Q,B);Set 的答卷是笛卡尔积。

③ 余积=积的箭头镜像;Set 的答卷是不交并;Ab 直和、Grp 自由积——同一张标书,各范畴各交各卷。

④ 基数语义:余积是加法的化身,积是乘法的化身;薄范畴里积余积化身为 inf/sup(格)。

⑤ 等化子=让平行二路重合的最大来源;余等化子=把分歧焊死的最小目标。

⑥ 拉回=交换方框的万有补全(Set:对上号的配对);交、核都是它的特例;推出对偶(粘合)。

⑦ 极限把积与等化子装订成册:形状决定影子;Set 完备——「大积 × 筛选」两步造一切极限。

⑧ 指数与 Currying:Hom(A×B,C) ≅ Hom(A,CB);CCC 里假言推理=求值,证明=箭头。

⑨ up to iso:万有对象的唯一性由分解唯一性一步带出——定义即定理,个体让位于结构。

88小结

第三章 泛性质与极限:由关系定义对象第三章小结(下):极限的演算

正面清单(下半章)。

图形与极限。一图一极限:形状 J 的图配万有锥;等化子、拉回、积是三个特例(3.13)。
完备性账本。有限完备 ⟺ 终对象+二元等化子(积木定理);Set/Grp/Top/Vec 全部有限完备;连通/过滤旋钮控制交换律(3.14)。
数系的应用。分式环=「让 S 可逆」的万有映射;多项式环=自由对象(求值即万有);商与积的泛性质跨范畴同词同义(3.15)。
五面墙。存在≠构造;唯一在态射层面;偏序方向(最大下界);≅ 不是 =;逐点存在 ≠ 函子性(3.16)。

与上半章的接口。上半章(3.1–3.12)立泛性质句法与四大主角(积、余积、等化子、拉回)并抵达 Cartesian 闭范畴;下半章把句法推广到任意图形、验证存在性、并把句法用回数系构造。至此「万有之眼」配备齐全——但每一次「求万有」都在重复同一种模式:一对互相校准的构造。下一页衔接讲义把模式显影:伴随。

89思想卡

第三章 泛性质与极限:由关系定义对象思想卡:存在由万有保证

「存在由万有保证。」

古典定义靠构造:给出一张图纸,照着盖出 A × B。泛性质换了姿势:先立法,后验票——「谁能让一切竞争者唯一分解,谁就是积」。存在性保证中标者不缺席;唯一性保证中标者之间无从分辨(第 77 页三行证明)。于是「是什么」被「如何与万物相处」取代:我们没有盖出任何一栋房子,却把整片街区的地籍图一次画完。

这是数学里的法治精神:不指定谁当选,只规定当选者必须满足什么。它带来一种崭新的「存在」观——存在的意义不是「在某个仓库里被找到」,而是「在与全部他者的关系网中占定一个位置」。第六章(三)将把这句判词写进哲学:结构先于个体,而且结构先行担保了个体的存在。

对照第 34 页思想卡(「对象是它的关系之总和」):那一页说「知其关系即知其对象」(Yoneda,认识句);本页说「定其关系即得其对象」(泛性质,存在句)——一知一得,合成本册暗线的两联。

90挑战

第三章 泛性质与极限:由关系定义对象挑战:极限函子的可表性

本页挑战把第 49 页的「可表函子」与第 73 页的「极限」焊接起来——这一焊,就是第四、五章「伴随」的前身。

命题。对任意小形状 J、图 D: J → C(设极限存在),有同构

Hom(C, Lim D) ≅ Lim( Hom(C, D(−)) ),对一切 C。

读法。左边:从 C 进万有锥的箭头。右边:把 D 逐点换成 Hom 集后再取一次极限——「锥的族」。Hom(C,−) 好像一台投影机:把 C 里的极限原样投成集合层面的极限。

三个实验台阶。① 写出右边极限的元素是什么样:一族 xj ∈ Hom(C, D(j)),沿每条 α: i → j 满足 D(α)∘xi = xj——这不就是「锥」的定义逐字重抄?② 把族的全体分量拼成一条箭头 C → Lim D(用极限的万有性正向走);反向用投影拆箭头为族(用投影方程);③ 验证两向互逆——「唯一分解」与「投影决定」各出半力。∎

为什么值得挑战。此命题说:极限函子可表——「进极限的箭头」这个集合函子,恰好由对象 Lim D 表示(第 49 页可表函子的 C ↦ Hom(A,C) 换了方向兄弟)。可表性是范畴论的「橡皮图章」:一旦盖上,Yoneda(第 50 页)的全部火力立即可用。第六章(二)「Yoneda 的认识论」将把今天这枚图章解释成一句认识论判词:认识一个极限,只需认识所有打进它的箭头。

checkpoint:若完成了三个台阶,顺手验证特例 J 为散两点——命题退化为 Hom(C, A×B) ≅ Hom(C,A) × Hom(C,B),第 67 页的镜像公式。

91实验

第三章 泛性质与极限:由关系定义对象实验:锥图极限的实例计算

让 Python 当一回验票员:给它一个平行对 f, g 与一个候选等化子,程序枚举所有竞争者,验证万有性——「对每个……存在唯一」逐字落地。

from itertools import product

# 图:f, g : A → B(平行对)
A = [0, 1, 2, 3]
B = [0, 1]
f = {0: 0, 1: 0, 2: 1, 3: 0}
g = {0: 1, 1: 0, 2: 1, 3: 1}

# 候选等化子:共识区 E 与内含 e
E = [a for a in A if f[a] == g[a]]          # 应得 [1, 2]
e = {a: a for a in E}                        # 内含 e: E ↪ A

def arrows(src, dst):
    """枚举 src → dst 全体映射。"""
    return [dict(zip(src, vals)) for vals in product(dst, repeat=len(src))]

def check():
    for h in arrows(A, A):                       # 每个竞争者 h: A → A
        if all(f[h[a]] == g[h[a]] for a in A):   # 兼容(f∘h = g∘h)
            us = [u for u in arrows(A, E)
                  if all(e[u[a]] == h[a] for a in A)]   # 分解 e∘u = h
            if len(us) != 1:                     # 存在且唯一失守
                return False
    return True

print("E =", E)
print("万有性(存在且唯一分解):", check())

预期输出:E = [1, 2],万有性 True。程序把「对每个竞争者 h(256 个映射里兼容的那些)……分解 u 唯一」逐条数过——泛性质第一次被枚举出来。

改造任务。① 把 E 换成任何真子集(如 [1]),check 应报 False——万有性会揪出「太小」的冒牌等化子;② 加一个更大的候选 E'(含不兼容点),看兼容性条件先把它筛掉;③ 把平行对换成沙发图(两条边),照第 74 页公式造拉回并验票——形状变了,程序骨架不变。

验票心得:万有性里最费算力的是「对每个竞争者」——范畴论替把这个全称量词炼成了定理(第 90 页),程序只在小世界里跑,定理在大世界里成立。

92格物札记

第三章 泛性质与极限:由关系定义对象〖札记〗刘徽的「率」:关系先于数值

《九章算术》粟米章开篇立表:「粟率五十,粝米三十。」今有粟一斗,问粝米几何?今有术答:10 × 30/50 = 6 斗。但真正深刻的是刘徽对「率」的注解——率不是两个数的比,而是一组量「自相与定」的关系结构:粟与粝按 50 与 30 相与,数值只是这个关系的采样。

刘徽给出率的三种合法变换:「乘以散之,约以聚之,齐同以通之。」率可以整体放大缩小(散、聚)而关系不变——这正是「up to iso」的中国先声:50:30 与 5:3 是同一个率,正如任何两份积答卷是同一个积。个体数值让位于关系结构。

粟 所有数 粝 所求之一 粝饭 再求之数 50:30 30:75 齐同复合:50:75 = 2:3 两段率的接力(粟→粝→粝饭)与一段复合率结果相同—— 刘徽「术可相错」的复合律,本章的交换三角。 验算:粟10斗 → 粝6斗 → 粝饭15斗;直用 2:3 得 15斗 ✓
图 3-13 率链=态射复合:《九章》粟米率的接力,首尾相接与一段直算结果相同——刘徽的「齐同以通之」就是交换图上的万有分解。

「齐同以通之」尤妙:两段率要接力,须先「通」出公共单位(30 既是粝的率、又是下一段的率)——这与拉回里「在 C 处对上号」、极限里「沿形状走得通」是同一种思维:关系要相接,必先有公共中介;中介选定后,复合自动唯一。泛性质两千年前的表亲,就睡在算学家的注疏里。

下一站预告(第四、五章札记):珠算口诀「二一添作五」——除法的每一位商都是一次「自由构造」,万有性的算盘版。

93速查

第三章 泛性质与极限:由关系定义对象第三章速查表

对象一句话定义页
A × B(积)⟨f,g⟩ 唯一使 π1∘⟨f,g⟩ = f, π2∘⟨f,g⟩ = gp67
A ⊔ B(余积)[f,g] 唯一使 [f,g]∘ι1 = f, [f,g]∘ι2 = gp68
积的 Hom 式Hom(Q, A×B) ≅ Hom(Q,A) × Hom(Q,B)p67
终/始对象空积/空余积(Set:{∗}/∅)p67, 55
等化子e: E → A,f∘e = g∘e 的万有来源p70
余等化子q: B → Q,q∘f = q∘g 的万有目标(Ab:商 im(f−g))p70
拉回f∘p1 = g∘p2 的万有方框(Set:{(a,b)})p71
推出沿公共来源的万有焊接(Set:并后商)p71
核/余核沿零的拉回/推出(Ab:ker f/B/im f)p72
锥与极限λj: C → D(j) 全程交换的万有锥p73
Set 完备性L ⊆ ∏ D(j):兼容族之集(积 × 等化子)p74
指数 CBev 万有:Hom(A×B,C) ≅ Hom(A,CB)p75
CCC有限积+终对象+一切指数(薄 CCC=Heyting 代数)p76
up to iso两份万有答卷唯一保结构同构p77
极限可表Hom(C, Lim D) ≅ Lim Hom(C, D(−))p90
94讲义

第三章 泛性质与极限:由关系定义对象衔接讲义:通往伴随——自由与遗忘的辩证

第三章完成了什么。一个句法(泛性质)统吃全部构造:积、余积、等化子、拉回、核与余核、指数对象,全部是「图形+万有锥」的特例;存在性有积木定理担保;数系构造(分式环、多项式环、商与积)全部换上箭头语言的户籍。

两个悬而未决的现象。① 第 101 页(4.6 预告)将证明右伴随保极限——但「保极限」在第三章只是观察;② 自由群、自由模、多项式环的「自由构造」反复出现,它们与「忘却」函子总成对——这对现象是巧合吗?
带着问题走的路标。第四章回答:不是巧合,是伴随。路线:伴随的动机与定义(4.1–4.3)→ 标准例子(自由构造、Galois 连接)→ RAPL(右伴随保极限,把第三章的观察升级为定理)→ 单位余单位与三角等式(伴随的解剖图)→ 伴随函子定理(存在性判据)。
图 3-14 衔接预告:极限的两尊与伴随 极限 lim: 图 → C 万有「最贴近的顶」 右尊(保极限) 余极限 colim 万有「最贴近的底」 左尊(保余极限) 两尊之间隔着什么? —— 一对互相校准的构造:伴随 自由 ↔ 遗忘 预告:Hom(FX, G) ≅ Hom(X, UG)——第四章全册心脏的第一张契约书
图 3-14 极限与余极限是同一句法的两个方向;而「保持极限的构造」与「保持余极限的构造」成对出现——这对现象的系统化就是伴随函子。带着 Hom 同构的预告进入第四章。
第四章

伴随函子:自由与遗忘的辩证

自由群「自由」在哪里?答案是全册的心脏:伴随。遗忘函子 U 把群送回集合,自由函子 F 把集合送进自由群——两者之间有一座 Hom 的桥:Hom(FX, G) 与 Hom(X, UG) 自然同构。「先造再映射」与「先映射再造」殊途同归,这就是伴随。本章把这座桥拆开细看:单位与余单位是桥的两侧,三角等式是它的心跳;自由构造与 Galois 连接是两个方向的标准例子——前者在代数,后者在序结构,同一个定理管两界。右伴随保持极限(RAPL)是最常用的推论:为什么「积的底空间是底的积」,一句话答毕。随后把伴随磨成手艺:伴随的唯一性(由一半定另一半)、点式伴随与指数对象重逢、忘却函子的层级、线性代数对偶空间的伴随读法、Frobenius 伴随的左右通吃。伴随函子定理给出存在性判据,章末的三招演算让伴随成为随身工具。读完本章,泛性质获得终极解释:万有性质就是可表性,可表性就是伴随。
页型节奏:导引 → 讲义(概念 · 定理 · 证明 · 一步一图)→ 例题 → 习题 → 地图 · 小结 · 思想卡 · 挑战 · 实验
95导引

第四章 伴随函子:自由与遗忘的辩证第四章导引:自由群「自由」在哪里

第三章埋下过一张未兑现的支票:相邻领域第一、二章的自由群——「由生成元集合自由生成的群」。自由,自由在哪里?答案朴素得惊人:除了群的公理,没有任何别的约束。生成元 a, b, c 生出的字——如 ab−1cca——彼此不受牵连,唯一的规矩是结合律与逆元。「自由」=「万有」:从生成元出发的任何映射,都唯一扩张成同态(第三章 p77 造同构时用的正是这条)。

把「造」与「忘」并排看:自由群函子 F: Set → Grp(造),遗忘函子 U: Grp → Set(忘)。直觉说它们「方向相反、地位对等」——本章把这个直觉磨成全书最锋利的工具:伴随(F ⊣ U,读「F 左伴随于 U」)。伴随是泛性质的成年形态:它不给单个构造立法,而把「造与忘」这对关系整体立法。

S F(S) F:自由构造(造) U:遗忘(忘) 生成元集 造与忘互为镜像:F ⊣ U
图 4-1 自由与遗忘:一造一忘,方向相反、地位对等。本章证明它们精确地互为伴随。

本章航线:立伴随的三种化身(p96–98)→ 自由构造与 Galois 连接(p99–100)→ 右伴随保极限(p101)→ 伴随的演算与判据(p102–111)→ 章末成套:例题、习题、地图、小结与速查(p112–123),最后由衔接讲义(p124)把问题交给第五章。暗线本章翻出新面:自由与遗忘互为镜像,结构由镜像自发长出。

96讲义

第四章 伴随函子:自由与遗忘的辩证4.1 伴随的动机:自由–遗忘对

从自由群的万有性里抽出结构。自由群说:任何映射 S → UG(生成元在 G 底集里选像)唯一扩张为同态 F(S) → G。两边都是「映射的集合」,于是有一行等式:

HomGrp(F(S), G) ≅ HomSet(S, U(G))

左边是群世界的同态,右边是集合世界的普通映射——跨过世界界线,个数不多不少。这就是伴随的全部内容:造与忘这对函子,把两个世界的 Hom 集逐点对上。

伴随函子。F: C → D 左伴随于 G: D → C(记 F ⊣ G),若对一切 A ∈ C、B ∈ D 有双射 HomD(FA, B) ≅ HomC(A, GB),且双射对 A、B 自然(p97 精确化)。∎

读法一(构造–遗忘):F 造结构、G 卸结构;「进 GB 的箭头」与「进 B 的保结构箭头」一样多——自由构造不多不少地保住了万有性。

读法二(万有性):固定 B,取恒等的像 εB: F(GB) → B,则任何 FA → B 都唯一地经 εB 分解——第三章的投标句式(p66)重演,而且处处中标:伴随的每个成分都在投标。

术语速记:左伴随管「造」(自由、离散、生成),右伴随管「忘」(遗忘、余离散、求值)。F ⊣ G 中 F 在左、G 在右——左右之名即造忘之序。

97讲义

第四章 伴随函子:自由与遗忘的辩证4.2 伴随函子:Hom 集合的同构

「自然」二字落地。伴随的双射不是零散巧合,而是对全部箭头一致的同构。

伴随(正式版)。F ⊣ G 指有自然同构 Φ: HomD(F−, −) ⇒ HomC(−, G−):对每对 A, B 有双射 ΦA,B,且对任意 a: A' → A、b: B → B',两条绕路给出的映射相等(先复合后转写 = 先转写后复合)。∎

Hom(FA, B) Hom(A, GB) Hom(FA', B') Hom(A', GB') Φ(转写) Φ 两条路相等=自然
图 4-2 自然性方块:转写与「两侧夹箭头」可交换——转写规则对每一条箭头一视同仁,自由群才成其为函子。

自然性的分量要掂清:若只要求每对 (A,B) 各自有双射,定义会松垮成逐点巧合;加上自然性,生成元集变动时自由群才处处兼容。第一、二章的自然方块(p45)在这里领到最重的任务。

伴随三化身的预告(p98 收口):① Hom 同构(本页);② 单位–余单位+三角恒等式(箭头语言);③ 万有箭头(投标语言)。三种语言,一场伴随。

检索旧知:第 49 页可表函子。伴随同构用它的语言重述:Hom(F−, −) 在第一变量里「被 F 表示」——伴随是可表性成对出现的名字。

98讲义

第四章 伴随函子:自由与遗忘的辩证4.3 单位与余单位

把伴随同构压缩到最短,得到一对最重要的箭头。伴随的全部信息,浓缩在它们身上。

单位与余单位。伴随 F ⊣ G 的单位是自然变换 η: idC ⇒ G∘F(ηA: A → GFA,是 idFA 的转写像);余单位是 ε: F∘G ⇒ idD(εB: F(GB) → B,是 idGB 的原像)。二者满足三角恒等式:

Gε ∘ ηG = idG, εF ∘ Fη = idF。∎

自由群先验:ηS(s)=生成元 s 作为自由群的单字;εG 把「G 的元素当作生成元写成的字」按 G 乘法求值回去。三角恒等式说:先打包生成元、再拆包求值,货是原货。

A GFA FA ηA(生成) GηGFA εFA 绕三角一圈=恒等:Gε∘ηG = id(另一三角对称)
图 4-3 三角恒等式(其一):装袋–拆包不添信息。η 生成、ε 求值,两个三角是它们的互检条款。

三化身等价(细节留 p112 例题课验证):① Hom 同构 ⇒ ② (η, ε) +三角 ⇒ ③ 万有箭头;反向逐段可逆。第三章的投标句式正是 ③ 的母语——「伴随」与「万有」从此互换使用。

检索旧知:Yoneda 的「拆引线」(p50)——「恒等处的取值决定一切」。η 与 ε 正是那条引线:伴随的全部动力,储存在这两族箭头里。

99讲义

第四章 伴随函子:自由与遗忘的辩证4.4 伴随例子(一):自由构造

「自由」一族,全部是同一句伴随的不同方言。四例连跑,验票句式完全一致。

例 1(自由群)。F: Set → Grp 送自由群,U 遗忘;HomGrp(F(S), G) ≅ HomSet(S, UG)——指定生成元的像即定同态。∎

例 2(自由模)。Set → Vec(域 k 上):自由向量空间 k(S)=形式线性组合;HomVec(k(S), V) ≅ HomSet(S, UV)——基的像定线性映射。相邻领域「基的唯一表出」即此伴随的影子。∎

例 3(自由么半群)。Set → Mon:S 送字表 S∗(拼接为乘法、空字为单位);HomMon(S∗, M) ≅ HomSet(S, UM)。p152 札记的珠算口诀正是字表上的操作。∎

例 4(离散与余离散拓扑)。Set → Top:左伴随送离散拓扑(一切子集开,约束最松),右伴随送余离散拓扑(仅 ∅ 与全空间开,约束最紧);HomTop(Sdisc, X) ≅ HomSet(S, UX)。相邻领域的乘积拓扑将在 p101「右伴随保极限」下重获解释。∎

伴随左(造)右(忘)「指定去向」的读法
Set → Grp自由群(字)底集合生成元的像定同态
Set → Vec自由向量空间底集合基的像定线性映射
Set → Mon字表 S∗底集合字母的像定同态
Set → Top离散拓扑余离散拓扑任一映射自动连续

四行一列:构造不同、遗忘相同、读法同构——「自由=万有」在范畴语言里成为可执行的模板。对偶方向也有故事:Set → Grp 的右伴随(「余自由群」)不存在——没有一个群能接住万有性的全部映射;而 Set → Top 双侧都有伴随。伴随的存亡,本身是范畴身份的一部分。

判别口诀:看见「最自由的」「约束最少的」「唯一扩张的」,找左伴随;看见「最紧的」「忘掉结构的」「取底层的」,找右伴随。

100讲义

第四章 伴随函子:自由与遗忘的辩证4.5 伴随例子(二):Galois 连接

伴随不只住在代数里。预序集(薄范畴)之间的伴随有个古老的名字——Galois 连接,它在实数与整数之间就有现身。

Galois 连接。预序 (P, ≤), (Q, ≤) 间单调映射 f: P → Q、g: Q → P 构成伴随 f ⊣ g,当且仅当对一切 x, y:

f(x) ≤ y ⟺ x ≤ g(y)。∎

标准实例:上取整 ⊣ 下取整。⌈x⌉ ≤ y ⟺ x ≤ ⌊y⌋(x 实、y 整)。验三个数:x = 1.2, y = 1——左 ⌈1.2⌉ = 2 ≤ 1 ✗、右 1.2 ≤ ⌊1⌋ = 1 ✗,两侧同步拒绝;y = 2——左 2 ≤ 2 ✓、右 1.2 ≤ 2 ✓,两侧同步放行。门槛一起升降,正是伴随同构在预序世界里的样子(Hom 集=真值 {✓, ✗})。

ℝ 实数线 ℤ 整数格点 1.2 1 2 ⌈1.2⌉ = 2 落到格点 2 ⌈x⌉ ≤ y ⟺ x ≤ ⌊y⌋:门槛一起升降
图 4-4 Galois 连接:1.2 过整数门槛 ≤2,当且仅当它的上取整 2 也过——实数门槛与整数门槛同步开合。

闭包也来报到:自伴随的复合 T = g∘f 是闭包算子(单调、膨胀 x ≤ Tx、幂等 T∘T = T)。拓扑闭包、子群生成、线性 span——全世界的闭包算子都是 Galois 连接的影子,而它们将在 p129 作为「幂等单子」归队。

HA 接口:伽罗瓦理论的「固定域 ⊣ 固定群」、同调代数的「生成 ⊣ 饱和」——凡「两侧门槛同步」的配对全是 Galois 连接。名字是历史的,结构是范畴的。

101讲义

第四章 伴随函子:自由与遗忘的辩证4.6 伴随保持极限:右伴随的连续性

伴随不只转写箭头,还搬运极限。这是本章第一枚大定理,也是第三章(极限)与第四、五章(伴随)的合流点。

定理(右伴随保极限)。设 F ⊣ G,图 D: J → D 有极限,则 G(Lim D) 是图 G∘D 的极限。

证(三行,全是已验收的旧武器)。对任意 C:

Hom(C, G(Lim D)) ≅ Hom(FC, Lim D) ≅ Lim Hom(FC, D(−)) ≅ Lim Hom(C, GD(−))

第一跳与第三跳用伴随同构,中间跳用极限可表性(第 90 页挑战命题)。链首尾对照可表性刻画,G(Lim D) 正是 G∘D 的极限。∎

对偶句同样成立:左伴随保余极限——自由群 F(S ⊔ T) = F(S) ∗ F(T),p68 埋下「自由积」的名字在此兑现。这一对定理把存在性问题变成「搬运问题」:

应用三连。① U: Grp → Set 右伴随、Set 完备(p74)⇒ 任何小图在 Grp 的极限由 U 搬回 Set 算出再装回群结构——Grp 完备。② 同理 Vec、Mon、Top 完备(乘积拓扑=右伴随搬极限的实体)。③ 余极限侧:Set 余完备 + 左伴随保余极限 ⇒ 商群、自由积的存在与万有性一次到位。∎

「右伴随保极限」还有一副哲学面孔:遗忘不失极限——群论里的直积、交、等化子,就是想象的那个集合层面的东西;结构在极限处「不添乱」。这不是巧合,是伴随身份的必然:能当右伴随的遗忘,本身就是「温和」的遗忘。

Grp 中算极限=U 搬回 Set 算,再装回群结构 直积的底集=集合积 | 子群的交=集合交 | 等化子=集合等化子 第三章工厂(p74)× 第四、五章搬运(本页)=全部代数范畴的完备性
图 4-5 遗忘不失极限:右伴随把第三章的极限工厂原样搬进代数世界。

对照 p74:当时用「积 × 等化子」两手在 Set 内部造极限;今天 U 把整座工厂原样搬进 Grp。存在性从「逐范畴攻关」变成「查伴随表」——这就是范畴论的杠杆。

102讲义

第四章 伴随函子:自由与遗忘的辩证4.7 伴随的唯一性:由一半定另一半

一句话直觉。伴随是一对互相校准的构造,但校准是「过紧」的:给定一边,另一边唯一(到自然同构)。想造自由群?只要遗忘函子定了,自由函子没有第二个答案。

定理(伴随的唯一性)。设 F, F′ ⊣ U(同为 U 的左伴随),则存在自然同构 F ≅ F′;对偶地,右伴随亦然。证:Hom(FX, A) ≅ Hom(X, UA) ≅ Hom(F′X, A) 对一切 X、A 自然成立;固定 X、取 A 跑遍,由 Yoneda 精神(对可表函子的两次读数)得 FX ≅ F′X,自然性逐方块核对。∎

「猜」的合法性。想给 U: Grp → Set 找左伴随:答案必须是「把集合 X 变成某个群」——唯一到同构,故「字母表 X 上的自由群」不是一种构造,而是唯一构造的名字。造法(词与归约)可以千差万别,泛性质保证殊途同归。
与范畴等价的对照。等价是「双边双份校准」(两个自然同构);伴随是「双边但由一半锁定」。第三章的积(3.2)是伴随的雏形:「− × A」与「Hom(A, −)」互为伴随——积的存在由右伴随档位自动继承(3.14 的 RAPL 预告在此兑现)。
不存在的情形同样唯一。「左伴随不存在」也是由 U 的性质锁定的:U 必须保极限(右伴随的义务,4.6);凡不保极限的 U 一票否决——唯一性定理让「找伴随」变成「查义务、猜对象、验同构」三步的机械活。
图 4-6 伴随的唯一性:由一半定另一半 左伴随 F(候选) 与 U 配一半 Hom 同构 右伴随 U(候选) 与 F 配同一半 Hom 同构 互定 唯一(差一个自然同构) knowing U ⟹ F = 由「最省力解」唯一再造 knowing F ⟹ U = 由「万有读数」唯一再造 伴随是「一半」就能定全体的结构——这是它比等价更紧的缘故
图 4-6 给定 U,它的左伴随(若存在)唯一到自然同构——反之亦然。证明只花五行:两个左伴随 F、F′ 用 Hom 同构串起来,Yoneda 式读出 F ≅ F′。于是「找伴随」可以放手猜:猜中了就跑不掉。
103讲义

第四章 伴随函子:自由与遗忘的辩证4.8 三角等式:伴随的心跳

一句话直觉。Hom 同构是伴随的「合同书」,单位与余单位是合同的实际履约——而三角等式是履约的两条纪律:装了再拆,等于没装过。

定义(单位与余单位)。伴随 F ⊣ U 的单位是自然变换 η: idC ⇒ UF——分量 ηX: X → UFX 恰是 Hom 同构里 idFX 的原像(「自由构造的万能引入」)。余单位 ε: FU ⇒ idD 的分量是 idX 的像(「万有读数的万能引出」)。三角等式:Uε ∘ ηU = id 与 εF ∘ Fη = id。

自由群的读法。ηX: X → U(F X) 把字母送进「它自己构成的词」——单字母词;εG: F(U G) → G 把「以 G 的元素为字母的词」用群乘法求值。三角等式的直白内容:先自由化再求值,回到原元素;在自由对象上求值再自由化,与原词读法一致。
反演定理(三套定义的等价)。Hom 同构 ⟺(单位+余单位+三角等式)⟺(η 使每个对象「万有」)。三套定义各有用场:Hom 版善验证、单位版善构造、万有版善直觉。第 117 页小结把三套并成一页表。
预告单子。复合 T = UF 自带乘法 μ = UεF: T2 ⇒ T 与单位 η——乘法与单位满足幺半公理(第五章 5.3 验证)。单子就是「伴随的心跳」被单独拆下来卖:不需要另一半,结构与自我生成已然齐备。
图 4-7 单位、余单位与三角等式 C D D(再往下) F ⊣ U 的桥 F U ε(余单位) UF(自由后遗忘)= 装了单位 η 的结构;FU = 装了余单位 ε 的解包 三角等式:Uε ∘ ηU = id 与 εF ∘ Fη = id——桥的「心跳」
图 4-7 伴随把两个复合 UF(自由后遗忘)与 FU(遗忘后自由)各自与恒等比较:前者给自然变换 η(单位),后者给 ε(余单位)。它们满足两条三角等式——这是伴随的全部动力学;第五章的单子正是从 η 与 UF 的乘法里长出来的。
104讲义

第四章 伴随函子:自由与遗忘的辩证4.9 伴随与可表:Hom 的两面

一句话直觉。可表函子是「单件的万有」(对一个对象的一次问询);伴随是「成批的万有」(对全部对象同时问询)。批发价更便宜,也更有用。

定理(伴随与可表)。U: C → D 有左伴随,当且仅当对每个 A ∈ D,函子 D(A, U−): C → Set 可表;表示对象 FA 拼起来(连同读数)即左伴随。证明是逐字翻译:可表性给自然同构 D(A, U−) ≅ C(FA, −)——这正是 Hom 同构的逐 A 版本。∎

第三章构造的批量再造。积:函子 C(−, A × B) 可表(3.2 的万有性)——批量地看,「− × A ⊣ Hom(A, −)」是一条伴随;指数:C(A × −, B) 可表(3.10)——「(− × A) ⊣ (A ⇒ −)」是 Cartesian 闭范畴的伴随定义(4.10 重逢)。
为什么伴随更强。可表性逐对象发放表示对象,彼此之间可以毫无关联;伴随把全部表示对象用同一种方式装配成函子(读数自然地随 A 变动)。第三章 3.16 墙五的「逐点存在 ≠ 函子性」,在伴随语言里被自动满足——这就是「批发」的结构红利。
证伴随的最快姿势。要证 F ⊣ U:固定 A,把 Hom(A, U−) 认出来是「某已构造 X ↦ ?」的可表函子,表示对象取 FX;再把 F 的函子性与自然性核对一遍。第 112 页例题课全程按这个姿势走两遍。
图 4-8 伴随与可表:同一句话的三张面孔 可表函子 Hom(A, −):对象 A 的读数机 (第二章 2.9) 右伴随 U 保极限、保万有读数 (本章 4.6) 一个事实 U: C → D 有左伴随 ⟺ 逐对象可表: D(A, U−) 可表 升级 特例 泛性质(第三章)= 可表性(第二章)= 伴随(第四章)——三张面孔一个定理
图 4-8 U 有左伴随,当且仅当对每个 A,函子 D(A, U−) 可表——表示对象记作 F A。于是第三章的每个泛性质(积、自由群、指数)都是本页事实的实例;伴随是可表性的「成批升级版」。
105讲义

第四章 伴随函子:自由与遗忘的辩证4.10 点式伴随与指数对象重逢

一句话直觉。伴随不必「一次造全」:逐对象问「谁最贴近」,再验证这些点读数自然拼装——这份便利叫点式伴随。

定义(点式伴随)。对 f: A → B(Set 中映射),直接像 Σf: 𝒫A → 𝒫B(子集送到子集)有右伴随 f-1(逆像)、逆像又有右伴随 ∀_{f(「对所有 f-原像成立」)。三个函子两两伴随:Σf ⊣ f-1 ⊣ ∀_{f——幂集上的「三明治」。它是一阶逻辑量词的范畴化身:∃ = 直接像、∀ = 右伴随的直接像。

量词即伴随。命题「存在 x ∈ S 使 φ」= S 与 φ 的真值集相交非空 = Σf 的作用;「对所有 x ∈ S 有 φ」= ∀_{f 的作用。逻辑连接词(∧∨⇒)与量词(∃∀)全部获得伴随读法——第六章「逻辑即范畴」的地基在此打好。
与第三章的重逢。指数对象 B^{A(3.10)的 Currying 同构 C(X × A, B) ≅ C(X, B^{A) 正是「(−) × A ⊣ (A ⇒ −)」的 Hom 合同——第三章的 CCC 定义等价于「每个 A 给出伴随对」。
序结构的最小样例。偏序集的 Galois 连接(4.5)就是点式伴随:上下伴随各是一对单调映射的「最贴近校准」。一页之内,从逻辑量词到序结构,点式伴随把两个世界接通。
图 4-9 点式伴随与指数对象重逢 Cartesian 闭范畴 A ⇒ (−) 右伴随 (−) × A 左伴随 点式伴随 逐对象给伴偶 「a ↦ 最贴近的像」 Set 里:f: A → B 的点式右伴 把 b ↦ 原像集 f-1​(b) 同一现象 指数对象(3.10)= 点式伴随的招牌案例:Currying 就是 Hom 同构
图 4-9 点式(pointwise)伴随:逐对象读「最贴近的像」,不必先造整个函子。Set 中映射 f: A → B 的点式右伴把 b 送到原像集——与第三章的指数对象对照:Currying 的 Hom 同构正是「(−) × A ⊣ (A ⇒ −)」。
106讲义

第四章 伴随函子:自由与遗忘的辩证4.11 忘却函子的层级与逐级自由

一句话直觉。「自由」不是一种构造,而是一族构造:结构剥到哪一层,自由就补到哪一层——层级之间还能换乘。

忘却的层级。代数结构按「装备多少」排座次:群 > 幺半群 > 集合;环 > 乘法幺半群 > 集合;模 > 阿贝尔群 > 集合。每级遗忘 U 的左伴随叫该级的自由构造:Set → Mon 给自由幺半群(词)、Mon → Grp 给群化(形式逆)、Set → Ab 给自由阿贝尔群(形式和)。

逐级自由的换乘。集合 X 上的自由群=「先造自由幺半群(词),再群化(加形式逆)」。两段自由各是左伴随,复合仍是左伴随(左伴随保余极限——第四章末的定理),所以「两级合造」与「一步造群」给出同一个答案——程序化的自由构造手册。
为什么遗忘必有自由。本章 4.14 的伴随函子定理给出判据:忘却函子「保极限+满足集合论解集条件」——它显然保一切极限(底层集合逐项取)——故左伴随存在。自由构造的存在是定理,不是奇迹。
层级观的方法论。遇到新代数结构(如李代数、Hopf 代数),第一问即「从哪个已知层级遗忘而来」——左伴随立即有名字(自由李代数、自由 Hopf 代数),其存在与泛性质自动到位。第五章的幺半群对象将把这套层级再抬一层。
图 4-10 忘却函子的层级与逐级自由 Grp (乘法·逆·单位) Mon (乘法·单位) Set (无结构) 遗忘链 Grp → Mon → Set 每级左伴: 群化 → 自由幺半群 → 自由集 U(忘逆) U(忘乘) 逐级自由 结构层层剥,自由层层造——每一级遗忘的左伴随把结构「免费加回去」
图 4-10 遗忘不是一步完成的:Grp → Mon 只忘「逆」,Mon → Set 忘「乘法」。每级遗忘各有左伴随(群化、自由幺半群),逐级自由的复合给出集合上的自由群——第四章主角的第一张全家福。
107讲义

第四章 伴随函子:自由与遗忘的辩证4.12 线性代数重逢:对偶空间的伴随

一句话直觉。把「转置」「双对偶」「配对」从线性代数搬进范畴词典,每个词都自动获得伴随读法——旧知识成为新语言的免费词汇。

对偶的伴随读法。域 k 上有限维向量空间范畴 Vec:对偶函子 (−)* = Homk(−, k): Vec° → Vec。配对给出自然同构 Hom(V*, W) ≅ Hom(W*, V)(线性映射与「转置的转置」互认)——即 (−)* ⊣ (−)*°:对偶函子与它自己的反变版本互为伴随。双对偶 (−)** 是这一伴随的单位复合,有限维时是自然同构(自反性)。

转置的国籍。f: V → W 的转置 f*: W* → V*——方向倒转、次序倒转:这是「反变函子的态射映射」的定义本身。学生时代背的「转置反序」(AB)* = B*A* 从此不再是规则,而是范畴公理的推论。
有限维与无限维的分水岭。无限维时 V → V**只是单射(自反性失效)——伴随结构完好无损,失效的是「自反」这份额外礼物。「伴随永远在、同构看条件」是贯穿全章的旋律。
配套读法。对偶空间是「Hom 的特例」:V* = Hom(V, k)——以单字 k 为探针的可表函子(第 49 页)。「对偶=可表」+「伴随=成批可表」两条词汇相互印证:线性代数里最熟悉的构造,恰是范畴论最早的例题。
图 4-11 线性代数重逢:对偶空间的伴随读法 (−)* : Vec → Vec° 对偶:反变函子 (Hom(V, k)) 本身即伴随对 (−)* ⊣ (−)*° Hom(V*, W) ≅ Hom(W*, V) ↔ 有限维里 (−)** ≅ id(双对偶自然同构)——对偶是自己的一半与另一半 无限维:V ↪ V** 只是单射——伴随仍在,自反性不再 「转置」的代数身份:f: V → W 的转置 f*: W* → V* 就是反变函子的态射映射
图 4-11 对偶 (−)* 是反变函子;「Hom(V*, W) ≅ Hom(W*, V)」说明它与自身的反变版互为伴随(Frobenius 型,4.13 细讲)。线性代数的「转置」「双对偶」全部获得范畴读法——伴随是新字典,旧词全在其中。
108讲义

第四章 伴随函子:自由与遗忘的辩证4.13 Frobenius 伴随:左右通吃

一句话直觉。普通的伴随对左右各有一位伴偶;Frobenius 伴随要求左右是同一位——对称到可以「左右通吃」。

定义与样板。伴随对 F ⊣ U 称 Frobenius 型,若同时 U ⊣ F。两个标准样板:① Vec 的对偶(上页);② 有限群 G 的表示:子群 H ≤ G 的限制函子 Res 有左伴随 Ind(诱导表示)与右伴随 coind——有限群时 Ind ≅ coind,即 Frobenius 互反定理:

HomG(Ind V, W) ≅ HomH(V, Res W) ≅ HomH(V, Res W) 双向成立。

为什么有限如此关键。诱导与重合在无限群里分裂为两个不同构造(Ind ≠ coind);有限性让「陪集个数」有限,两个万有构造撞成同一个。对称的世界往往以有限性/紧性/对合为门票——Frobenius 是「对称红利」的范畴化身。
单位与余单位重合的后果。Frobenius 伴随的单位 η 与余单位 ε可以拼出「对合」式的额外结构( Frobenius 代数的乘法与余乘法)——第五章幺半群对象回归时(5.15),Frobenius 代数将作为「在张量范畴里当群的自我」正式登场。
查验清单。判断一对伴随是否 Frobenius:① 两个方向的 Hom 同构都验;② 单位与余单位各写一遍;③ 对合映射 η 与 ε 的「合成」是否给同构。三步走完,结论自明。
图 4-12 Frobenius 伴随:左右通吃 普通左伴随 F ⊣ U 左右各一个伙伴 Frobenius 型 F ⊣ U 且 U ⊣ F 左右是同一人 条件:Hom(FX, Y) ≅ Hom(X, UY) 且 Hom(UY, X) ≅ Hom(Y, FX) 样板:有限维对偶 (−)* ⊣ (−)*°;群表示的诱导与限制 价格:要求格外对称的世界(有限维、有限群、紧空间)
图 4-12 Frobenius 伴随:F ⊣ U 且 U ⊣ F——同一对函子左右两个方向都成立。它只在格外对称的世界出现:有限维向量空间的对偶、有限群的诱导–限制表示(Frobenius 互反定理正是其名)。
109讲义

第四章 伴随函子:自由与遗忘的辩证4.14 伴随函子定理:存在的判据

一句话直觉。「左伴随存在吗?」不再是灵感问题,而是两道体检:保极限(义务)+解集条件(材料)——全过就发执照。

定理(伴随函子定理,初等版)。设 U: C → D,C 局部小且具全部极限。则 U 有左伴随 ⟺ ① U 保全部极限;② 对每个 X ∈ C,万有箭头候选集 {(A, a: X → UA) 的「初等对象」} 被某个集合控制(解集条件)。此时左伴随在 X 处取「初等对象中的万有者」。

义务的直觉。右伴随是「极限友好」的:它把 C 的万有锥原样搬到 D(4.6 的 RAPL 是方向特例)。不保极限=破坏万有结构=自动出局——例如「把一切非空集合打到单点」的函子不保终对象的唯一性,无右伴随。
解集条件的直觉。防止「候选无限多、选不出来」的病态:要求万有候选被一个固定集合限制住(可称「初等对象」)。日常代数里它自动成立——词的长度、生成元个数都是天然界碑。
两个对偶版本。本页是「左伴随存在」版(U 保极限);镜像版「右伴随存在」要求 G 保余极限+上解集——对偶原理(1.14)免费赠送,一行证明都不用重写。
图 4-13 伴随函子定理:存在性的三步判据 ① 义务检查 U 保全部极限 ② 解集条件 逐 X 造「万有箭头」 ③ 拼装 解集自然拼成 FA 结论:三步全过 ⟺ 左伴随 F 存在(且被 ② ③ 唯一刻划) 忘却函子 U:义务自动过(底集合逐项取极限)+ 解集条件平凡 —— 自由构造必然存在 判据的可操作版:找伴随 = 查义务 → 造解集 → 验自然
图 4-13 伴随函子定理(初等版):U 有左伴随 ⟺ U 保全部极限+「逐对象解集条件」(每个试探 X 的万有箭头全体成集合且能自然拼装)。证明是「从解集手工造伴随」的工程——自由构造的存在性由此从猜想升为定理。
110讲义

第四章 伴随函子:自由与遗忘的辩证4.15 伴随常见误读与澄清

一句话直觉。伴随的名声大,误读也多。五面墙钉在一张卡上——其中最危险的是把「伴随」与「逆」混为一谈。

墙一:伴随 = 逆?完全不同。逆 F-1 满足 F-1F = id、FF-1 = id(严格相等);伴随只要求 UF、FU 被 η、ε 与 id「三角连接」——逐层近似,不逐层相等。自由群不是「忘却的逆」:U(FX) 比 X 大得多(多出全部合成词)。
墙二:Hom 同构方向写反。合同是 D(FA, B) ≅ C(A, UB)——F 在 Hom 的左位、U 在右位(口诀:左伴左、右伴右)。写反了,例题全崩。
墙三:左伴随保极限?反了——右伴随保极限、左伴随保余极限(RAPL 与它的镜像 LA colim)。背口诀:「右伴右保守」:右伴随守着极限(万有的「入」方向)。
墙四:把 η 当同构。ηX: X → UFX 一般不是同构(单射而已——字母进词的世界)。
墙五:伴随自动存在。存在要过伴随函子定理的两道体检(4.14)——「直觉上应该有伴随」不算证明。
111讲义

第四章 伴随函子:自由与遗忘的辩证4.16 伴随的演算速成:三招走天下

一句话直觉。把伴随从「定理陈列」变成「随身工具」,只需三招——招式不多,纪律要紧。

第一招:猜与验。拿到 U,猜它的左伴(猜错不亏——唯一性保证猜对后跑不掉);验 C(FX, A) ≅ D(X, UA):给出双向映射、验互逆、验两侧自然性。自由群、自由模、指数对象全用此招(第 112 页例题)。
第二招:可表批量。当 F 难以显式写出,改证 D(A, U−) 逐 A 可表(4.9),表示对象自动拼成 F——此招在「F 是抽象万有对象」时无可替代。
第三招:定理放行。存在性问题交给伴随函子定理(4.14):查义务(保极限)+查解集条件,两证合一。忘却函子一族全部由此放行。
综合演练的路标。第 112–115 页例题与习题共 10 题:例题示范三招、习题覆盖全部五面墙(4.15)。做完这批,RAPL 挑战(第 120 页)与第五章单子的验证将如履平地。
图 4-14 伴随演算三招 第一招 · 猜与验 猜 F,验 Hom 同构的两支自然性 适用:自由构造、指数对象 1 第二招 · 可表批量 证 D(A, U−) 逐 A 可表,拼装成 F 适用:积、伴随的批量再造 2 第三招 · 定理放行 查「保极限+解集条件」两道体检 适用:存在性问题 3 三招的公共纪律:方向先对(左伴左、右伴右)→ 自然性逐方块核 → 引定理前先查档位
图 4-14 验证与构造伴随的三招:猜与验(最快)、可表批量(最系统)、定理放行(处理存在性)。所有招式的公共纪律一条:方向先对、方块逐核、档位先查。
112例题

第四章 伴随函子:自由与遗忘的辩证例题课(一):伴随的验证

例 1.把自由群伴随 F ⊣ U 的 Hom 同构显式造出来,并验证两向互逆。

解。正向:给同态 α: F(S) → G,限制到生成元上得映射 α∘ηS: S → UG(ηS(s) 是单字 s,p98)。反向:给映射 β: S → UG,由自由群的万有性唯一扩张成同态 F(S) → G(生成元的像定为 β)。互逆:正向再反向——扩张后再限制,生成元的像仍是 β,唯一扩张重合;反向再正向——把 α 在字上按 G 乘法求值再当生成元看,字与求值互相决定,仍是 α。∎

例 2.证明第三章的 Currying(p75)是伴随:对固定集 S,(−)×S ⊣ (−)S。

解。伴随句式逐字对上:Hom(A×S, B) ≅ Hom(A, BS)——左边「吃一个带参数的二元映射」,右边「吃一元映射族」。单位与余单位就是老朋友:ηA(a) = (s ↦ (a,s))(第三章的「配对」)、εB = ev(求值映射,p75)。指数 functor 就是右伴随——CCC 里每一句指数定律,都是一场伴随的转写。∎

例 3.数值对拍 ⌈x⌉ ⊣ ⌊y⌋,并求复合闭包 T = ⌊⌈x⌉⌋ 的不动点。

解。门槛律 ⌈x⌉ ≤ y ⟺ x ≤ ⌊y⌋(p100):x = 2.7, y = 3——左 3 ≤ 3 ✓、右 2.7 ≤ 3 ✓,同步放行;y = 2——左 3 ≤ 2 ✗、右 2.7 ≤ 2 ✗,同步拒绝;整数边界 x = 2, y = 2 两侧同 ✓。闭包 T(x) = ⌊⌈x⌉⌋ = ⌈x⌉(上取整已是整数,再取下整不动):膨胀、幂等,不动点恰是整数集——p100「闭包算子」的数值全身像。∎

例 4.用「右伴随保极限」(第 101 页)逐条对账 U: Grp → Set 的三张实例票。

解。①直积:群 ℤ/2 × ℤ/3 的底集 6 元素 = U(ℤ/2) × U(ℤ/3) 的 2 × 3——乘积的底层就是集合积;②交:子群的交的底层 = 底集合的交;③等化子:群同态的共识区 = 集合等化子。三张票全是「遗忘不失极限」:U 搬运时原样交付(第 101 页应用①的具象)。对偶票:左伴随保余极限,F(S ⊔ T) = F(S) ∗ F(T)——p68 的自由积再次兑现。∎

通法提示:验证伴随三步——「写出 Hom 同构的双向映射 → 动一动变量查自然性 → 有需要再查三角恒等式」。第二步最常被偷懒:生成元集换一换、参数集换一换,双射若不兼容,前面全是白搭。

113例题

第四章 伴随函子:自由与遗忘的辩证例题课(二):由伴随读极限

例 4(由伴随读极限:Top 的乘积空间)。问:为什么「积空间的底集合是底集合的积」?伴随读法:忘却 U: Top → Set 有左伴(离散拓扑)与右伴(平凡拓扑)——右伴保极限,故 U(X ×Top Y) ≅ UX ×Set UY。一句话答毕;点集拓扑书的三页论证,是这条范畴论直线的逐点展开。∎

例 5(自由阿贝尔群的伴随验证)。F: Set → Ab,X ↦ ℤ[X](形式整系数和);U: Ab → Set 遗忘。验合同:群同态 ℤ[X] → A 与函数 X → UA 互相对应(同态由基的像唯一决定)——双向、互逆、自然性逐方块核对。∎ 第二招演练:本例也可走可表批量——Ab(A, U−) 可表,表示对象 ℤ[A]。

例 6(LA colim:左伴随保余极限)。验证并集的直和:向量空间族 Vi 的余极限(粘合空间)经左伴随 ℤ[−]: Set → Ab 送到 ℤ[Vi 的余极限]——与「先各自 ℤ[−] 再余极限」给出同一个阿贝尔群。∎ 口诀落地:左伴保余极限(colim 的「出」方向),正与右伴保极限成镜像。

114习题

第四章 伴随函子:自由与遗忘的辩证习题课(一):基本功

1.写出自由群伴随的 ηS 与 εG 的显式公式,并用「单字生成、按乘法求值」验证三角恒等式 εF ∘ Fη = idF。

提示:F(ηS) 把字「单字 s」送成字「由单字 s 组成的字」?不——它把单字 s 原样嵌进新字表;ε 再按 G 乘法求值,得回原字。装袋一次、拆包一次,货是原货。

2.验证 Currying 伴随 (−)×S ⊣ (−)S 的 η 与 ε 满足另一条三角恒等式 ε(−)S ∘ (−)×S(η) = id(记号按 p98 约定)。

提示:ε 处处是求值 ev;η 是配对。合成读作「先配对再求值」——(a,s) ↦ ((s↦(a,s)),s) ↦ (a,s),逐点恒等。

3.数值对拍:对 x ∈ {0.5, 1, 1.7, 2}、y ∈ {1, 2} 的八组组合,列表判断「⌈x⌉ ≤ y」与「x ≤ ⌊y⌋」是否逐对同真同假。

提示:x=1, y=1 时两侧同 ✓(1 ≤ 1);x=1.7, y=1 时两侧同 ✗;x=0.5, y=1 两侧同 ✓。边界组 x=2, y=2 最值得细看。

4.证明闭包算子 T = ⌊⌈x⌉⌋ 的不动点集恰是整数集,并复述「幂等单子」(μ = id)在此例中的含义。

提示:T(x) = ⌈x⌉;不动点 ⟺ x = ⌈x⌉ ⟺ x 是整数。「幂等」=饱和者再饱和不动——p100 闭包三律的第三条。

5.在薄幺半范畴 (ℕ, ≤, +, 0) 中证明结合子 α 必是恒等箭头,并说明这件事为什么「自动」。

提示:α 的两侧对象间只有一条 ≤ 箭头(薄);两条换括号的路终点相同,故 α 与它的对手都是那条唯一的箭头——薄世界里相干性免费。

6.在 A = {1,2} 上逐点验证幂集单子的单位律:μ∘Pη = id 与 μ∘ηP = id。

提示:Pη(S) = {{s} : s ∈ S},取并得 S;ηP(S) = {S},取并也得 S——「先装箱再并」与「整箱并」殊途同归。

115习题

第四章 伴随函子:自由与遗忘的辩证习题课(二):进阶

习 5(点式伴随三明治)。对映射 f: A → B,验证 Σf ⊣ f-1 ⊣ ∀_{f(4.10 的幂集三明治)三条合同——并写出每条合同在逻辑量词语言里的读法。

习 6(忘却层级)。从集合 X 出发依次走「自由幺半群 → 群化」两段自由,证明结果满足自由群的泛性质(对一切群 G:Hom(X → G) ≅ Hom(结果 → G))——即「逐级自由」与「一步自由」给出的对象同构(4.11)。

习 7(对偶的对拍)。有限维 Vec 里验证 Hom(V*, W) ≅ Hom(W*, V) 的双向映射与自然性;再举一个无限维反例说明自反性失效(4.12)。

习 8(伴随函子定理实战)。对忘却函子 U: Mon → Set:① 验证 U 保全部极限(底集合逐项);② 写出解集条件里的「初等对象」(词长界碑);③ 按定理拼出自由幺半群并核对泛性质——把第 121 页实验的数字作为证据附件。∎

116地图

第四章 伴随函子:自由与遗忘的辩证第四章知识地图

本章 30 页的地形:一场「造与忘」的辩证。金色=伴随的三套等价立法;绿色=两条标准例与一条硬定理;红色=右伴随保极限(全章第一枚大定理);蓝色=伴随自身的演算与判据。

图 4-15 第四章地形:一场「造与忘」的辩证 伴随 F ⊣ G:三套等价的立法(p96–98) 自由构造(p99) 自由群/自由模/离散拓扑 Galois 连接(p100) 预序世界的门槛 右伴随保极限(p101) 遗忘不失极限 伴随的演算与判据:唯一性(p102)· 三角等式(p103)· 可表与点式(p104–105) 再看一层:忘却函子层级(p106)· 对偶空间(p107)· Frobenius(p108)· 存在判据(p109)· 三招走天下(p111)
图 4-15 第四章地形:金色=伴随的三套等价立法;绿色=两条标准例(自由构造、Galois 连接);红色=全章最锋利的一把刀(右伴随保极限);蓝色=伴随自身的演算与判据。下一章把这枚伴随的一半心跳拆下来独立研究,那就是单子。

三条「主线走法」:求全者走红色大支(p101 保极限,随后 p109 的伴随函子定理给出存在的判据);对偶爱好者走绿色线(p99 造、p100 预序里的门槛,p107–108 把「对偶空间」与「Frobenius 伴随」收进同一族);接口旅人走蓝色出口(p104–105 的可表性与点式伴随通向第三章的指数对象,p124 的衔接讲义把问题交给第五章)。

学完本章再回看第三章图 3-12:那里的「投标句式(p66–67)」在本章升格为「伴随」(金块),「极限工厂(p73–74)」被右伴随整座搬走(红块)。下一章,伴随的另一半心跳将被拆下来独立审视——它自己也会长出一套结构,那就是单子。

117小结

第四章 伴随函子:自由与遗忘的辩证第四章小结(上):伴随的三个等价定义

九条带走。

① 伴随=Hom 同构:F ⊣ G ⟺ HomD(FA, B) ≅ HomC(A, GB) 自然——跨世界对账,个数不多不少(p96–97)。
② 单位与余单位:η: id ⇒ GF、ε: FG ⇒ id,配三角恒等式 Gε∘ηG = id、εF∘Fη = id——伴随的全部信息浓缩于此(p98)。
③ 三化身等价:Hom 同构 ⟺ (η, ε)+三角 ⟺ 万有箭头——泛性质是伴随的母语。
④ 自由构造一族:自由群/自由模/字表/离散拓扑——「指定生成元的像」逐字化为伴随同构;Currying 也是伴随((−)×S ⊣ (−)S)(p99、p111)。
⑤ Galois 连接:预序世界的伴随;⌈x⌉ ⊣ ⌊y⌋ 门槛同步;复合 T = g∘f 是闭包算子(p100)。
⑥ 右伴随保极限(左保余极限):遗忘不失极限——代数范畴的完备性由 Set 一键搬运(p101)。
⑦ 唯一性:单位(或余单位)处处同构,另一半就被完全钉死——伴随是「由一半定另一半」的构造(p102)。
⑧ 可表与点式:伴随=「成批的可表」;点式伴随与第三章的指数对象重逢,(−)×S ⊣ (−)S 即 Currying(p104–105)。
⑨ 判据与演算:伴随函子定理给出存在判据(每对象有万有箭头);三招走天下——造万有映射、验互逆、验自然性(p109、p111)。

本章把「造与忘」这一对关系整体立法。下一页换个角度:把伴随的余单位单独拎出来,看它自己能不能生成一套结构——能,而且生成得相当漂亮。那正是通往第五章的桥。

118小结

第四章 伴随函子:自由与遗忘的辩证第四章小结(下):例子与判据

正面清单(例子与判据)。

例子全家福。自由–遗忘(Grp/Mon/Ab/ Ring 各层);Galois 连接(序世界);幂集三明治 Σf ⊣ f-1 ⊣ ∀f(逻辑量词);指数对象(CCC);对偶 (−)* ⊣ (−)*°(线性代数);诱导–限制(表示论,Frobenius)。
判据与定理。唯一性(由一半定另一半);RAPL + LA colim(左右各守一方向);伴随函子定理(保极限+解集条件 ⟺ 存在);伴随与可表(成批可表=伴随)。
演算三招。猜与验 / 可表批量 / 定理放行——方向、方块、档位三条纪律。
反面清单。伴随≠逆(UF 远大于 X);Hom 方向写反;左右保什么记反;把 η 当同构;「直觉应有伴随」代替定理。

与上半章的接口。上半章(4.1–4.6)立定义、标准例子与 RAPL;下半章把伴随磨成手艺(唯一性、点式、层级、对偶、Frobenius)并给出存在性判据。全部内容指向一个收束:伴随的心跳(η、ε 与三角等式)可以单独拆下来研究——那就是第五章的主角:单子。

119思想卡

第四章 伴随函子:自由与遗忘的辩证思想卡:自由与遗忘互为镜像

「自由与遗忘互为镜像。」

泛性质给单个对象立法(第 89 页);伴随给「造与忘」这一对关系整体立法。镜像的深意在于:忘记多少,自由就生长多少——自由群的万有性,恰好只覆盖被遗忘掉的那部分结构。自由不是「没有约束」,而是「只余下被遗忘者放行的约束」:造与忘不是两个动作,是一枚硬币的两面,Hom 同构一行把它们写尽。

更惊人的是结构的自生:只要造忘成对,η 与 μ 自动出现、自动合法(三角恒等式免费送来全部单子律)。结构不是从外面加在世界上的,而是在造与忘的循环里自己长出来的——单子是伴随落在地上的影子,影子却有完整的骨架(EM、Kleisli,乃至第六章的两种读法)。Mac Lane 的名言在此有了哲学重量:千姿百态的「代数构造」,原来是同一句公理在不同舞台的重唱。

第六章(三)将把这条线写进认识论:对象在关系中(Yoneda),关系成对处结构自生(本章),故「结构先于个体」不只是口号,而是有两台发动机(泛性质与伴随)的生产纲领。

对照第 89 页思想卡(「存在由万有保证」):那一页是存在句——「定其关系即得其对象」;本页是生长句——「造忘成对则结构自生」。一存在、一生长,合成本册暗线的又一联。

120挑战

第四章 伴随函子:自由与遗忘的辩证挑战:RAPL 的代数应用

挑战:RAPL 的代数应用。只用「右伴随保极限」,证明下列三题;每题都指认「谁是 U、谁是 F」,再指认涉及的极限形状。

第一题(群的直积)。证明群论直积的底集合是集合直积:U(G × H) ≅ UG × UH。(U: Grp → Set 右伴;二元积是极限。)
第二题(核的交换)。设 f, g: A → B(Ab 中),证明 U(ker f ∩ ker g) 的读法与「逐项取核再交」一致——把「核+交」翻译成一张等化子图,RAPL 一次收束。
第三题(环的逆向极限)。p 进整数 ℤp = lim ℤ/pn(逆向系统的极限)作为集合,与「逐项取底集合再取极限」一致——U: Ring → Set 右伴;无限逆向极限是极限形状的进阶演练。(完成后再想一步:为什么「正向极限」此处不保?——因为 U 的右伴随身份只保「入」方向。)

突破口提示。三题共用一个模板:把代数构造写成极限图 → 指认右伴随 → 结论自动落地。文献指引:Mac Lane §V.5(RAPL 与伴随函子定理)、Lang《Algebra》对应章节(代数细节)。

121实验

第四章 伴随函子:自由与遗忘的辩证实验:自由幺半群的枚举对拍

实验目的。把「自由=唯一延拓」的泛性质做成可复算的数字:枚举自由幺半群 {a, b}* 的词、穷举结合律、并程序化「给字母指定像 ⟹ 同态唯一延拓」。

from itertools import product

W = ['']
for L in range(1, 5):
    W += [''.join(p) for p in product('ab', repeat=L)]
print('长度<=4 的词共', len(W), '个')

W3 = [w for w in W if len(w) <= 3]
print('长度<=3 的词', len(W3), '个;验证结合律 (uv)w=u(vw):',
      all((u+v)+w == u+(v+w) for u in W3 for v in W3 for w in W3),
      '(', len(W3)**3, '三元组)')

# 自由延拓(左伴随的读数):a->2, b->3 (mod 6 加法幺半群)
def ext(word):
    return sum(2 if c == 'a' else 3 for c in word) % 6
print('延拓同态 φ: {a,b}* -> Z/6 抽查:')
for w in ['', 'a', 'b', 'aa', 'ab', 'ba', 'abb', 'aabbba']:
    print('  φ(%r) = %d' % (w, ext(w)))
ok = all(ext(u+v) == (ext(u)+ext(v)) % 6 for u in W3 for v in W3)
print('同态性 φ(uv)=φ(u)+φ(v) 对长度<=3 全对:', ok)

实跑输出。

长度<=4 的词共 31 个 长度<=3 的词 15 个;验证结合律 (uv)w=u(vw): True ( 3375 三元组) 延拓同态 φ: {a,b}* -> Z/6 抽查: φ('') = 0 φ('a') = 2 φ('b') = 3 φ('aa') = 4 φ('ab') = 5 φ('ba') = 5 φ('abb') = 2 φ('aabbba') = 3 同态性 φ(uv)=φ(u)+φ(v) 对长度<=3 全对: True
读数一(自由对象的体型)。长度 ≤4 的词 31 个= 20+…+24——自由幺半群比字母表「大得多」,这正是「伴随不是逆」的数值版(U(F{a,b}) 有 31 个元素,{a,b} 只有 2 个)。
读数二(公理免费)。3375 个三元组的结合律全对——字符串拼接天然可结合;自由构造把公理「内置」了,泛性质由此分文不取。
读数三(唯一延拓)。指定 a ↦ 2、b ↦ 3 后,全部词的像唯一确定且满足同态方程——「Hom(F X, M) ≅ Hom(X, U M)」在 ℤ/6 的样例上完全对拍。注意 φ(ab) = φ(ba) = 5:自由幺半群里 ab ≠ ba,是同态把它们打到同一个像——商(关系)正是第五章单子理论要接管的动作。
122格物札记

第四章 伴随函子:自由与遗忘的辩证〖札记〗筹算与「借」:伴随的古老直觉

〖札记〗筹算与「借」:伴随的古老直觉。

古代算家面对「不足」时的标准动作是借:借来的数是「为了完成计算而临时引入的辅助物」,它的唯一义务是让运算走通,且恰好走通、不多占用。《九章算术》盈不足术把这一直觉推向极致:两次假设、两次盈亏,用最少的额外信息夹逼出真值——辅助假设被「用到尽」又「不过度」。

自由构造是同一种美德的范畴论版本:给集合 X「借」一个群结构时,我们只引入必须引入的——元素的一切拼接(词),而不引入任何额外关系(除非关系由群公理强迫)。于是任何「把字母送到群里的方案」都恰好延拓为同态——最省力的构造,换来最广的适用。这不是巧合:伴随的万有性正是「无多余假设 ⟹ 无阻碍延拓」的严格表达。

刘徽注《九章》曰「析理以辞,解体用图」——把道理拆成可运演的词句、把结构画成可观察的图形。范畴论的伴随三角正是这两句话的现代注脚:辞(Hom 同构)与图(三角桥)互为表里。

带走一句话:好构造都「借」得节制——借得最少,还得最快,用得最广。

图 4-16 筹算「借」与伴随的「最省力」 筹算「借」 不足者借、盈者还 最小干预原则 伴随的「最省力」 构造恰好转过一道弯 不多一笔不少一笔 同一直觉 《九章》「盈不足术」:两设盈亏,夹逼真值—— 「最小假设解决最大问题」的万有求解 自由构造=给字母最小的结构(词),不多给一个关系——伴随是「最省力」的严格化
图 4-16 筹算「借数」与盈不足术的直觉:用最少的假设把问题夹逼出来。自由构造给字母表「最小的结构」(只有拼接、没有关系),恰好转过一道弯满足一切同态需求——伴随是「最省力原则」的严格化身。
123速查

第四章 伴随函子:自由与遗忘的辩证第四章速查表

对象一句话定义页
伴随 F ⊣ GHomD(FA, B) ≅ HomC(A, GB)(自然)p96–97
单位 ηηA: A → GFA(id 的转写像)p98
余单位 εεB: FGB → B(id 的原像)p98
三角恒等式Gε∘ηG = id,εF∘Fη = idp98
自由群伴随HomGrp(F(S), G) ≅ HomSet(S, UG)p99
Galois 连接f(x) ≤ y ⟺ x ≤ g(y)(⌈·⌉ ⊣ ⌊·⌋)p100
右伴随保极限G(Lim D) ≅ Lim(G∘D)(左保余极限)p101
伴随唯一性单位(或余单位)处处同构 ⟹ 另一半被唯一确定p102
点式伴随逐对象核对 Hom(A, GB) ≅ Hom(FA, B)p105
忘却的层级忘却函子逐级自由:群 ← 幺半群 ← 集合p106
对偶空间V ↦ V* 与 V ↦ V** 的伴随读法p107
Frobenius 伴随左右伴随重合(自伴随)的一族p108
伴随函子定理左伴随存在 ⟺ 每个对象都有万有箭头(初对象条件)p109
Currying 伴随(−)×S ⊣ (−)S(ε 即求值 ev)p111

使用建议:伴随是全书最高频的装置,本表建议背到「看见 Hom 同构就能默写 η、ε 与三角」。第五章的速查表把「单子」一族接续在「伴随 ⇒ 单子」一行之后,两表连读即得第四、五章的全部机器。

124讲义

第四章 伴随函子:自由与遗忘的辩证衔接讲义:通往单子——结构如何自我生成

第四章完成了什么。把「成对的构造」升格为中心定理:伴随——定义三套(Hom 合同、单位余单位、万有性)等价;标准例子一打(自由–遗忘、Galois、量词三明治、指数、对偶、诱导限制);存在性有判据(伴随函子定理);演算有三招与三条纪律。

两个悬而未决的现象。① 三角等式描述了 UF 与 FU 的「近似逆」行为——但 UF 单独看(自由后遗忘)也是一座自成体系的结构:它的乘法 μ 与单位 η 遵守什么公理?② 商构造(自由幺半群模掉关系、群论商群)与自由构造是什么关系?
带着问题走的路标。第五章回答两者:单子=伴随心跳的独立生命(5.3–5.8:定义、EM 范畴、Kleisli、比较定理、余单子);幺半范畴与幺半群对象铺好张量世界的地基(5.1–5.2、5.9–5.11);泛代数把「运算+方程」收编为单子(5.13)——商构造从此有了统一户口。
图 4-17 衔接预告:从伴随拆出单子 伴随 F ⊣ U η: X → UFX (自由化的万能引入) 复合 T = UF μ = UεF (自我作用·自我粘合) 拆下来单卖 单子 (T, η, μ) 「结构的结构」——不需要另一半也能活 预告:单子的三条公理恰是三角等式的改写——伴随的心跳成为独立的生命
图 4-17 伴随的心跳——单位 η 与余单位 ε——可以拆下来单独研究:复合 T = UF 带着 η 与 μ = UεF 自成一套公理,这就是单子。第五章的主题:哪些结构能这样自我生成,以及它们如何收编「商」「补全」「程序副作用」。
第五章

单子与幺半范畴:结构的自我生成

自由–遗忘的伴随对里藏着一台永动机:复合 T = UF 自己作用自己,配上单位与余单位的影子,就得到单子——「结构的结构」。本章先铺两个舞台:幺半范畴(张量积的世界,Vec 的 ⊗、链复形的 ⊗)与幺半群对象(在范畴里当群——Hopf 代数与李代数在此入册)。随后单子登场:列表单子把「不定个数的操作」装进盒子,Maybe 单子把「可能失败」变成类型,闭包单子把「环境依赖」收进函数。Eilenberg–Moore 范畴是单子的代数(单子的模型),Kleisli 范畴是它的另一种展开(自由模型),比较定理把两端连齐;余单子是对偶的一面。伴随单子定理断言:单子恰来自伴随——每个单子都有 EM 范畴上的标准伴随。后半延伸到泛代数(运算与方程即单子)与程序语言(单子是「可编程的分号」);双代数与卷积让幺半群对象重逢。读完本章,将看见结构如何自我生成——这是范畴论最深刻的动力学。
页型节奏:导引 → 讲义(概念 · 定理 · 证明 · 一步一图)→ 例题 → 习题 → 地图 · 小结 · 思想卡 · 挑战 · 实验
125导引

第五章 单子与幺半范畴:结构的自我生成第五章导引:结构如何自我生成

一句话直觉。第四章的伴随 F ⊣ U 送出一份复合 T = UF——它自带「单位」η 与「乘法」μ,自成一套公理:这就是单子。本章先给张量世界立规矩(幺半范畴),再把单子研究透彻,最后让两者在「幺半群对象」处会师。

为什么需要幺半范畴。「张量」在 Vec(⊗)、链复形(⊗)、集合(×)里各有一套公理——结合、单位、(交换)——每次重写一遍。幺半范畴把这些公理一次立稳:一个对象配一种「乘法式」的拼装运算。第五章后半的「在范畴里当群」(幺半群对象)全靠这个舞台。
为什么单子值得单开一章。自由–遗忘、闭包、列表、可能失败——四种看似无关的构造竟是同一个公理系统的四个样例。更惊人的是泛代数的回收:「运算+方程」定义的代数理论,其「代数」全体恰是某个单子的代数——商构造、自由代数、方程推理从此有统一户口。
本章路线。5.1–5.2 立张量舞台;5.3–5.8 单子全传(定义、例子、EM、Kleisli、比较定理、余单子);5.9–5.11 张量世界的深入(例子、对称、闭);5.12–5.16 分类定理与应用(泛代数、程序、双代数、误读)。
图 5-1 本章地图:张量给舞台,单子演主角 幺半范畴 张量 ⊗ 的世界 (5.1–5.2、5.9–5.11) 单子 T = UF 的独立生命 (5.3–5.8、5.12) 伴随的 心跳拆卖 应用:泛代数(5.13)· 程序语言(5.14)· 双代数(5.15) 两条线一张网:张量给舞台,单子演主角 终点一问:什么结构可以「自我生成」?答案:凡来自伴随者皆可
图 5-1 本章两条线:幺半范畴给「张量世界」立规矩;单子把第四章伴随的心跳(η 与 UF)拆下来单独研究。三处应用(泛代数、程序语言、双代数)是同一台机器的三种出货。
126讲义

第五章 单子与幺半范畴:结构的自我生成5.1 幺半范畴:张量积的世界

下一步登楼:让「乘法」本身范畴化。幺半范畴=一个范畴配上「张量积」与「单位」。

幺半范畴。数据 (C, ⊗, I, α, λ, ρ):双函子 ⊗: C × C → C(张量积)、单位对象 I、结合子 αA,B,C: (A⊗B)⊗C → A⊗(B⊗C) 与左右单位子 λ, ρ——皆为自然同构,满足五边形与三角相干图。∎

例子先行:(Set, ×, 单点)、(Vec, ⊗, k)——线性代数的张量积、(Ab, ⊗, ℤ)、(Cat, ×, 1)。要点是态度的转变:结合不要求等式,只要求相干的同构——两条「换括号的路」给出同一个重排结果。Mac Lane 的相干性定理说:只要五边形与三角成立,更复杂的相干图自动成立。

((A⊗B)⊗C)⊗D (A⊗B)⊗(C⊗D) A⊗(B⊗(C⊗D)) (A⊗(B⊗C))⊗D A⊗((B⊗C)⊗D) 两条换括号的路:终点一致 五边形:换括号的自由,由相干性守住
图 5-2 幺半范畴的五边形:全部「换括号」路径彼此相干——「结合」从等式弱化为指定的、彼此一致的 同构。

为什么容忍同构而不苛求等式?因为真实数学里结合律本来就「差一个同构」:向量空间 (U⊗V)⊗W 与 U⊗(V⊗W) 自然同构而非相等。范畴论不假装差异不存在,而是给差异发牌照——相干性就是牌照的编号系统。

CCC 复习连线:取 ⊗ 为积、I 为终对象,则「闭」幺半范畴(再配内 Hom [B,C] 满足 Hom(A⊗B,C) ≅ Hom(A,[B,C]))恰好是第三章的 Cartesian 闭范畴——指数定律就是「闭」的定义(p75–76)。

127讲义

第五章 单子与幺半范畴:结构的自我生成5.2 幺半群对象:在范畴里当群

有了张量积,「幺半群」这个代数名词可以搬进任何幺半范畴——公理一套,舞台常新。

幺半群对象。幺半范畴 (C, ⊗, I) 中的幺半群对象是 (M, μ, η):μ: M⊗M → M(乘法)、η: I → M(单位),满足结合律 μ∘(μ⊗id) = μ∘(id⊗μ) 与单位律 μ∘(η⊗id) = μ∘(id⊗η) = id(经单位子 λ、ρ 微调)。∎

舞台(幺半范畴)幺半群对象是注
(Set, ×, 单点)普通幺半群μ 二元运算、η 单位元
(Ab, ⊗, ℤ)环加法群上再配分配的乘法
(Vec, ⊗, k)k-代数μ: V⊗V→V 双线性自动
(End(C), ∘, id)单子!自函子范畴——p128 主角
(Top, ×, 单点)拓扑幺半群μ 连续;加逆元即拓扑群

第四行是本章的枢纽:自函子范畴 End(C)——对象是函子 C → C、箭头是自然变换、「乘法」取复合、「单位」取恒等函子——其中的幺半群对象,正是下一页的单子。Mac Lane 的名言在此兑现:「X 上的单子,不过是 X 的自函子范畴上的幺半群对象——乘法换成复合、单位换成恒等函子」。

这行表的震撼在于「一次定义,处处实例」:环=Ab 中的幺半群对象、拓扑群=Top 中的群对象、单子=End(C) 中的幺半群对象——各分支的「代数构造」原本是同一条公理在各自舞台上的演出。范畴论没有统一各分支的内容,它统一的是各分支的句法。

再走半步:幺半群对象+逆元箭头=群对象。(Top, ×) 中的群对象=拓扑群;(Ab, ⊗) 中的群对象=Hopf 代数——代数各支在范畴语言里重新列队,口令只有一套。第六章(三)将问:这套句法对「数学对象是什么」说了什么?

128讲义

第五章 单子与幺半范畴:结构的自我生成5.3 单子:来自伴随的结构

凡有伴随,必有单子——本章最经济的定理:结构不要钱,伴随自带。

单子。范畴 C 上的单子是三元组 (T, η, μ):函子 T: C → C、自然变换 η: id ⇒ T(单位)、μ: T∘T ⇒ T(乘法),满足单位律 μ∘Tη = μ∘ηT = id 与结合律 μ∘Tμ = μ∘μT。∎

定理(伴随 ⇒ 单子)。设 F ⊣ G(F: C → D)。令 T = G∘F(先造后忘)、η 为伴随单位、μ = GεF(伴随余单位穿越两侧)。则 (T, η, μ) 是 C 上的单子。

证(骨架)。单位律两式即伴随的两个三角恒等式(p98)逐字重抄;结合律是 ε 的自然性方块穿过 G−F。∎

自由群先现身例:T(S) = U(F(S))=「S 上的全部字」;ηS(s) = 单字 s;μ 把「字的字」(字表,每项是一串生成元)拍平成字——两层序列压一层。单子律逐条验:μ∘Tη 每个字包一层再拍平=原字(单位);μ∘μT 与 μ∘Tμ 都是「三层压一层」,先压里层或先压外层结果一致(结合)。

A FA TA ηA(生成) 遗忘 U T = U∘F(先造后忘) μ 把两层结构压成一层:装袋两次、拆一次
图 5-3 单子从伴随中长出:T = G∘F,η 生成、μ = GεF 压缩——伴随留下的指纹。

三条线在此拧成一股:第三章的泛性质(伴随的万有语言)、第一、二章的自然变换(η、μ 的兼容性)、即将展开的计算线(单子=程序里的包装句式)。单子不是新物种,是伴随之果。

129讲义

第五章 单子与幺半范畴:结构的自我生成5.4 单子的例子:列表、Maybe 与闭包

四个单子走马上任,全部来自伴随,全部能在纸上验票。

例 1(列表单子)。L(A) = A∗(有限序列),来自自由么半群伴随。η(a) = [a]、μ=拍平(表的表 → 表)。单子律:拍平不丢信息。∎

例 2(Maybe 单子)。M(A) = A ⊔ {∗}(「有值或空」)。η(a) = a、μ 两层合并(有一层空即全空)。程序语言的 Optional、可空类型是它的方言。∎

例 3(幂集单子)。P(A)。η(a) = {a}、μ(S) = ∪S(集合族的并);结合律=并的结合。∎

例 4(闭包单子)。Galois 连接 f ⊣ g(p100)造 T = g∘f:闭包算子,η 膨胀 x ≤ Tx、μ = id(幂等)。拓扑闭包、子群生成、线性 span 全体归队。∎

单子η(单位)μ(乘法)伴随出身
列表 L单元素表拍平自由 ⊣ 遗忘 (Mon)
Maybe M原值两层合并添点 ⊣ 遗忘点
幂集 P单点集并集生成 ⊣ 幂集型
闭包 c膨胀幂等 μ = idGalois 连接复合

四例同框,句法一目了然:η 把裸值装进上下文,μ 把两层上下文压成一层。列表的上下文是「多解」、Maybe 是「可失败」、幂集是「非确定」、闭包是「已饱和」——「上下文」这个模糊词,由 (η, μ) 律精确定义。

程序语言的问候语在此预备(p151 实验亲跑):单子=「带效应的值」的句式;函数式编程把 return/flatten 做成接口,而它们的数学身份正是 η 与 μ——一九五八年的代数拓扑名词,成了半个世纪后工程师的日常词汇。

检索旧知:第 69 页不交并的「贴标签」在 Maybe 单子里重生——A ⊔ {∗} 的 ∗ 就是那个标签。范畴构造反复转世,每一次都带着万有性的护照。

130讲义

第五章 单子与幺半范畴:结构的自我生成5.5 Eilenberg–Moore 范畴:单子的代数

单子在手,两种范畴将从中长出。第一种把单子读成「代数理论」。

T-代数与 Eilenberg–Moore 范畴。单子 (T, η, μ) 的 T-代数是对 (A, a: TA → A),满足 a∘ηA = id 与 a∘Ta = a∘μA。T-代数与保结构映射构成 EM 范畴 CT。∎

读法:把 T 当作「表达式构造器」,a 是求值——单位律说「单元素表达式求值得自身」,结合律说「先组装再求值 = 先逐层求值再组装」。以列表单子为例,L-代数恰好是幺半群:求值映射把序列折成一个元素(单元素求值=自身给出单位律;折法无所谓给出结合律;空序列折出单位元)。

代数的世界 CT 对象 = (A, a: TA→A) 裸对象的世界 C 对象 = A(无求值) 遗忘求值 自由代数 A↦TA 自由 ⊣ 遗忘在镜像世界重新长出:伴随再生伴随
图 5-4 Eilenberg–Moore:把单子读成代数理论。A ↦ TA 与遗忘构成新的伴随——单子环闭合一圈。

深意:单子不只「来自」伴随,还记得出身——EM 里的自由–遗忘对恰好把单子 T 原样造出(环闭合)。列表单子展开成 Mon(么半群全体)、闭包单子展开成自身的饱和世界。EM 是单子的「正典展开」:对象=带求值的代数,而求值恰是单子规定的样子。

131讲义

第五章 单子与幺半范畴:结构的自我生成5.6 Kleisli 范畴:单子的另一种展开

同一位单子,还有第二副面孔——把「效应」读进箭头里。

Kleisli 范畴。单子 (T, η, μ) 的 Kleisli 范畴 CT:对象与 C 相同;从 A 到 B 的箭头是 f: A → TB(「带效应的映射」);复合用 μ 打接:g ∘K f = μ∘Tg∘f;单位是 η。∎

以列表单子为例:Kleisli 箭头 A → L(B) 是「一个输入、一组输出」——非确定性映射。Kleisli 复合=「先算第一段的所有输出,再对每个输出跑第二段,最后拍平」。三个老朋友立刻到场:

单子Kleisli 箭头读作复合读作
列表 L一对多(非确定)全路径展开后拍平
Maybe M可能失败的计算失败即中断(短路)
幂集 P关系 R ⊆ A×B关系的复合

「可能失败的计算做复合」——程序语言异常处理的骨架;「关系做复合」——第三章拉回(对上号)的亲兄弟。两种展开都配伴随:EM 的自由–遗忘(p130)与 Kleisli 的 η-自由–遗忘,且两者都把原单子原样造出——伴随 ⇄ 单子的环完全闭合:伴随生单子,单子再生伴随,往复无穷。

EM:CT 管对象:带求值的代数 Kleisli:CT 管过程:带效应的映射 同一单子,两副面孔——第六章各领一职
图 5-5 两种展开:EM 与 Kleisli——「结构」与「过程」的一对读法。

预告:第六章 DisCoCat 一节里,语言的「文法」走类似 EM 的代数路线、「语义组合」走类似 Kleisli 的效应路线——两种展开各司一职(p162)。本章页尾的实验(p151)将让列表单子在 Python 里跑起来。

132讲义

第五章 单子与幺半范畴:结构的自我生成5.7 比较定理:Kleisli 与 EM 的两端

一句话直觉。同一个单子 T 可以由许多对伴随生成;比较定理说这些伴随全部排在 Kleisli(最小)与 EM(最大)之间——单子反客为主,成了给伴随定界的尺子。

定理(比较定理)。设伴随 F ⊣ U 生成单子 T = UF。则存在唯一函子(比较函子) K: CT → C 保持左右伴与 T(从 Kleisli 端),以及唯一函子 L: C → CT(到 EM 端);且 U = Û ∘ L、F = L ∘ F̂。⟹ CT 是「生成 T 的伴随」的初始对象,CT 是终对象。

读法一:单子的「谱」。比较定理给每个单子配一条伴随谱系:Kleisli 端最「自由」(对象不动、态射程序化),EM 端最「代数」(对象带 T-结构);中间的伴随对应 T 的各种「实现」。研究 T = 研究这条谱系的几何。
读法二:两端的本职。Kleisli 范畴里 T-结构还没「做成对象」,只活在态射里——程序语言选它作语义(5.14);EM 范畴里 T-结构已对象化成代数——泛代数选它作户口(5.13)。一个端管执行,一个端管模型。
与伴随单子定理的分工。5.12 的定理说「一切单子来自伴随」(存在性);本页说「伴随由单子排序」(结构学)。两条合起来,伴随与单子互为经纬——范畴论动力学的完整地图至此成型。
图 5-6 比较定理:Kleisli 与 EM 的两端 Kleisli 范畴 C_T 「自由的极端」 对象不变·态射是程序 EM 范畴 CT​ 「代数的极端」 对象是 T-代数 比较定理:对任何伴随 F ⊣ U 生成 T 存在唯一比较函子把两者接进标准位置 两个极端 Kleisli = 初始(谁都能到它);EM = 终(它收编所有解)——「一族两极」的完整刻划
图 5-6 给定单子 T,Kleisli 范畴是「T 生成的伴随」中最小的一端(初始),Eilenberg–Moore 范畴是最大的一端(终);比较定理断言:任何生成 T 的伴随都可通过唯一函子安插在两端之间——单子虽由伴随而来,却能反过来测量所有伴随。
133讲义

第五章 单子与幺半范畴:结构的自我生成5.8 余单子:对偶的一面

一句话直觉。单子「把元素装进结构」(列表、闭包);余单子反其道:给每个对象配上「可无限解包的观察装置」——余代数的世界。

定义(余单子)。函子 G: C → C 配 ε: G ⇒ id(余单位)与 δ: G ⇒ G2(余乘法),满足三角等式的对偶版。G-余代数是对象 X 配 x: X → GX(「一步演化/观察」)。由余自由–遗忘的伴随对生成。

动力系统即余代数。自映射 x: X → X 是「恒等函子」的余代数;无穷流 x: X → X × A(头尾分解)是「积函子」的余代数;标记迁移系统、自动机同理。余代数把「演化的对象」从特例升为标准语汇——函数式世界的「生成器」全是余代数。
终余代数与归纳/共归纳。单子侧的「初始代数」给归纳法定义(自然数的标准样例);余单子侧的终余代数给共归纳证明与无穷对象的语义——「行为等价」(观测不可区分)是终余代数上的同余。对偶原理(1.14)在这里兑现成两套证明技术。
与第五章主线的汇合。余单子提醒我们:范畴论没有「主副」之分,一切结构与其对偶同真。第五章余下的两页(幺半闭、伴随单子定理)的每一句陈述都有对偶镜像——读时不妨常翻 C°。
图 5-7 余单子:对偶的一面 单子 (T, η, μ) T: C → C η: id ⇒ T;μ: T² ⇒ T 「生成·粘合」 余单子 (G, ε, δ) G: C → C ε: G ⇒ id;δ: G ⇒ G² 「解包·扩散」 对偶 C → C° 样板:余自由余代数(无穷流·动力系统);概率测度的 Giry 单子镜像 口诀:单子「把东西装进 T」,余单子「从 G 里无穷地取出结构」
图 5-7 翻转全部箭头(1.14 对偶原理),单子变成余单子:余单位 ε「解包」、余乘法 δ「扩散」。余代数是动力系统、无穷流与概率测度的天然语言——余单子把它们收进同一户口。
134讲义

第五章 单子与幺半范畴:结构的自我生成5.9 幺半范畴的例子:Vec 的张量与链复形

一句话直觉。「张量」不是某一个运算,而是一类运算:凡「把两个对象拼成一个、结合可查、有空对象」的拼装,都是幺半范畴。

回顾与补全(幺半范畴)。幺半范畴 (C, ⊗, I, α, λ, ρ):张量 ⊗: C × C → C、单位对象 I、结合与单位的相容同构 α、λ、ρ(满足五边形与三角图交换)。本页补四个样板的具体读法。

Set 的读法。⊗ = 笛卡儿积、I = 单点集。幺半群对象(5.2)在 Set 里就是普通幺半群——「在范畴里当群」的第一现场。对角线 Δ: X → X × X 使 Set 还余幺半(余积不交并作张量),第 151 页实验的列表单子借这条对角线产词。
Vec 的读法。⊗ = 张量积、I = 基域 k;dim(V ⊗ W) = dim V · dim W。双线性映射=张量积的线性映射——「双」字的范畴论归宿。幺半群对象=代数(代数结构)、余幺半群对象=余代数(5.15 双代数的两半)。
链复形与 Ab 的读法。链复形的张量=双复形总复形(第五章谱序列的原材料);Ab 的 ⊗ 给 ℤ/n ⊗ ℤ/m = ℤ/gcd——数论味最浓的样板。这四个样板的「幺半群对象」分别是:幺半群、代数、微分分次代数、环——一张表看穿「代数结构」的统一。
图 5-8 幺半范畴的四个样板 范畴 张量 ⊗ 单位 I 特色 Set 笛卡儿积 × 单点 1 对角线余单子 Vec_k 张量积 ⊗ k 线性代数的心脏 链复形 双重复形 ⊗ 基环 k Künneth 的家 Ab 张量 ⊗ ℤ Tor 的舞台 同一条公理(结合·单位·交换),四种风味——幺半范畴是「乘法世界」的统一语汇
图 5-8 四个标准幺半范畴:Set(积)、Vec(张量)、链复形(双复形张量)、Ab(张量)。同一条公理系统在四个领域各长一副面孔——第五章的「幺半群对象」「单子的张量读法」全部借用这张表。
135讲义

第五章 单子与幺半范畴:结构的自我生成5.10 对称幺半结构与交换性

一句话直觉。张量不必交换;加了对称(换位结构)才有「交换」可谈——交换性从公理降级为一种额外装备。

定义(对称幺半范畴)。幺半范畴配自然同构 cA,B: A ⊗ B ≅ B ⊗ A,与结合、单位相容且 c2 = id(六边形图交换)。称 X 交换,若其乘法满足 m ∘ c = m(换位后乘法不变)。

对称装备的价值。有了 c,才可谈「交换幺半群对象」(交换代数)、才有「双积」「卷积」的无歧义定义(5.15);没有 c 的世界(辫幺半范畴)仍然自洽——量子群与纽结不变量住在那里,第六章的量子语言提前点名。
Set 的礼物:对角线。对称幺半范畴里可谈「同一元素用两次」:对角线 Δ: X → X ⊗ X。这在 Vec 里失效(向量不能复制)——「可复制性」是对称结构的深层差别,线性代数「没有 × 的除法」与量子计算「不可克隆定理」共享同一个范畴根源。
交换幺半群对象即交换代数。在 Vec 的对称幺半结构里,「交换幺半群对象」恰是(结合、交换、有单位)k-代数;在 Set 里恰是交换幺半群;在链复形里恰是交换微分分次代数——第五章的口号「在范畴里当群」至此获得「当交换群」的完整版。
136讲义

第五章 单子与幺半范畴:结构的自我生成5.11 幺半闭范畴与内部 Hom

一句话直觉。张量世界里也可以谈「函数空间」——内部 Hom:把 Hom 变成对象,指数对象的幺半版。

定义(幺半闭范畴)。幺半范畴 C 称闭,若每对 A、B 有对象 [A, B](内部 Hom)使 C(X ⊗ A, B) ≅ C(X, [A, B]) 自然成立。Set 闭([A, B] = 函数集);Vec 闭([A, B] = 线性映射空间);链复形闭(内 Hom 复形)。

第三章指数对象的幺半版。CCC 的 Currying 同构正是「(−) × A ⊣ [A, −]」——闭即「张量有右伴随」。幺半闭=伴随的又一次出场:本册的三大主角(泛性质、极限、伴随)在张量世界全部复用。
内部 Hom 的两大用途。① 「函数也是对象」:可以再被张量、被求值(ev: [A, B] ⊗ A → B——求值是万有的);② 卷积的舞台:两个幺半群对象的「卷积」由内部 Hom 与张量拼出(5.15)。
读数对照。Set:[A, B] 元素数 |B||A|;Vec:dim [A, B] = dim A · dim B;链复形:内 Hom 的 H0 = 链映射、H−1 = 链同伦差——第二章同调代数(HA 册的语言)在这一页与范畴论握手。
137讲义

第五章 单子与幺半范畴:结构的自我生成5.12 伴随单子定理:单子的分类

一句话直觉。第四章说「伴随送出单子」;本页定理反手补全:每个单子都是某对伴随的产儿——它的家就是 EM 范畴。

定理(Eilenberg–Moore,伴随单子定理)。对任何单子 (T, η, μ), forgetful Û: CT → C 有左伴随(自由 T-代数),且其生成单子恰为 T(η、μ 原样复现)。⟹ 单子范畴(C ↦ C 上的单子)与伴随范畴(挂 C 的伴随对)之间的两个函子互逆——「伴随 ⇄ 单子」是等价级的对应( Kleisli 端给半边)。

证明的两步。① 造自由代数:(T X, μX) 本身是 T-代数,ηX 是万有箭头——三角等式恰好保证延拓唯一;② 验生成:UF 在 EM 上的复合读回 T、η 复现 η、μ 复现 μ。全部材料都是 5.3–5.5 的定义——定理是「心跳拆卖」合法性的最后确认。
与 Beck 单子性判据。更深的追问:「这个函子 U 的单子有额外性质吗?」Beck 判据用「U 对某类余极限的持有度」给 EM 范畴的性格分档——本册点到名为止;文献指引:Mac Lane §VI.8、Lambek–Scott。
通往 5.13。泛代数一瞥将证明:「运算+方程」的理论 L 的代数范畴恰是某单子 TL 的 EM 范畴——自由代数、商代数、方程推理全部借伴随读法一次说清。单子定理是该结论的引擎。
图 5-9 伴随单子定理:每个单子都有家 任给单子 (T, η, μ) —— 它从哪来? (5.3 手工造的样例们) 伴随单子定理 T 总来自其 EM 范畴上的 自由 ⊣ 遗忘 答案:总能 推论:研究单子 = 研究一类伴随;单子理论 = 伴随理论的代数镜像 配合比较定理(5.7):EM 端是「最大实现」,Kleisli 端是「最小实现」 泛代数应用(5.13):「运算+方程」的理论的代数范畴 = 某单子的 EM 范畴
图 5-9 伴随单子定理:任何单子 T 都由「EM 范畴上的自由 ⊣ 遗忘」伴随生成——单子与伴随互为镜像:伴随生成单子,单子反过来组织伴随的谱系。泛代数的「运算+方程」理论由此获得范畴户口。
138讲义

第五章 单子与幺半范畴:结构的自我生成5.13 泛代数一瞥:运算与单子

一句话直觉。「给一组运算、一组方程」定义代数(群、环、格……)——泛代数的老方法。单子理论证明:这套方法可以被一个单子完全章码。

定理(Lawvere 理论,浓缩陈述)。小范畴 L(对象=自然数,态射=「n 元运算的形式组合」)配严格的积结构;L-模型(保积函子 L → Set)全体构成范畴,等价于某单子 TL 的 EM 范畴。群、幺半群、环、格、模(对固定环)……全部纳入。

三条读法。① 自由代数= TL(X)(词结构由运算树给出);② 商代数=把生成关系加入同余(单子的「关系注入」= 第五章核心机制);③ 方程推理(Birkhoff 定理)= 单子演算的同余闭包——「等式证明」获得机械语义。
表达力的边界。「全域定义」的运算才在册:域的逆元在 0 处无定义——域不是任何单子的 EM 范畴(需部分运算或 ess. algebraic 理论)。「什么能被单子表达」本身是一门分类学。
本册的位置。4.11 的自由层级、本页的泛代数、5.14 的程序语义——三个方向共用单子这台机器。机器的零件(η、μ、EM、Kleisli)在第 142–145 页的例题与习题里逐一上手。
图 5-10 泛代数一瞥:运算与方程的单子户口 代数理论 L 运算(·, e, −¹…) +方程(公理组) L-代数范畴 ≃ CT_L​ 某单子的 EM 范畴 (Lawvere 理论的定理) 编码 自由代数 = T 的自由代数;商代数 = 同余闭包;方程推理 = 单子演算 一单子统吃:群、环、格、模……「运算+方程」世界全部获得统一户口 边界:不收「域」(逆元是部分运算)——理论的表达力也有账本
图 5-10 「运算+方程」定义的代数理论 L,其代数范畴等价于某单子 T_L 的 EM 范畴(Lawvere 理论视角的浓缩版)。自由代数、商代数与方程推理从此共用单子语言;表达力的边界同样清晰——域不在册(部分运算要更多装置)。
139讲义

第五章 单子与幺半范畴:结构的自我生成5.14 单子与计算:程序语言的视角

一句话直觉。程序语言里「先做这个、再做那个」的分号,在纯函数世界里没有户口。Moggi 1989 年的观察:分号就是单子的乘法 μ。

读法。把「带效果的计算」编码为函子 T:类型 X ↦ T X(「产生效果后返回 X 型结果」的计算全体)。return: X → T X(不产生效果的平凡计算)= 单位 η;bind(把 T X 交接到 X → T Y)= 乘法 μ 推出的运算。三条单子公理恰是「分号的三条常识」:return 是左单位、右单位,接续可结合。

表上五行的快速读法。Maybe:加一个「失败点」;列表:加「多条路径」(自由幺半群——第 151 页实验的对象);Reader:给每个计算配环境参数;State:配「读状态、改状态、返回」的三件套;Writer:配日志的幺半群。全是 5.4 例子族的应用句。
为什么是单子而不是别的。历史上也试过别的(comonad、arrow):单子恰好覆盖「顺序效果」,且单子律=程序员的直觉律。Haskell 语言把这一观察做进类型系统——范畴论的一次最显赫的工程出圈。
回到数学。程序单子没有丢掉数学味:Reader 是指数对象(幺半闭,5.11)、State 是 Reader 的复合、Writer 依赖幺半群对象(5.2)——「写程序」与「本册前四章」共享同一套词汇,这正是结构主义(第六章)的实证。
图 5-11 程序副作用的单子周期表 副作用 单子 编码 可能失败 Maybe X ↦ X + 1 多条结果 列表 X ↦ 自由幺半群 环境读取 Reader X ↦ (E → X) 可变状态 State X ↦ S → X × S 日志追加 Writer X ↦ X × Mon Moggi 1989:程序的分号 = 单子的乘法 μ——「副作用」全部获得范畴户口
图 5-11 程序语言的常见副作用各对应一个单子:可能失败(Maybe)、多条结果(列表=自由幺半群)、环境(Reader)、状态(State)、日志(Writer)。程序的分号被 Moggi 读成 μ——单子是「可编程的复合」。
140讲义

第五章 单子与幺半范畴:结构的自我生成5.15 双代数与卷积:幺半群对象重逢

一句话直觉。5.2 说「在范畴里当群」需要乘法;本页补上另一半——余乘法(复制与删除),合体为双代数;「群」的范畴化完全体是 Hopf 代数(双代数+对合)。

定义(双代数)。对称幺半范畴里,对象 A 配幺半群结构 (m, u) 与余幺半群结构 (Δ, ε),要求 Δ、ε 是代数同态(复制尊重乘法)。卷积:给幺半群对象 A 与任意对象 B,Hom(A, B) 上的乘法 f ∗ g = mB ∘ (f ⊗ g) ∘ ΔA——「先复制、分别作用、再合并」。

卷积无处不在。函数的卷积(分析)、多项式乘法(代数)、群代数中的乘法(表示论)全是 ∗ 的实例——「先拆开、分别算、再合上」是张量世界的通用招式。
群代数与对合。k[G] 的 Δ(g) = g ⊗ g(群元「复制自己」)、ε(g) = 1、对合 S(g) = g-1——三条合起来恰使 k[G] 成 Hopf 代数。「群的性质」被「对合的存在」编码:Hopf = 范畴化的群。
与本章主线的合拢。幺半范畴(5.1)给舞台、幺半群对象(5.2)给演员、对称(5.10)给换位、闭(5.11)给内部 Hom——双代数把全套装备一次性上场。本册的范畴论装备清单,到此可以合卷清点。
图 5-12 双代数与卷积:幺半群对象重逢 幺半群对象 m: A ⊗ A → A u: I → A(乘·单位) 余幺半群对象 Δ: A → A ⊗ A ε: A → I(余乘·余单位) 双代数:两结构相容(Δ 和 m 相容) 卷积:Hom(A, B) 上用 Δ 与 m 造乘法 合体 样板:群代数 k[G](Δ(g)=g⊗g);Hopf 代数=双代数+对合——「在范畴里当群」的完全体
图 5-12 幺半群对象(乘法)与余幺半群对象(余乘法)在相容条件下合体为双代数;卷积用两结构在 Hom 上造新乘法。群代数与 Hopf 代数是标准样板——5.2 的口号「在范畴里当群」至此完全体。
141讲义

第五章 单子与幺半范畴:结构的自我生成5.16 常见误读与澄清

一句话直觉。单子理论的五面墙:最危险的是把「T-代数」当「T 的不动点」。

墙一:T-代数不是 X ≅ TX。T-代数是结构映射 a: TX → X(解释器),不是同构——列表单子的代数是幺半群(把词表求值),而不是「与自由幺半群同构」的对象。
墙二:单子律 ≠ 幺半律。μ 的结合律是「三次粘合两种次序相等」(幺半味的公理),但单子还要求 η 是 μ 的双侧单位——四条合起来才是单子;只验结合律不算。
墙三:Kleisli 复合次序。Kleisli 态射 X → T Y 的复合「先 g 后 f」记作 f ∘K g = μ ∘ Tf ∘ g——与直觉「先跑 g、把结果交给 f」一致;次序写反是程序语义课的第一大错。
墙四:忘却 Û 不是忘却 U。EM 范畴的 Û 忘的是「T-代数结构」;Kleisli 端没有「忘却到 C」的函子(对象都没对齐)——两端的自定义要分开背。
墙五:单子交换律不自动成立。两个单子的复合不必然是单子(需分配律/交换律条件)——State ⊗ Writer 类的组合是专门研究课题,不是免费午餐。
142例题

第五章 单子与幺半范畴:结构的自我生成例题课(一):单子的验证与构造

例 1(验证列表单子)。T = 自由幺半群函子(X ↦ X 上的词)、η(x) = 单字母词、μ = 词表的展平。验单子律:μ 的结合=「展平的展平=一次展平」(词表嵌套一层与两层展平结果同);η 的双侧单位=「单字母词的展平=原词」「词包单字母层展平=原词」。∎ (第 151 页实验的程序版对拍。)

例 2(验证 State 单子)。T X = S → (X × S)(S 为状态集)。η(x)(s) = (x, s);μ(h)(s) = 先跑 h(s) 得 (h′, s′) 再跑 h′(s′)。三条单子律逐字展开验证(用 S 上函数的结合)。∎ 语义读法:bind = 「跑完一段、把状态接给下一段」——程序分号的数学本体(5.14)。

例 3(构造一个单子:异常+日志)。T X = X + E(异常)× Mon(日志)的复合读法:先 Maybe 后 Writer 的复合。验证:两个单子的这种「串联」恰可交换(异常不产生日志、日志不影响异常)——分配律成立的迷样例;对照 5.16 墙五:并非任意两单子都可交换,本例是「可交换」的幸运特例。∎

143例题

第五章 单子与幺半范畴:结构的自我生成例题课(二):幺半结构的演算

例 1.把数轴变成幺半范畴:验证 (ℕ, ≤, +, 0) 是幺半范畴。

解。薄范畴 (ℕ, ≤) 配张量 ⊗ = +:加法保序(x ≤ y 且 u ≤ v 则 x+u ≤ y+v),是双函子;单位 I = 0。结合子与单位子都是恒等——薄范畴里平行箭头必相等,(x+y)+z = x+(y+z) 之间只有一条 ≤ 箭头。五边形自动成立:相干性在薄世界免费。∎

例 2.算一次张量积:k2 ⊗ k2 是什么?

解。维数相乘:k2 ⊗ k2 ≅ k4,基为 ei⊗ej(i, j ∈ {1,2},共 4 个)。张量积不是直和(k2 ⊕ k2 ≅ k4 维数凑巧同为 4,但 k2⊗k3 ≅ k6 而 k2⊕k3 ≅ k5——乘法对加法)。(Ab, ⊗, ℤ)中同理:ℤ/m ⊗ ℤ/n ≅ ℤ/gcd(m,n)——张量把「互素分家」编码成 0。∎

例 3.在舞台 (Set, ×, 单点) 里,把幺半群对象 (ℕ, +, 0) 的公理逐条「演」一遍。

解。乘法 μ: ℕ×ℕ → ℕ 即加法,单位 η: {∗} → ℕ 取 0。结合律:μ(μ(m,n),p) = (m+n)+p 与 μ(m,μ(n,p)) = m+(n+p) 相等——公理退回小学课本;单位律 μ(0,n) = μ(n,0) = n。要点不在结论而在句式:这三行就是 p127 def 卡逐字落地——公理是剧本,集合只是剧场之一。∎

例 4.在 (End(Set), ∘, id) 里验列表单子的结合律:取三层表 [[[1,2],[3]],[[4]]]。

解。单子结合律 μ∘Tμ = μ∘μT(p128)。先压里层(Tμ 路):每张二阶子表各自拍平——[[1,2],[3]] ↦ [1,2,3]、[[4]] ↦ [4]——得 [[1,2,3],[4]],再拍平得 [1,2,3,4]。先压外层(μT 路):最外层拍一层得 [[1,2],[3],[4]],再拍平也得 [1,2,3,4]。两条路殊途同归——「三层压两层,先里后外或先外后里无所谓」,这就是 End(Set) 里幺半群对象公理的具体舞步。∎

通法提示:p127 的五舞台表,本页演了三行(Set 行例 3、Vec/Ab 行例 2、End 行例 4);第 150 页挑战再把「对偶舞台」补上。公理一次,剧场随便换。

144习题

第五章 单子与幺半范畴:结构的自我生成习题课(一):基本功

习 1(热身)。对 Maybe 单子(X ↦ X + {失败})写出 η、μ,并逐条验证三条单子律。(提示:μ 的本质是「两层失败归并为一层」。)

习 2。证明:单子的 EM 代数中,结构映射 a: TX → X 满足 a ∘ η = id 与 a ∘ μ = a ∘ Ta——并说明两条在幺半群样例里分别是「单字母词求值=自身」与「嵌套求值=一次求值」。

习 3(Kleisli 初见)。写出 Maybe 单子的 Kleisli 范畴:对象是集合、态射 X → Y 是函数 X → Y + {失败};复合是「先跑、失败即短路」。验证结合律——并指出这正是「异常传播」的数学本体。

习 4(幺半范畴热身)。在 (Vec, ⊗, k) 里验证:交换幺半群对象=交换 k-代数。(逐条对照 5.2 定义:乘法双线性、结合、交换、有单位。)

145习题

第五章 单子与幺半范畴:结构的自我生成习题课(二):进阶

习 5(比较函子上手)。对列表单子 T 与「自由 ⊣ 遗忘」伴随 F ⊣ U(Mon 一侧),写出比较函子 K: CT → Mon 在对象与态射上的作用,并验证它保持左右伴随。(提示:Kleisli 态射 X → T Y = 函数 X → 「Y 上的词」;K 把它送到自由幺半群同态。)

习 6(余单子首战)。对积函子 G X = X × A(固定 A)写余单子结构(ε = 投影、δ = 复制 A),验证余单子律;其 G-余代数是「带输出流的对象」——写出动力系统样例。

习 7(闭与求值)。在 (Set, ×, 1) 里验证求值映射 ev: [A, B] × A → B 的万有性(第三章指数的幺半重述);并证明 Currying 同构与「(−) × A ⊣ [A, −]」的 Hom 合同逐字相同。

习 8(Lawvere 理论热身)。幺半群理论 L:一个二元运算、一个常数、三条方程。写出 L 的「n 元运算」是什么(n 到 1 的形式组合),并说明 L-模型恰是幺半群——为 5.13 的单子户口做一次手工登记。

146地图

第五章 单子与幺半范畴:结构的自我生成第五章知识地图

本章一句话。张量给舞台(幺半范畴),单子演主角(伴随心跳的独立生命),比较定理与伴随单子定理收束全局,泛代数与程序语言是同一台机器的两个车间。

概念依赖链。幺半范畴(5.1)→ 幺半群对象(5.2)‖ 单子(5.3)→ EM(5.5)→ Kleisli(5.6)→ 比较定理(5.7)→ 余单子(5.8)→ 例子与闭(5.9–5.11)→ 伴随单子定理(5.12)→ 应用三连(5.13–5.15)。
两条副线。① 程序语义线(Maybe/State/Writer→Haskell);② 代数线(幺半群对象→双代数→Hopf)。两条线在「自由幺半群=列表」处握手。
考试要害。单子四律(三条单子律+结构映射的两条代数律);EM 与 Kleisli 的定义与两端性质;比较定理的「两端夹一谱」读法;「运算+方程=单子」的表达力边界(域不在册)。
图 5-13 第五章知识地图 5.1–5.2 幺半范畴·群对象 5.3–5.6 单子·EM·Kleisli 5.7–5.8 比较·余单子 5.9–5.11 例子·对称·闭 5.12–5.15 定理·泛代数·程序 主线:张量舞台 → 单子主角 → 分类与应用 两条分支:程序语义(5.14)与泛代数(5.13)共用 EM/Kleisli 两端 出口:第六章的逻辑与语言——CCC 与卷积的地平线延伸
图 5-13 主线一条:立张量舞台、拆单子主角、给出分类定理与三大应用。EM 与 Kleisli 两端是全章枢纽——泛代数与程序语义各占一端。
147小结

第五章 单子与幺半范畴:结构的自我生成第五章小结(上):单子的一族三式

正面清单(单子部分)。

定义一族三式。① 函子 T + η + μ + 三条单子律;② 伴随 F ⊣ U 的心跳拆卖(T = UF、μ = UεF);③ EM 范畴的自由 ⊣ 遗忘(伴随单子定理)。三式等价、各有用场。
标配例子。列表(自由幺半群)、Maybe(失败)、Reader/State/Writer(程序)、闭包单子、Giry(概率)。全部来自伴随——伴随单子定理保证无一例外。
两端范畴。Kleisli CT:对象不动、态射是「程序」(初始端);EM CT:对象是 T-代数(终端);比较定理给中间伴随排队。
演算守则。验单子先验 η 双侧单位再验 μ 结合;EM 代数验「a∘η = id 与 a∘μ = a∘Ta」两条;Kleisli 复合先跑后接、次序别反。

易错清单。① 把 T-代数当不动点;② 单子律漏 η 单位条;③ Kleisli 复合次序反;④ 两单子复合想当然(需分配律);⑤ 忘了「一切单子来自伴随」而手工另造定义。

148小结

第五章 单子与幺半范畴:结构的自我生成第五章小结(下):幺半范畴的演算

正面清单(幺半范畴部分)。

定义三角。幺半范畴(⊗、I、α λ ρ);对称(c2 = id 的换位);闭(⊗ 有右伴 [−, −],求值 ev 万有)。
标配例子。Set(×、1)、Vec(⊗、k)、链复形(双复形 ⊗)、Ab(⊗、ℤ)。幺半群对象分别是:幺半群、代数、DGA、环——「代数结构」的统一户口本。
高阶结构。双代数(乘法+余乘法相容)与卷积;Hopf 代数(+对合)=「在范畴里当群」的完全体;群代数 k[G] 是样板。
应用速记。泛代数:理论 L 的代数 ≃ EM;程序:分号=μ、副作用有单子周期表;逻辑:量词即伴随(4.10 的余韵)。

与上半章的接口与出口。上半章(5.1–5.8)立结构;下半章(5.9–5.15)给例子、闭世界、分类定理与三大应用。出口两支:第六章把「闭」推向逻辑(命题即对象)、把「对称闭」推向语言与量子(DisCoCat);综合站把全册收束为一张总图。

149思想卡

第五章 单子与幺半范畴:结构的自我生成思想卡:来自伴随的结构

来自伴随的结构。

数学里最动人的句式之一:「这个东西不是造出来的,它是必然的。」单子就是这样的东西:第四章我们亲手拆出 T = UF,本章的定理反手证明每一个单子都这样诞生——没有野生的单子,只有尚未指认母伴随的单子。

这改变了我们问问题的方式。问「列表单子为什么长这样」,答案不再是「设计者恰好这么定」,而是「它是自由幺半群伴随的必然心跳」;问「程序的分号为什么能复合」,答案是「因为 bind 的三条律恰是单子律」——工程直觉与数学公理在这里指认了彼此。

更深一层:单子理论示范了范畴论的方法论循环——从现象中拆出结构(心跳)、给结构立公理(单子)、再证明结构必然回到现象(伴随单子定理)。结构在拆装之间获得了独立的生命;而生命的尽头,它总是又回到出生的伴随。

一句话带走:凡自我生成的结构,必来自一次伴随——找出那次伴随,就找到了它的身世。

150挑战

第五章 单子与幺半范畴:结构的自我生成挑战:单子与余单子的对偶

本页把 p128 的构造整体掉头:箭头反转、公理镜像——余单子登场。

命题(余单子)。范畴 C 上的余单子是三元组 (T, ε, δ):函子 T: C → C、自然变换 ε: T ⇒ id(余单位)、δ: T ⇒ T∘T(余乘),满足余单位律 εT∘δ = Tε∘δ = id 与余结合律 δT∘δ = Tδ∘δ。

伴随的对偶面。伴随 F ⊣ G 给 C 上单子 GF(p128);同一伴随在 D 侧给出余单子 FG:ε 就是伴随余单位,δ = FηG。验证只动用 p98 的两个三角恒等式——Gε∘ηG = id 兑现一条余单位律,εF∘Fη = id 兑现另一条。∎

三个实验台阶。① 把 p128 def 卡的四条单子律逐条箭头反转,写出余单子四律——对偶不是背出来,是翻转出来;② 验证乘积余单子:T(A) = A×S,ε 取第一投影、δ(a,s) = ((a,s),s)(环境复制)——两条余单位律与余结合律逐点成立;③ 证明 T(A) = (A×S)S 是单子(程序语言的 State 单子)——同一伴随的两侧果实,一侧是单子、一侧是余单子。∎

为什么值得挑战。对偶不是装饰。乘积余单子的 coKleisli 箭头 A×S → B 读作「依赖环境的计算」:同一输入在不同环境给出不同输出——λ-演算里带自由变量的项、程序里「读上下文」,全是它的方言。第六章(三)里,「效应」由单子管、「上下文」由余单子管,一对镜像各司一职。

checkpoint:完成台阶②后对偶地重读 p131——EM 与 Kleisli 的两种展开对余单子照样成立(余 EM、coKleisli);随伴着「伴随⇄单子」的环,「伴随⇄余单子」的环也闭合。

151实验

第五章 单子与幺半范畴:结构的自我生成实验:列表单子的程序实验

p129 预备的问候语现在兑现:亲手在 Python 里实现列表单子的 η(unit)、μ(flatten)与 Kleisli 延伸(bind),枚举验三条单子律。

# 列表单子:unit = η,flatten = μ,bind = Kleisli 延伸
def unit(a):
    return [a]

def flatten(tables):
    return [x for row in tables for x in row]

def bind(xs, f):
    return flatten([f(x) for x in xs])

f = lambda x: [x, x + 10]      # 一对多:非确定映射(Kleisli 箭头)
g = lambda n: [n, -n]

A = [1, 2, 3]
law1 = all(bind(unit(a), f) == f(a) for a in A)          # 左单位律
law2 = all(bind(xs, unit) == xs for xs in (A, [], [7]))  # 右单位律
law3 = all(bind(bind(xs, f), g) == bind(xs, lambda x: bind(f(x), g))
           for xs in (A, []))                            # Kleisli 结合律

print("左单位:", law1, "| 右单位:", law2, "| 结合:", law3)
print("复合 g 在 1 处:", bind(bind([1], f), g))

预期输出:三律全 True;复合示例 [1, −1, 11, −11]——先 f(1) = [1, 11],再对每个输出跑 g,最后拍平:Kleisli 复合「全路径展开后拍平」(p131 表)逐字落地。

改造任务。① 把 f 换成 Maybe 型(返回 [x] 或 []),验「失败即中断」——空表吃掉一切后续(p131 表第二行);② 把拍平换成集合并(幂集单子)重验三律;③ 写 join = flatten 并验证 bind(f) = flatten 作用于映射——即 μ∘Tg 的定义式(p131 def 卡)。

验票心得:三律 True 不是运气——它们是三角恒等式(p98)的列表方言。程序世界的 return/bind 与数学世界的 η/μ,是一九五八与二〇〇八的同一场对话。

152格物札记

第五章 单子与幺半范畴:结构的自我生成〖札记〗珠算口诀与 Kleisli 复合

珠算除法两句入门口诀:「二一添作五」——除数二、本位一,本位改拨五;「逢二进一」——本位满二,向前档进一。整道多位除法被分解成一串逐位步骤:每一步读入「当前位数字+上一步的余数」,吐出「本位商+新余数」。余数在步与步之间流转,像不像上下文在 Kleisli 箭头之间流转?

范畴化只需一句:每一步口诀是 Kleisli 箭头 状态 → 商 × 新状态(效应=进位),逐位接力=Kleisli 复合,「余数并入下一位」=拍平 μ。验一道:3927 ÷ 2——3 逢二进一(商 1 余 1);余 1 并下位 9,逢二进一九次(商 9 余 1);并 2,逢二进一六次(商 6 余 0);7 逢二进一三次(商 3 余 1);余 1 二一添作五(得 0.5)——商 1963.5 ✓。每一句口诀都从状态走进状态,整条链拍平成一道商。

余数 r 本位商 q 新余数 r′ 口诀=Kleisli 箭头(二一添作五 / 逢二进一) 余数并入下一位=拍平 μ:逐位接力=Kleisli 复合 3927 ÷ 2 的接力:逢二进一 ×19 → 二一添作五 → 1963.5 ✓
图 5-14 珠算口诀=带状态的 Kleisli 箭头:余数是流转的上下文,进位是效应,逐位接力拍平成一道商。

回响 p99 例 3:珠算口诀表正是字表 S∗ 上的改写规则——自由么半群的两千年前实操版。算盘是最早的「带状态计算器」,口诀是最早的 Kleisli 口传语言:从状态到状态、效应在档位间流转、复合出商。

下一站预告(第六章札记):《墨辩》的「故、理、类」——推理的口诀版,一步一故、步步相续,与珠算的逐位接力同一种美。

153速查

第五章 单子与幺半范畴:结构的自我生成第五章速查表

第五章速查表(一页备翻)。

条目定义 / 陈述出处
幺半范畴(C, ⊗, I, α, λ, ρ);五边形+三角5.1
幺半群对象m: A⊗A → A、u: I → A,乘法公理5.2
单子(T, η, μ);η 双侧单位、μ 结合5.3
EM 范畴T-代数(a: TX → X 两条律)为对象5.5
Kleisli 范畴对象不变、态射 X → TY、μ∘Tf∘g 复合5.6
比较定理Kleisli 初始、EM 终,中间伴随排队5.7
余单子(G, ε, δ);余代数=演化对象5.8
对称幺半c: A⊗B ≅ B⊗A、c2=id5.10
幺半闭[A, B] 内 Hom、ev 万有;(−)⊗A ⊣ [A,−]5.11
伴随单子定理一切单子来自 EM 端的自由⊣遗忘5.12
Lawvere 理论「运算+方程」≃ EM;域不在册5.13
程序单子分号=μ;Maybe/State/Writer 周期表5.14
双代数·Hopf乘+余乘相容;+对合=范畴化的群5.15

记号约定。T = UF;μ = UεF;η 与 ε 分别是单位与余单位;CT 与 CT 分记 Kleisli 与 EM。

154讲义

第五章 单子与幺半范畴:结构的自我生成衔接讲义:通往逻辑与语言——范畴照进思想

第五章完成了什么。张量世界立了法(幺半范畴、对称、闭),单子拿到独立户口(定义、两端、分类定理),三大应用(泛代数、程序语义、双代数)证明这台机器的出货能力。

一个悬而未决的现象。幺半闭范畴的 Currying 同构 C(X ⊗ A, B) ≅ C(X, [A, B]) 在逻辑里读作「A ∧ X ⊢ B ⟺ X ⊢ A ⇒ B」——推理规则变成了伴随。这条线通向哪里?
带着问题走的路标。第六章三块大陆:逻辑即范畴(6.1–6.4:CCC、Curry–Howard、直觉主义、拓扑斯);语言即范畴(6.5–6.7:Lambek、组合语义、DisCoCat);认识即关系(6.8–6.13:结构主义、Yoneda 认识论、ETCS、三大主义)。终点是三重启发的总览与现代计算、高阶范畴的地平线。
图 5-15 衔接预告:范畴照进思想 本册的数学部分 范畴·函子·极限·伴随·单子 (第一至五章) 思想的地平线 逻辑 · 语言 · 认识 · 哲学 (第六章) 照进 三重启发:命题即对象 · 句法即范畴 · 结构即存在 CCC、拓扑斯、Lambek、Yoneda 认识论 预告:第五章的闭与卷积将在第六章变成「逻辑连接词」与「文法复合」
图 5-15 前五章装备了完整的数学机器;第六章让它照进三块新大陆——逻辑(命题即对象)、语言(句法即范畴)、认识(结构即存在)。
第六章

范畴、逻辑与语言:三重启发

范畴论的箭头一旦照进思想,三块新大陆同时浮出。逻辑:Cartesian 闭范畴里,对象是命题、态射是证明,⊗ 是「与」、指数是「蕴涵」——Curry–Howard 对应把「命题即类型、证明即程序」立成三位一体;直觉主义与拓扑斯进一步改写「真理」:真值是一个对象,排中律不再自明。语言:Lambek 演算把句法变成范畴——名词、动词、形容词都是箭头,句子是它们的复合;组合语义让意义成为函子,DisCoCat 把文法与量子计算接上同一根线。认识:结构主义主张数学对象是「关系网上的位置」,Yoneda 引理是它的严格表达——认识一个对象,就是知道它与全体对象的关系;不变性与客观性、ETCS 与集合论基础、三大主义的对读,把哲学问题变成可精确讨论的问题。章末望向现代计算(类型论与量子语言)与高阶范畴(∞-世界)——范畴论的故事没有结尾,它刚刚开始照进更多疆域。
页型节奏:导引 → 讲义(概念 · 定理 · 证明 · 一步一图)→ 例题 → 习题 → 地图 · 小结 · 思想卡 · 挑战 · 实验
155导引

第六章 范畴、逻辑与语言:三重启发第六章导引:一门数学如何照进思想

前五章走的是内线:从态射到伴随,一切都在范畴内部发生。本章转身向外——问一句更大的话:这套语言能照亮范畴之外的什么东西?

答案是三处亮光。逻辑:一个 Cartesian 闭范畴就是一台命题机器,态射是证明,指数对象是蕴含,Curry–Howard 对应说「命题即类型、证明即程序」。语言:Lambek 发现语法类型与范畴同构,一个句子的合法推导,就是一条复合箭头;组合语义再把「意义」定义为函子。认识:Yoneda 引理(第二章 p50)把「一个对象」翻译成「它被所有对象如何认识」,结构主义由此获得精确的数学表述。

三处亮光不是三个孤立的应用——它们共用同一副骨架:把结构当作对象,把关系当作态射,把变换当作自然变换。本章的任务,就是让人看见这三件事其实是同一件事的三张脸。

总纲。逻辑讲的是「真理如何被证明」,语言讲的是「意义如何被组合」,认识讲的是「对象如何被把握」——范畴论给出的统一回答只有一句:凡这三件事,都是箭头的事。

十四页讲义,三条支线各三到四处节点,末尾汇入例题、习题与七件套。前面所有工具带上:积、指数、自然变换、Yoneda、伴随——本章不再引入新的重装武器,只用旧兵器打新战场。

156讲义

第六章 范畴、逻辑与语言:三重启发6.1 逻辑即范畴:Cartesian 闭范畴中的命题

直觉。先看一张对照表——它把直觉逻辑的规则逐条翻译成 CCC 的构造。念到「自然演绎的规则」时别急,看右列,全都是已见过的箭头操作。

逻辑CCC 中的对应
命题 A对象 A
证明 p: A ⊢ B态射 A → B
恒真 ⊤终对象 1
合取 A ∧ B积 A × B
蕴含 A ⟹ B指数 BA
蕴含消去(肯定前件)求值映射 ev: BA × A → B
蕴含引入(→ 引入)Currying Hom(A×S,B) ≅ Hom(A,BS)

表读完,一条极重要的话浮出来:逻辑规则不是外加的约定,而是这范畴里本来就有的箭头构造。「肯定前件」不过是 ev 在做事;「→ 引入」不过是一次转写(p75)。

自然演绎三态。引入规则从子证明造出带蕴含的表达式,消去规则把它拆回来——两者互为逆,恰是 η(引入后消去回到原样)与 ε(消去后引入回到原样)。这就是 p103 三角恒等式穿上了逻辑戏服。

于是得到本章的第一根支柱:一个 CCC 的完备理论,与直觉命题逻辑的完备理论,是同一套东西。证明不必另外叙述——范畴里的交换图已经把它写完了。

要点。逻辑的语言「⊢」与范畴的语言「→」是同一支笔。看懂这张表,后面 Curry–Howard 只是把它从「命题」搬到「类型」。
157讲义

第六章 范畴、逻辑与语言:三重启发6.2 Curry–Howard 对应:命题即类型,证明即程序

从表到宣言。把 p156 的表再推一格:「合取 A ∧ B」对应的积 A×B,在编程语言里就是有序对类型;「蕴含 A ⟹ B」对应的指数 BA,就是函数类型。一个类型系统里的程序,逐条对应一个证明。

逻辑(证明)类型(程序)
命题 A类型 A
证明项 p程序项 p
合取引入:(⟨a,b⟩)构造:pair(a,b)
合取消去:投影投影 fst/snd
蕴含引入λ 抽象:λa. t
蕴含消去应用:f a(即 ev)
β 归约(消去后引入)计算:(λa.t) s → t[a:=s]
η 展开(引入后消去)λa. f a → f

β 与 η。逻辑的「化简」在程序这边叫 β 归约:把抽象喂给实参,就地代换——这正是 ε。反之 η 展开说「λa. f a 与 f 同物」——这正是 η。两条合起来就是 p103 三角恒等式:一个证明里没有多余的话,一个程序里没有多余的步骤。

所以「编译通不通」与「证明对不对」是同一个判定。类型错了,等价于证明断了。

署名。Curry(1934)与 Howard(1969)各自从组合子逻辑与自然演绎两边摸到同一块基石。范畴论给它的表述最干净:Cartesian 闭范畴的内部语言。
158讲义

第六章 范畴、逻辑与语言:三重启发6.3 直觉主义与拓扑斯:排中律的边界

排中律的代价。经典逻辑里 A ∨ ¬A 恒真。要在范畴里谈论「非」,得先有一个「假」对象与一个「否定」构造。积与指数给出的是直觉逻辑:允许 ⊤, ∧, ⟹,但一般不给无穷并、也不给双重否定消去。

为什么缺?看一个具体模型。取开集层范畴 Sh(X)(把开集当对象、包含的开集间适当的映射当态射)。否定 ¬U 定义为「不与 U 相交的开集的并」,即 U 内部之余。取 X = ℝ、U = (0,1) ∪ (2,3):

¬U = (−∞,0] ∪ [1,2] ∪ [3,+∞) 的内部 = (−∞,0) ∪ (1,2) ∪ (3,+∞);再取否定:¬¬U = (0,1) ∪ (2,3)——咦,回到 U 了?不对,再核对:¬U 与 U 确实不相交,但 ¬¬U 应该包含 U 且可能更大。真正的失手情形是这样:取 V 为「挖掉一点的区间内部」的补之内部——

换一个干净的经典反例:在 ℝ 上取 W = (−∞,0) ∪ (0,+∞)(去掉原点),则 ¬W = ∅ 的内部 = ∅,于是 ¬¬W = ℝ ⊋ W。这就对了:¬¬W 严格大于 W,双重否定消去在层范畴里失效。

于是得到本页的结论:排中律不是普适真理,而是一个额外假设——只有那些「开集都是既开又闭」的拓扑空间(如离散空间)才满足它;一般层范畴只保证直觉逻辑。

启发。直觉主义不是「逻辑学家的吝啬」,而是几何的诚实:有些真理只在真的造出构造时才成立。
159讲义

第六章 范畴、逻辑与语言:三重启发6.4 拓扑斯初步:真理的对象化

从「真」到「一个对象」。经典集合论里,「真」是一个外部符号。拓扑斯把它对象化:真理本身是一个对象 Ω,而「一个子对象」由一条特征箭头(特征态射)指向它。这比「子集」的想法更精细——真假可以不是二值的。

S A 1 Ω true χ 包含 特征
图 6-1 子对象分类器与特征箭头:子对象 S ↣ A 与它的特征箭头 χS: A → Ω 使整张图成为拉回方块——拓扑斯里「真」被对象化,子集与特征函数从此是同一件事的两种写法。

读图 6-1。左列是「子对象 S ↣ A」,右列是它的特征箭头 χS: A → Ω,上下两条水平箭头使整张图成为拉回方块:S 正是 true 沿 χS 的拉回。一句话——子对象 = 指向 Ω 的箭头。

在 Set 里。Ω = {0,1},特征函数就是熟悉的是非判定;在层范畴里,Ω 是「开集 U ↦ U 内所有开集」的层——它一般大于两个元素,正是 p158 那个「非二值」的真相对象。

于是「拓扑斯」的定义水到渠成:一个 CCC +一个子对象分类器 Ω(外加有限余极限)。它是「能做集合论那套事的范畴」,但把「二值」放宽成「Ω 值」。

要点。经典世界把真假钉在两格上,拓扑斯让它流动起来。这一步一旦迈出,逻辑就从「公理表」变成了「可变的几何对象」。
160讲义

第六章 范畴、逻辑与语言:三重启发6.5 语言学(一):Lambek 演算——句法即范畴

一个惊人的想法。Lambek(1958)说:语法类型就是范畴,句子的合法推导就是态射。看这句简单英语——「Alice loves Bob」。给三个词各配一个类型:

Alice : n(名词),Bob : n,loves : n ⟍ s ⟋ n(一个「吃右边名词、再吃左边名词,吐出句子」的类型)。

Alice loves Bob n n\xs /n n Alice · (loves Bob) n · (n\xs) s (一句合法的话)
图 6-2 Lambek 演算的乘法式→除法式改写:把「名词+及物动词+名词」的复合,改写为类型的除法消去——左边是句法树,右边是范畴里的箭头复合,二者逐字对应。

读图 6-2。右侧先归约「loves Bob」:n ⟍ s ⟋ n 吃掉右边的 n 得 n ⟍ s(斜线消去);再吃掉左边的 n 得 s。两步都是伴随式转写:

A · (A ⟍ B) → B,(B ⟋ A) · A → B(乘法即「相邻接」,除法即「等它到齐」)。

与范畴的关系。把「串接」当张量积、「类型消去」当伴随的余单位——Lambek 演算恰是 p97 伴随框架的语言学实例:n ⊣ n ⟍ −、− ⟋ n ⊣ n。一句话——语法就是伴随的转写游戏。

要点。句子合不合法,不是「语感」,是「箭头能不能复合」。语法分析器从此与定理证明器共用一副引擎。
161讲义

第六章 范畴、逻辑与语言:三重启发6.6 语言学(二):组合语义——意义即函子

从「合法」到「含义」。p160 解决了句子合不合法;这一页解决它是什么意思。做法只有一步:给语法范畴配一个语义范畴,再让意义的组装是一个保结构的函子。

语法(句法类型)语义(意义对象)
名词 n实体集 E
句子 s真值集 {真, 假}
不及物动词 n ⟍ s函数 E → {真,假}(性质)
及物动词 n ⟍ s ⟋ n函数 E × E → {真,假}(关系)
复合:n · (n ⟍ s) → s函数应用:性质(实体)

念一遍表就完成了一次语义计算。「Alice loves Bob」:loves 的语义是 E×E → {真,假} 的二元关系 L。先吃 Bob:得 L(−, Bob): E → {真,假},即「喜欢 Bob 的人」;再吃 Alice:L(Alice, Bob) ∈ {真,假}。全句真值到手。

函子性。语法里做一步转写(如一串式的括号重排),语义里就做一次函数应用——两边的复合律严格对应。这就是「意义即函子」的全部含义:意义的组装规则与语法的组装规则同构。若换一个语义模型(不同实体的世界),只需换函子的像,语法完全不动。

要点。Frege 的「组合原则」(整体意义由部分意义及组合方式决定)在这里被精确实现:组合方式 = 范畴的复合律。
162讲义

第六章 范畴、逻辑与语言:三重启发6.7 语言学(三):DisCoCat 一瞥——文法与计算

再进一步。Lambek 只看「类型」,不看「词义的联系」。DisCoCat(Coecke–Sadrzadeh–Clark, 2010)把两者绑在一起:一个词是一条张量(态射),一个句子是一张态射网络。

Alice loves Bob s 名词线在动词处对折相接
图 6-3 DisCoCat 的线图表示:词是带类型的盒子,语法是线的连接方式,缩并线图即得句子的语义——语言与量子计算共用同一套作图法。

读图 6-3。每根竖线是一个类型(名词 n、句子 s);词的张量坐在线段的交点上,上下引线「插头式」相连。及物动词 loves 有两条下垂的输入线,与 Amanda 的 n 线、Bob 的 n 线相连;连接处正是语法消去(p160 的伴随余单位)。全网络缩并到零入零出的标量,就是这句话的「意义值」。

为什么值得看。三条支线在这里汇合:语法是线的接线方式(Lambek),语义是张量在交点上的取值(组合语义),计算是网络的缩并(张量收缩,正是 p143 的 ⊗ 与 ev)。逻辑那一支的表(p156)反过来还能把它读成「类型的实现」。

要点。DisCoCat 把「句法—语义—计算」三张皮缝成一件东西。这是本章三支线第一次公开握手——p173 的例题课(二)会亲手做一次。
163讲义

第六章 范畴、逻辑与语言:三重启发6.8 认识论(一):结构主义——数学对象是什么

一个老问题。「3 是什么?」素朴回答:「是那个叫三的东西。」但 3 若定义为 {{∅}, {∅, {∅}}}(von Neumann 序数),它便依赖一个偶然的编码。换一套编码(Zermelo 序数),指称变了,数学内容没变。

结构主义的回答。数学对象没有额外的「内在本质」;它的全部身份,就是它在结构里的位置——即它与其它对象之间的全部关系。第三条在自然数结构 (ℕ, 0, S) 中的身份是:「0 的后继的后继」,仅此而已。

说法对象的身份由什么决定
素朴实在论对象自身的内在本质
形式主义符号在公理系统中的角色
结构主义它在结构中的位置(关系网)
范畴论表述对象同构类;由 Hom 集完全刻画

范畴论把它说清楚了。这正是第二章 p50 Yoneda 的哲学意义:A ≅ B 当且仅当它们被所有对象「同等认识」;一个对象就是它接收与发出的全部箭头。结构位置=Hom 集全貌。

于是「同一性」也必须降级:数学里真正的等同是同构,不是字面相等(详见 p165、p167)。

要点。结构主义不是「否认对象存在」,而是说:对象的全部存在就是它的位置。范畴论给这句话提供了无歧义的句法。
164讲义

第六章 范畴、逻辑与语言:三重启发6.9 认识论(二):Yoneda 的认识论——认识即知关系

把 Yoneda 讲成一句话。第三章的引理说:Nat(Hom(A,−), F) ≅ F(A)。认识论读法——要知道一个对象 A(相对于 F),只需知道「一切从他人到 A 的箭头,被 F 加工后是什么样」。

A X Y Z W 从各视角射向 A 的箭头=认识的通道
图 6-4 Yoneda 的认识论图像:从各视角射向 A 的箭头=认识 A 的全部通道;把这些通道逐一记录,对象就被完全决定——「认识即知关系」的图形版。

读图 6-4。四根箭头代表「别的对象如何看待 A」。Yoneda 说:把这四路信息拼起来,A 就没有秘密了——因为一个对象无非是它被认识的全部方式。这与 p163 的结构主义是同一句话的两种口吻。

推论(本页的硬核)。若两个对象被所有视角同等认识(Hom(X,A) ≅ Hom(X,B) 自然),则 A ≅ B。所以——对象由关系完全决定,不存在「关系之外的隐藏本质」。

认识论意义:这是一种关系主义。数学认知不是「洞见某个对象的内核」,而是「掌握它与一切相关者的接口」。所谓理解一个概念,就是掌握了它的全部接口。

要点。Yoneda 引理是结构主义的定理级表述。哲学上它消灭了「私有本质」,只留下公共的关系网。
165讲义

第六章 范畴、逻辑与语言:三重启发6.10 认识论(三):不变性与客观性

问题。若对象的身份只是「同构类」,那么「客观真理」还剩什么?答:剩下的恰是那些对一切同构都保持不变的东西。这就是不变性(invariance)作为客观性的新定义。

不客观的表述客观(不变)的表述
「3 的元素是 {∅, {∅}}」「3 等于 0 的后继的后继」
「向量空间是 ℝn 中的列」「向量空间的维数 n」
「群是某个置换群的子集」「群的同构不变量(阶、交换性等)」

范畴化的说法。一切陈述都应是自然变换的等式——因为自然性保证:换一个同构的模型,等式照样成立。这是 p45「自然变换」与 p103「三角恒等」为什么必须强调自然性的认识论理由。

反向也说通:凡依赖偶然编码(比如「元素是某某集合」)的陈述,都是非客观的表达,最多算「某个模型里的真」。数学要做的是:把这类偶然成分全部剔除,只留下不变量。

一个漂亮的收束。这与 p163(结构主义)+p164(Yoneda 关系主义)恰好构成一个三角:对象=位置(结构)=关系网(Yoneda)=同构不变量(客观性)。三条边是同一根绳。

要点。客观性=不变性:不是「唯一的真相」,而是「一切同构都同意的话」。这是范畴论交给认识论最强的一句话。
166讲义

第六章 范畴、逻辑与语言:三重启发6.11 哲学(一):范畴论与数学基础:ETCS

能不能把「集合」用范畴造出来?Lawvere(1964)给出的方案:ETCS——初等(Elementary)拓扑斯+集合的范畴公理。它不写「元素属于集合」,只写箭头。

ZFC 的说法ETCS 的说法
存在空集存在初对象 0
存在单元集 {∅}存在终对象 1
子集对应「属于」子对象分类器 Ω+特征箭头
幂集 𝒫(A)指数对象 ΩA
分离公理模式子对象分类器+拉回(图 6-1)
替换公理模式极限/余极限的完备性条件

读表。注意每一行:左边是「集合有什么」,右边是「箭头能做什么」。ETCS 的哲学姿态很清楚——集合论不是本体论,而是一套操作论:不问「集合是什么」,只问「集合允许哪些构造」。

关键差别。ETCS 是结构主义的基础:它天然按同构论对象(p165),元素虽然仍可经由 1 → A 的箭头「点」来谈论,但那只是关系网的一个特殊视角。ZFC 里「3 ∈ 5」这类陈述依赖编码,ETCS 里则需先指定一个自然数结构才谈得上。

两个体系力量相当(都能重建标准数学),但姿态不同:一个从「属于」出发,一个从「映射」出发。谁更「基本」没有唯一答案——重要的是看清:数学基础可以选择不同的起点。

要点。ETCS 是「箭头优先」的集合论。它让 p163–165 的结构主义从哲学口号,变成可写成公理的体系。
167讲义

第六章 范畴、逻辑与语言:三重启发6.12 哲学(二):柏拉图主义、形式主义与结构实在论

三副眼镜,看同一门数学。基础问题到最后摊成三个流派,本页只做一件事:把它们与范畴论的关系摆上台面。

立场核心主张范畴论的位置
柏拉图主义数学对象独立客观存在结构是「发现」的;范畴论描述其骨架
形式主义数学是符号游戏,无真值内容箭头演算=游戏规则;但自然性不是任意的
结构实在论真实存在的是结构(关系网)最契合:对象=位置(p163)、=Hom(p164)

为什么结构实在论与范畴论最投机。它主张:存在的不是「个别事物」而是「结构」。这与 p165 的不变性客观性严丝合缝——凡同构不变的才真实,个别编码是浮尘。

形式主义的松动点。若数学纯是符号游戏,则任何公理系统都等值。但 p165 给出了一个非任意的判据:自然变换的等式。它不受编码左右,是有约束的——所以「纯游戏」说法在此站不住脚。

柏拉图主义的温和版。不必主张「存在一个超验世界」,只需主张:一旦给定一个结构,其性质是客观的、可发现的(同构不变即客观)。这一版与范畴论完全相容,被称为结构柏拉图主义——本章采此立场。

要点。范畴论不下判决,它提供床架。「什么算客观」这个判决标准,被它换成了「对同构不变」——三方眼镜里,结构实在论看得最清。
168讲义

第六章 范畴、逻辑与语言:三重启发6.13 哲学(三):同一性与「up to iso」的世界观

最后一副眼镜。前两页谈「对象是什么」;本页谈「两个对象什么时候算同一个」。这是全章的收口,也是全书的收口。

相等(严格)同构(温和)
字面同一,A = B存在可逆箭头 f: A ≅ B
依赖具体编码对编码免疫
「3 = {∅,{∅}}」「一切含零与后继的初始结构都同构」
集合论式的习惯范畴论式的格言

为什么必须是同构而不只是相等。三条理由:①唯一性定理(p77 泛性质)只能给到同构——乘积作为对象只有一个「同构类」,字面相等没法保证;②结构主义要求对象无私有本质(p163),字面相等却依赖编码;③客观性=对同构不变(p165),而字面相等本身不客观。

「up to iso」的工作方式。这是范畴论者的日常语法:说「乘积唯一」时省略的其实是「在同构意义下唯一」;说「ℤ/6 ≅ ℤ/2 × ℤ/3」时,两边是两个对象,但一切结构陈述都一致。这句「up to iso」不是含糊,而是精确地指明:哪些差别可以忽略。

回到本章三支线。逻辑那边,命题与其证明在 βη 意义下等同(p157);语言那边,两句意思相同的话在同构意义下相等(p161);认识那边,同一性本身就是同构(p163–165)。三支线在此合流成一句格言:范畴论的等价关系是「同构」,由此推出全书暗线——结构先于个体。

收官。既然对象只是位置、同一只是同构,数学便不再受编码的摆布。这正是第六章要给最后一件东西:一副「只看结构」的眼光。
169讲义

第六章 范畴、逻辑与语言:三重启发6.14 三重启发总览:逻辑·语言·认识

三块大陆,一副骨架。本章走了三条互不相干的支线:逻辑(6.1–6.4)、语言(6.5–6.7)、认识与哲学(6.8–6.13)。回头一看,三条路上每一个关键装置,指向的都是同一批范畴构造。

支线核心装置用到的范畴构造招牌定理
逻辑命题与证明积、指数、终对象Curry–Howard(6.2)
语言句法与语义自由构造、函子Lambek 演算(6.5)
认识对象与关系Hom 函子、泛性质Yoneda(6.9)
图 6-5 三重启发的三角与共享骨架 范畴论:关系先于个体 逻辑 命题即类型 证明即项(6.1–6.4) 语言 句法即范畴 意义即函子(6.5–6.7) 认识 对象只是位置 认识即关系(6.8–6.13) Curry–Howard Lambek Yoneda 共享骨架:泛性质 → 极限 → 伴随 → 单子
图 6-5 三条支线不是三个比喻,而是同一副骨架的三次投影:逻辑借积与指数说话,语言借自由构造与函子说话,认识借 Hom 函子说话;三者最终都落在「泛性质—极限—伴随—单子」这条主干上。
读法一:翻译表。把上表竖着看,就是一部「逻辑—语言—认识」互译词典:「推理规则」=「箭头」,「命题」=「对象」,「证明」=「态射」,「同义」=「同构」。同一个论证换一副眼镜仍然成立,这说明它与表述无关——这本身就是客观性(6.10)的一个实例。
读法二:共同的技术内核。三支线都在反复使用同一件工具:「用一个箭头图刻画一个对象」。逻辑用它定义 →(指数对象的泛性质),语言用它定义自由范畴(万有性质),认识用它定义「对象的身份」(Yoneda)。看得懂一支线的箭头图,其余两支即可平移。
读法三:也是全书的收束。第一章的「对象与箭头」在这里终于显形为一句立场:事物由它与其他事物的关系决定,而不是由内部质料决定。这就是副标题「结构先于个体」的全部含义。
170讲义

第六章 范畴、逻辑与语言:三重启发6.15 范畴论与现代计算:类型论与量子语言

一句话直觉。范畴论不只是重整数学的工具,它已经成了写程序语言的说明书。本页把三条正在活跃的战线并列晾出来:类型论、程序语义、量子语言。

战线一:依赖类型论与局部笛卡尔闭范畴。Martin-Löf 类型论里,类型可以依赖项(Πx:A. B(x) 与 Σx:A. B(x))。它的范畴模型正是局部笛卡尔闭范畴(LCCC):沿一个箭头「换基」(f*)有左右伴随——「换基 ⊣ 依赖积 ⊣ 依赖和」。第三章的极限、第四章的伴随,在这里直接成了类型构造子的语义。

战线二:单子与计算效应。Moggi(1989)的观察:「可能失败」「有状态」「随机」「抛异常」这些副作用,恰好由单子的 Kleisli 复合来组织(5.14)。第五章讲的那台机器,落进了 Haskell 的类型系统里,成了日常的 do 记法。一条纯数学定理(Eilenberg–Moore 与 Kleisli 两端等价,5.7)变成了工程师每天调用的接口。

战线三:量子语言与图形演算。Abramsky 与 Coecke(2004)发现:量子力学不需要希尔伯特空间也可以用范畴写——只要把它看成紧致闭范畴里的图形:对象=系统,箭头=过程,张量=并置,图上的连线=纠缠与信息流。把带 dagger(伴随)的紧致闭范畴画出来,就是今天量子计算里的图形演算(ZX 演算等)。而把「字词组合成句子」也画成同类图形,就是 6.7 的 DisCoCat——语言与量子计算竟共用同一套作图法。

小结一句。逻辑、类型、程序、量子:四件看似天各一方的事,用的是同一套范畴语法的四种方言。
171讲义

第六章 范畴、逻辑与语言:三重启发6.16 走向高阶范畴:∞-世界一瞥

一句话直觉。本册讲的范畴,箭头只有一层;但既然「两个对象之间」可以是一集,那么「两个箭头之间」也可以有箭头——再加上去一层,就进入了高阶范畴。

定义(2-范畴,粗略版)。给范畴(此时称1-范畴)再添一层:对象、1-箭头、2-箭头(1-箭头之间的箭头)。复合有两种(纵向、横向),二者的关系由交错律约束。若一切 2-箭头可逆,称 2-群胚。

图 6-6 同伦塔:结合律的逐层弱化 同伦塔:从集合一层层长到空间 0 阶 集合 等式是命题(真或假) 1 阶 群胚 箭头可逆:等式的「道路」 2 阶 2-群胚 2-箭头也皆可逆 ∞ 阶 ∞-群胚 空间——同伦型的语言 弱化 结合律不再字面成立 · 1-范畴:复合严格结合 · 2-范畴:结合差一个可逆 2-箭头 · (∞,1)-范畴:1 层以上全可逆, 结合律只到「同伦」为止 格言从「up to iso」升级为 「up to 高阶同伦」。
图 6-6 高阶范畴的核心想法:把「相等」换成「存在一条可逆箭头」,再把那条箭头之间的相等也换成箭头,如此层层向上。塔顶的 ∞-群胚正是拓扑空间——这就是同伦类型论的入口。
为什么必须往上走。一旦承认「同构」是对象的同一性(6.13),就会立刻遇到「同构之间的同构」:两个同构都是 A ≅ B,它们之间要谈「相等」还是「同构」?追问下去,塔是无穷的。与其在每一层写一遍结合律,不如把它整个放松为「有可逆的高阶箭头」。
关键的重解释。把 0 阶对象看成点、1-箭头看成道路、2-箭头看成道路的同伦,这条塔恰好就是拓扑学的同伦层级:集合 → 群胚 → 2-群胚 → (…)→ 空间。同伦类型论(HoTT)由此把「类型即空间、等式即道路」写成了公理系统——数学基础(6.12)与代数拓扑在这一页会师。
用在哪里。导出代数几何(把「环上的模」升级为「复形上的模」)、谱代数几何、模空间、以及量子场论中的拓扑不变量(配边假设:n 维配边范畴上的对称幺半函子)。第五章的幺半范畴正是它的地基。
172例题

第六章 范畴、逻辑与语言:三重启发例题课(一):Curry–Howard 对拍

例 1.命题 A ∧ (A ⟹ B) ⟹ B 是重言式。写出它的证明项(λ 项),并说明范畴对应。

解。证明即一个箭头 A × BA → B:先投影得 snd(拿到函数,即 (A⟹B) 的证明),再投影得 fst(拿到 A),最后 ev 应用。合成一项——λp. (snd p)(fst p)。逐字对上:这两个投影就是 ∧ 消去两条规则,ev 就是 ⟹ 消去。∎

例 2.命题 A ⟹ (B ⟹ A) 的证明项是什么?它与 p157 的哪个箭头公式同构?

解。证明项 λa. λb. a(一个「吃两层、只吐第一层」的函数)。范畴对应:A → AB 的一个箭头——由 Currying 从 A × B → A(即 fst)转写而来。同一支笔,今天写逻辑,昨天写积。∎

例 3.以下三项里哪个不是合法的证明项(类型错误)?说明为何。项 A:λf. λa. f(f a) 视 f: A ⟹ A;项 B:λa. a a;项 C:λa. λb. b。

解。项 B 类型错误:a 若作为函数被应用,它得有一个函数类型 X ⟹ Y;但同时又要求 a 就是它自己的参数,即 X = X ⟹ Y——朴素类型系统不允许这种「自食」的类型方程(这正是无类型 λ 演算里会导致悖论、也是直觉逻辑里不能随意自指的原因)。项 A 合法(f 可重复,箭头可复合两次),项 C 合法。∎

例 4.用 β、η 验证例 1 的证明「不多不少」。

解。β:把定义好的项喂一对 (a, g),出来 g(a)——顶层 λ 被消去,正是 ⟹ 消去一次的「化简」。η:λp. (snd p)(fst p) 与「先拆对子再应用」两件事没有余赘,可标准化还原。两向都通,等价于 p103 三角恒等式——证明已是最简形。∎

对拍要诀:把命题的每一个逻辑连接词,换成 CCC 的一个构造(∧→积、⟹→指数、⊤→终对象),再把「规则」换成「投影/ev/Currying」。换完仍成立,就说明这个命题在这个逻辑里是真的。

173例题

第六章 范畴、逻辑与语言:三重启发例题课(二):Lambek 文法的箭头推导

例 1.给「Bob sleeps」做一次完整的 Lambek 推导。类型:Bob : n,sleeps : n ⟍ s。

解。串接第一步:n · (n ⟍ s) → s(左除消去,主语在动词左边)。箭头读法:Bob 把 sleeps 从它右边的等待状态里「喂满」,得 s。一句合法。∎

例 2.推导「a cat sleeps」,其中 a : n ⟋ n(限定词,吃右边的名词)。

解。两步:先 (n ⟋ n) · n → n(限定词吃掉 cat,成一个完整名词短语);再 n · (n ⟍ s) → s。括号必须按此序——若先算右边,a 会找不到可吃的名词,推导失败。∎

例 3.用组合语义(p161)算出上句的真值条件。取 E = {c1, c2},cat = {c1},sleeps = {c1}。

解。a 的语义是「取子集、判非空」:a(cat) = 「{c1} 非空」= 真。于是名词短语语义是一个「特指个体」;再让 sleeps(性质集 {c1})吃它:该个体在 sleeps 中,全句为 真。函子性保证:就算把 E 换成三个个体,语法推导一字不动,只换函子的像。∎

例 4.「Alice loves Bob」的 DisCoCat 线图(图 6-3)缩并后,得到的是什么类型?

解。loves 是张量 n* ⊗ s ⊗ n*,上接 Alice 的 n、下接 Bob 的 n,两个连接把 n 与 n* 配对缩并掉,最后剩 s。语法类型与语义值同步归约——这正是 p160 与 p161 同框的实证。∎

174习题

第六章 范畴、逻辑与语言:三重启发习题课(一):基本功

1.写出 A ∧ B ⟹ A 的证明项,并指出它对应 CCC 中的哪条箭头。

提示:证明一个「先拆对子、再取左边」的函数;对应 fst 经 Currying 转写。

2.把 A ∨ B 与 CCC 的哪个构造对应?为什么 CCC(只有积与指数)不足以处理「或」?

提示:余积;CCC 不缺余积,但缺「对偶化」的完整逻辑(需余积+分配律)。

3.验证 β 归约:(λx. f(x,x)) a → f(a,a)。这对应逻辑的哪一步?

提示:⟹ 消去后再化简;范畴中为 ε 作用。

4.在 Sh(ℝ) 中取 U 为「去掉原点后的 ℝ」,求 ¬U 与 ¬¬U,验证双重否定消去失效。

提示:¬U = ∅,¬¬U = ℝ ⊋ U。

5.验证 ETCS 的「子对象分类器」与 ZFC 的「分离公理模式」如何对应。

提示:分离给出子集,特征箭头给出子对象;两者经拉回方块(图 6-1)互译。

6.说明「ℤ/6 ≅ ℤ/2 × ℤ/3」这句话为什么必须理解为 up to iso。

提示:等号左边是一个对象、右边是一个对象;真正的同一是同构,且结构陈述一致。

175习题

第六章 范畴、逻辑与语言:三重启发习题课(二):进阶

1.证明:若 F ⊣ G 且 F 全忠实,则单位 η 是同构。举一个语言学中的例子。

提示:用三角恒等式推;例:某些「名词→名词短语」的自由构造。

2.用 Yoneda 引理证明:A × (B + C) ≅ (A × B) + (A × C)(若余积存在)。

提示:对 Hom(A×(B+C), −) 与 Hom((A×B)+(A×C), −) 逐点比较,两边皆 ≅ Hom(B,−)×Hom(C,−) 的适当组合。

3.解释「意义即函子」(p161)与「语法即范畴」(p160)如何共同保证「组合原则」。

提示:句法复合 ↔ 语义函数应用,两者由同一函子统一,组合方式自动保持一致。

4.DisCoCat 线图中的「弯折」对应什么范畴构造?为什么它能表达及物动词的「等待两个名词」?

提示:对偶对象的 η/ε(蛇形恒等式);弯折=类型配对,等价于伴随的余单位。

5.为什么要强调「自然变换的等式」才是不变(客观)的陈述?举一个非自然的反例。

提示:非自然变换依赖模型选择,换同构就变;如「逐点选基」给出的向量空间同构不自然。

6.比较 ETCS 与 ZFC 在「自然数对象」处理上的差异。

提示:ETCS 用「初对象+后继箭头+万有性(初始代数)」,不写内部元素;ZFC 用序数编码。

176地图

第六章 范畴、逻辑与语言:三重启发三重启发总览图

范畴论 逻辑 CCC·Curry–Howard 语言 Lambek·DisCoCat 认识 Yoneda·不变性 结构先于个体
图 6-7 三重启发总览:中心是范畴论的三件旧兵器——对象、态射、自然变换;三条射线各指向一处启发:逻辑(Curry–Howard)、语言(Lambek 与组合语义)、认识(结构主义与 Yoneda)。

读图 6-7。中心是范畴论的三件旧兵器——对象、态射、自然变换。三条射线各指向一处启发:逻辑(CCC 与 Curry–Howard:命题即类型)、语言(Lambek 与 DisCoCat:句法即范畴、意义即函子)、认识(Yoneda 与不变性:关系即本质、同构即同一)。

支线核心对应关键工具页
逻辑命题 ↔ 对象,证明 ↔ 态射CCC、指数、Currying89–90
语言语法类型 ↔ 范畴,意义 ↔ 函子Lambek、张量、线图93–95
认识对象 ↔ 位置,客观 ↔ 不变Yoneda、同构、自然性96–98

三条射线的交点汇成一句话——凡这三件事,都是箭头的事(p155 总纲)。图到此,本章三支线收束成一枚徽记。

177小结

第六章 范畴、逻辑与语言:三重启发第六章小结(上):逻辑与语言

1.一个 Cartesian 闭范畴(CCC)就是一台直觉命题逻辑机器:合取=积,蕴含=指数,求证=造箭头(p156)。

2.Curry–Howard 对应把「证明」搬成「程序」:命题即类型、证明即程序;β 归约=消去化简、η 展开=引入还原,正是 p103 三角恒等式(p157)。

3.直觉主义不是吝啬,而是几何的诚实:层范畴 Sh(ℝ) 中 ¬¬W ⊋ W,双重否定消去失效,排中律是额外假设(p158)。

4.拓扑斯把「真」对象化:子对象=指向 Ω 的特征箭头(图 6-1);CCC+分类器=能做集合论的范畴,但真假可以不是二值(p159)。

5.Lambek 演算:语法类型即范畴,句子推导即箭头复合;乘法是相邻接,除法是等它到齐(p160)。

6.组合语义:意义即函子,Frege 组合原则被实现为「句法复合 ↔ 语义函数应用」的一致律(p161)。

7.DisCoCat 把句法—语义—计算缝成一张线图,缩并即意义值;三支线在此公开握手(p162)。

8.认识论三页:结构主义(对象=位置,p163)、Yoneda 关系主义(对象=接口全貌,p164)、不变性客观性(客观=对同构不变,p165)——一个三角,一根绳。

9.哲学三页:ETCS 以箭头重建基础(p166)、结构实在论与范畴论最契合(p167)、同一性升级为同构(p168)。全书暗线至此收口——结构先于个体。

178小结

第六章 范畴、逻辑与语言:三重启发第六章小结(下):认识与哲学

后一半讲的是什么。6.8–6.13 谈的不是「怎么算」,而是「算的是什么」。三条线索:对象是什么(结构主义)、认识怎么发生(Yoneda 认识论)、什么算客观(不变性)。

问题素朴回答范畴论回答依据
数学对象是什么一个带内部结构的个体网络中的一个位置p163 结构主义
怎么知道它看它的内部构造列出它与其他对象的一切关系p164 Yoneda
什么是客观的不因人而异的事实对同构不变的性质p165 不变性
两个对象何时相同字面相等同构(up to iso)p168
收束一:结构主义把「本质」还给关系。若对象的全部内容就是它在关系网中的位置,那么「3 究竟是什么」这个问题本身就不合法——只该问「它扮演什么角色」。这是本书副标题的正面表述。
收束二:Yoneda 是一则认识论命题。引理说「对象由它的 Hom 函子决定」;把「Hom 函子」读作「一切与它相关的关系」,它就变成本章的哲学主张:认识一个事物=知道它与其余事物的关系。不存在「看进去就懂了」的捷径。
收束三:不变性才是客观性的模板。一支箭头在换坐标系下的行为,比箭头本身更接近「事实」;一个性质若对一切同构都保持,它才是关于结构的陈述,而不是关于编码的陈述。这与物理里「只谈不依赖坐标系量」是同一个方法论。
半章总结。逻辑给了本章一具可计算的骨架,认识论给了它一层含义:关系在先,个体在后;同构即相同,不变即客观。
179思想卡

第六章 范畴、逻辑与语言:三重启发思想卡:结构先于个体

一句话。在范畴论的世界里,没有「先有物、再给物配关系」这回事——物就是关系的一个结点。

三处印证。逻辑:一个命题的身份是它在证明系统中与其它命题的连接方式,不是它「本身」指什么(p156)。语言:一个词的身份由它在句法类型系统中的位置决定——loves 之所以是及物动词,是因为它「等待左右两个名词」(p160)。认识:一个对象的身份就是它接收与发出的全部箭头(p164)。

对上古老的直觉。亚里士多德《范畴篇》以「实体」为第一存在,属性依附于它;范畴论把方向反过来:关系(箭头)是第一性的,实体是关系的结点。这不是否认个体,而是说个体的「内容」全部由关系供给。

为什么这重要。若个体由关系决定,则:①「同构即同一」(p168)不是懒散,而是唯一自洽的同一性;②「客观性」只能是「对同构不变」(p165);③数学的普遍性来自结构、不来自被指称的对象。

收束。从 Eilenberg–Mac Lane 的一条小引理,到「结构先于个体」的一句格言——八十年,范畴论走了一条从技术到世界观的路。本册的暗线,到此说完。
180挑战

第六章 范畴、逻辑与语言:三重启发挑战:ETCS 与 ZFC 对读

挑战题。ZFC 与 ETCS 都能重建标准数学。对读两套公理,回答三问:①谁更贴近「数学实践」?②「属于」在两套体系里地位如何?③若只能在课堂上教一套,会选谁?

背景。ZFC 的一阶语言只有一个原始关系 ∈;ETCS 的原始概念是「对象、箭头、复合」加拓扑斯公理。二者的证明力相当(都能做数论、分析、代数几何),差别在于起点姿态。

对读表。

论题ZFCETCS
原始概念集合、属于对象、箭头、复合
元素本体论基础派生:1 → A 的箭头
子集分离公理子对象分类器
函数集合(有序对的集合)态射(原始)
同一性外延相等同构(up to iso)

思路提示。①数学实践里真正高频的是「映射」——同态、连续函数、函子;ZFC 把映射定义成一个特别的集合,ETCS 干脆把映射当原始,故 ETCS 更贴实践。②「属于」在 ZFC 是地基,在 ETCS 是派生(点=从 1 出发的箭头),因此 ETCS 天然配合结构主义(p163)。③选谁取决于教学目的:打地基、练逻辑,ZFC 更成熟;培养结构眼光、衔接现代代数几何与同调代数,ETCS 更顺——多数现代课程其实两者都用,只是默认 ZFC 打底。

反思。这道题没有标准答案,但要看清一件事:数学基础可以有多个互译的起点(p166),起点之争远不如「看清各起点的代价」重要。
181实验

第六章 范畴、逻辑与语言:三重启发实验:微型类型检查器

目的。把 Curry–Howard 从纸上请进机器:写一个极小的类型检查器,让它对 λ 项判「类型是否正确」——判对即判「证明是否成立」(p157)。

类型语法。τ ::= base | τ → τ | τ × τ;项语法:t ::= x | λx:τ. t | t t | ⟨t,t⟩ | fst t | snd t。规则共六条:变量、抽象、应用、对子、两条投影——与 p157 的表逐条对应。

# 微型类型检查器:六条规则即六条逻辑规则
# 类型用嵌套元组表示:('fun', A, B) 是 A -> B;('prod', A, B) 是 A*B
from collections import namedtuple
Err = namedtuple('Err', 'msg')

def infer(env, t):
    # 变量:查环境(含上下文假设)
    if isinstance(t, str):
        if t in env: return env[t]
        return Err('unbound variable ' + t)
    tag = t[0]
    # 抽象:对应 -> 引入(合 hypothese,环境做扩展)
    if tag == 'abs':
        _, x, ty, body = t
        env2 = dict(env); env2[x] = ty
        bt = infer(env2, body)
        if isinstance(bt, Err): return bt
        return ('fun', ty, bt)
    # 应用:对应 -> 消去(即 ev),形参类型必须匹配
    if tag == 'app':
        _, f, a = t
        ft = infer(env, f); at = infer(env, a)
        if isinstance(ft, Err): return ft
        if isinstance(at, Err): return at
        if ft[0] != 'fun':
            return Err('apply non-function')
        if ft[1] != at:
            return Err('type mismatch: want ' + str(ft[1]) + ' got ' + str(at))
        return ft[2]
    # 对子:对应一种条件合取(合取的构造)
    if tag == 'pair':
        _, a, b = t
        at = infer(env, a); bt = infer(env, b)
        if isinstance(at, Err): return at
        if isinstance(bt, Err): return bt
        return ('prod', at, bt)
    # 投影:对应合取的消去(两条)
    if tag in ('fst', 'snd'):
        _, p = t
        pt = infer(env, p)
        if isinstance(pt, Err): return pt
        if pt[0] != 'prod':
            return Err('project non-pair')
        return pt[1] if tag == 'fst' else pt[2]
    return Err('unknown term')

# 试验一:恒等箭头 A -> A(即命题 A 证明 A)
# λx:A. x  =>  'fun', 'A', 'A'
print(infer({}, ('abs', 'x', 'A', 'x')))

# 试验二:恒常函数 A -> (B -> A)(命题 A -> (B -> A))
print(infer({}, ('abs', 'x', 'A', ('abs', 'y', 'B', 'x'))))

# 试验三:类型错误 —— 把非函数拿去应用
print(infer({}, ('app', 'x', 'x')))

# 试验四:类型不匹配 —— 实参类型与形参不符
print(infer({'f': ('fun', 'A', 'B'), 'a': 'C'}, ('app', 'f', 'a')))

预期输出。试验一得 ('fun','A','A')(类型正确);试验二得 ('fun','A',('fun','B','A'));试验三报 unbound variable x(自由变量未在环境中,等价于「假设未使用」);试验四报 type mismatch(对应「证明链条在中间断了」)。

收束一句话。程序判错的地方,正是逻辑判伪的地方——这就是 Curry–Howard 的可运行形态。把规则从六条扩到含余积(「或」),就把微型检查器升成了直觉逻辑的完整模型。

182格物札记

第六章 范畴、逻辑与语言:三重启发〖札记〗墨辩三物:故、理、类

《墨子·大取》有「三物必具,然后足以生」之说,近人常引为「故、理、类」三范畴——推论的三个要件:故是理由(前提),理是推论所依的法则,类是所论对象的共同结构。想不到,两千三百年前的这套说法,与今天的范畴论有奇妙的对读。

墨辩含义范畴论对读
故立论的理由、根据态射的源与目标(箭头从哪儿到哪儿)
理推论依据的法则复合律与自然性(可依循、处处一致)
类以类相推、同类可推同构类与泛性质(同类者同等处理)

读表。「故」是箭头的两端——不给理由(不指定源与目标)则无从推论,正如不给类型则无从谈态射。「理」是复合律:推论要从一步接到下一步,靠的正是可结合、可依序这条法则——范畴论把它写成交换图。「类」最妙:墨家讲「以类取、以类予」,范畴论讲「凡满足同一泛性质者,本质唯一」——这正是 p77 的由泛性质定对象、p165 的对同构不变。

一处呼应。《小取》云「夫辞以故生,以理长,以类行者也」——话由根据产生、靠法则生长、凭类别推行。换成范畴语:一物由(源与目标的)箭头产生、由复合律贯穿、由(同构)类通行。三物缺一,推定不立;三类缺一,箭头不成。

余味。结构先于个体(p179)在墨辩里早有影子:「类」在前,「物」在类中才有身份。中西两条路,在这里打了个照面。
183速查

第六章 范畴、逻辑与语言:三重启发第六章速查表

条目公式
逻辑 ↔ CCC:合取A ∧ B ↦ A × B
逻辑 ↔ CCC:蕴含A ⟹ B ↦ BA
逻辑 ↔ CCC:恒真⊤ ↦ 1
证明 ↔ 态射A ⊢ B ↦ A → B
⟹ 消去ev: BA × A → B
⟹ 引入Hom(A×S, B) ≅ Hom(A, BS)
β 归约(λx. t) s → t[x:=s]
η 展开λx. f x → f
Lambek 左除A · (A ⟍ B) → B
Lambek 右除(B ⟋ A) · A → B
及物动词类型n ⟍ s ⟋ n
子对象分类器χS: A → Ω,S = true*χS
YonedaNat(Hom(A,−), F) ≅ F(A)
不变性客观性A ≅ B ⟹ 等价(同构不变量)
同一性唯一的等价关系是 ≅(up to iso)
184讲义

第六章 范畴、逻辑与语言:三重启发衔接讲义:通往综合站——收束全景

六章走完,回头看一眼。本册没有用过一个「本质」「定义域内随便取一个」式的老套路,而是始终只做一件事:用一个箭头图刻画一个对象。这条方法从第一章贯穿到第六章,中间换过许多名字。

图 6-8 全书骨架:六章一条链 六章一条链:从箭头的语法走到思想的地平线 第一章 对象与箭头 第二章 函子与 自然变换 第三章 泛性质与极限 第四章 伴随函子 第五章 单子与幺半 第六章 逻辑·语言·认识 每一环都是上一环的「拆开来看」,最后一环把它照进思想
图 6-8 本册的骨架只有一条链:先立箭头的语法(第一章),再让范畴之间互相说话(第二章),然后用「关系」定义对象(第三章),进而发现两大构造互为镜像(第四章),再把伴随的一部分拆下来独立研究(第五章),最后看这套语言如何照着逻辑、语言与认识发光(第六章)。
第一章立语法。对象与箭头、恒等与复合,「交换图」成为唯一的语言。此后一切概念都要求用箭头表述——这是一条纪律,不只是一个记法。
第二章让范畴之间说话。函子、自然变换把「结构保持」变成可计算的对象;「一切范畴构成的范畴」这件事本身,第一次把范畴论推到自指的边缘。
第三、四章是全书的心脏。泛性质(第三章)说「由关系定义对象」;伴随(第四章)说「两边的构造互为最好答案」。两大构造互为镜像,是本书最漂亮的一处结构。
第五章把伴随拆一半独立研究。单子(T = UF)是「自足的结构」,幺半范畴是「张量的舞台」,两者在幺半群对象处会师,又在泛代数与程序语言处出货。
第六章把它照进思想。逻辑、语言、认识三块大陆说明:这套语言不止描述数学,它还描述描述本身。

接下来去哪里。综合站不引入新理论,只做五件事:把全书的依赖关系画成一张总图(186);给出大事年表与十四位人物谱(187–188);提供两张决策地图(189–190);安排两个可动手的综合实验(191–192);最后用一题终极挑战、二十四题自查与四类错因评讲把全册收口(193–195)。读完它们,本册就不再是六章纸页,而是一张可以自己往回走的网。

带走这一句就够了:当遇到一个说不清的对象时,问「它满足什么泛性质」;当遇到两个说不清的构造时,问「它们是不是互为伴随」。这两问,就是本册留下的全部手艺。
综合站

全景与余韵

把八十年收成一张年表与一张人物谱,把六章收成一张概念依赖总图与一张方法决策树;两个综合实验,一个把伴随的 Hom 同构对同一组对象独立验证、彼此印证,一个把 Lambek 句法分析写成一段可以真正运行的程序。终极挑战把三重启发改成一次接力:从一个类型表达式出发,走过 Curry–Howard 的桥、Lambek 的句法与 Yoneda 的认识论。二十四题自查与评讲随后收兵。余韵两页一望前方:逻辑、语言、计算三条战线如何各自延伸,高阶范畴与 HoTT 又如何把「同构即相等」推到极致。合上本书时,范畴、函子、自然变换、泛性质、伴随、单子都汇成同一句话:数学对象是它所在关系网上的一个位置——结构先于个体。
页型节奏:导引 → 讲义(概念 · 定理 · 证明 · 一步一图)→ 例题 → 习题 → 地图 · 小结 · 思想卡 · 挑战 · 实验
185导引

综合站 全景与余韵全景的收束

六章走完,全书 198 页已经交到手上。现在把书合上一半——不是为了结束,而是为了看清整片地形。这一站是全书的观景台:不走新路,只把走过的路重新排一次,标出山脊与岔口。

本站七件事,逐件交付:

一张年表八十年,从 1942 年 Eilenberg–Mac Lane 的第一篇论文,到 2026 年仍在生长的高阶范畴。
一张人物谱十四位开路人:谁造了箭头,谁给了它眼睛,谁把它带进了逻辑、语言与计算机。
一棵决策树面对一道新题,先问哪一句?从「对象与态射是什么」到「要不要找伴随」。
一张依赖总图六章之内,哪些概念是哪些概念的支点——哪一处松了,整片会塌。
两个综合实验把全书最大的两件工具拉出来实测:伴随的 Hom 对拍,Lambek 的句法分析。
一张定理地图哪些结论本书给了证明,哪些只作陈述,哪些属于明天的地平线。
二十四题自查六章各六题,答完即算收兵;末附四类错因评讲。

余下四页留给余韵:三条战线在前方延伸——逻辑、语言、计算;再往上,是高阶范畴与同伦类型论(HoTT)的新大陆。

本站读法。年表与人物谱可当索引翻查,不必背;决策树与依赖总图建议抄下来贴在案头;两个实验要动手跑一遍;二十四题要写;余韵两页可慢读。观景台的意义,是让知道自己站在哪里。

先说一句要紧的话。本书所有概念的检验标准只有一个:能否不用元素说清楚。六章之中,这条纪律从未松动——第一、二章立公理,第三章用泛性质赶走元素,第四、五章以伴随统一「自由」与「遗忘」,第六章把这套眼光投射到逻辑、语言与认识之上。综合站的作用,是把这条线索一次性拉直。

186讲义

综合站 全景与余韵全书概念依赖总图

六章的内容不是并列的六块,而是一座层层加高的塔。下面这张总图把各章的核心概念按依赖关系排开;箭头方向表示「必须先懂前者才能懂后者」。看它一眼,就知道自己哪一层的地基松了。

第一、二章 · 骨架 范畴 → 函子 → 自然变换 → 同构与等价 → 可表函子 → Yoneda 给出全部语汇;Yoneda 是全书支点(p77) 第三章 · 方法 泛性质 → 初始/终对象 → 积/余积 → 拉回/推出 → 极限/余极限 把「由关系定义对象」练成手艺;极限统一一切构造 第四、五章 · 高地 伴随 → Hom 同构 → 单位/余单位 → Kan 扩张 → 单子 → Eilenberg–Moore 统一「自由」与「遗忘」;单子统一代数与效应 第六章 · 三面 CCC → 逻辑即范畴 → Lambek 语法 → 组合语义 → 结构主义 → 认识论 把箭头投射到逻辑、语言与认识之上 支撑全塔 供全部构造 供统一视角 供外部应用 泛性质 → 伴随 Yoneda → 结构主义 虚线=跨章的直连:泛性质直达伴随(p95);Yoneda 直达结构主义(p179) 实线=章内加高:上一章是下一章的地基
图 Z-1 六章依赖总图:四层自下而上——第一、二章给语汇,第三章给方法,第四、五章给理论高地,第六章把箭头投射到逻辑、语言与认识之上;实线=章内加高,虚线=跨章直连(泛性质直达伴随,Yoneda 直达结构主义)。

三条地基线。第一条自下而上:没有范畴与函子(第一、二章),谈不上泛性质(第三章);没有极限,谈不上伴随的万有性质(第四、五章);没有伴随,CCC 与拓扑斯(第六章)无从下嘴。第二条是横贯的虚线,只有两根,却最要紧:泛性质直达伴随——伴随不过是「两个方向上的万有问题」;Yoneda 直达结构主义——「对象由它与全体对象的关系决定」是结构主义的全部数学内容。第三条是反复回访:Yoneda 在第一、二章出现、第三章重用、第六章以「认识论」的面貌回来;单子在第四、五章定义、第六章进入计算。概念的复用次数,就是它的重要程度。

自查方法:若第四、五章读得吃力,多半是第三章的极限没吃透;若第六章的「逻辑即范畴」转不过来,回到第三章的积与指数即可——CCC 只是「有积、有指数」的范畴。
187格物札记

综合站 全景与余韵大事年表:1942 到 2026

范畴论不是一夜之间从天而降的。它从一个具体的技术困难里长出来(自然变换如何定义),八十年里三次换骨:先是代数与几何的语言,再是逻辑与计算的语言,如今正变成数学基础本身的语言。下表按年份铺开,右列标出本书相应的页码。

年份事件本书位置
1942Eilenberg 与 Mac Lane 为表述自然变换,引入范畴与函子p9–14
1945两人正式发表「General Theory of Natural Equivalences」,范畴论立基p41–47
1948Eilenberg 与 Mac Lane 给出单子雏形(代数结构的一般理论)p128–138
1957Kan 扩张与伴随函子的一般理论;Kan 提出「一切概念都可作为扩张」p95–111
1958Grothendieck 以范畴语言重写代数几何(Tôhoku 论文),Abel 范畴登场p72
1963Lawvere 的博士论文把代数理论纳入范畴,算代数思想成形p138
1965Eilenberg–Moore 与 Kleisli 两种单子分解同世;Bénabou 引入双范畴p130–131、p171
1968Lambek 建立「句法即范畴」:语法类型=范畴对象,推导=态射p160–161
1970Montague 把范畴论式的类型语法用于自然语言;组合语义学派起步p161–162
1972Lawvere 与 Tierney 提出拓扑斯,为直觉逻辑找到范畴模型p158–159
1980范畴论进入计算机科学:单子用于函数式语言的状态与效应p139、p151
1990Martin-Löf 类型论与范畴逻辑合流;高阶范畴的系统研究铺开p171
2006Awodey 等推动同伦类型论(HoTT):类型即空间,等式即路径p197
2013HoTT 专著出版;「等同即同构」成为可计算的原则p197
2010s∞-范畴成为代数几何与现代拓扑的主流框架(Lurie 等)p171、p197
2026范畴论已是代数、几何、逻辑、语言、计算之间的公共语汇;新的地基仍在浇注本站

读表要点三处。其一,1942 与 1945 是诞生:一次为解决「自然变换」这个具体问题而生,而非为哲学而生。其二,1957–1972 是成熟:Kan、Grothendieck、Lawvere、Lambek 四人的工作把范畴论从工具推成纲领。其三,1990 之后是扩散:它离开纯数学,进入逻辑、语言与计算机,最后反过来重写数学基础。

若只记两个年份,记 1945 与 1957:前者有了函子与自然变换的完整理论,后者有了伴随——本书第四、五章全部火力都在这一件事上。
188格物札记

综合站 全景与余韵人物谱十四位

一部范畴论史,是十几个人把「关系先于对象」从直觉磨成定理的过程。下表按贡献类型分四组排列;「一句话」是我们为每位准备的路标。

人物一句话本书位置
奠基(造箭头的人)
Samuel Eilenberg与 Mac Lane 造出范畴、函子、自然变换三件套,为「自然」一词立法p9–47
Saunders Mac Lane同一作者;晚年《Categories for the Working Mathematician》成为全书体例之源p9–47
Daniel Kan提出伴随函子与 Kan 扩张——「每个概念都是一次扩张」p95–111
几何与代数(换骨的人)
Alexander Grothendieck以范畴语言重写代数几何,Abel 范畴、层与拓扑斯的思想源头p158–159
Peter Freyd以「泛性质即定义」确立 Abel 范畴的公理体系(Freyd–Mitchell 定理)p72–77
Jean Bénabou把单子推广到更一般范畴,引入双范畴与纤维化视角p171
Max Kelly富化范畴与 2-范畴的系统理论,让「范畴的范畴」可计算p47、p171
逻辑与语言(开口说话的人)
F. William Lawvere把代数与逻辑同时范畴化:算代数、拓扑斯、量词即伴随p138、p158–166
Myles Tierney与 Lawvere 提出拓扑斯,给直觉逻辑一个范畴模型p158–159
Joachim Lambek证明「语法即范畴」:句法推导=态射复合p160–161
Richard Montague把类型语法用于自然语言,开创组合语义学p161–162
延伸(找地基的人)
Michael Barr为拓扑斯补上「正合」技术,使不依赖选择公理的代数可用p159
André Joyal用组合方法重做范畴与同伦的联系,通向 ∞-范畴p171、p197
Steve Awodey推动同伦类型论,使「等同即同构」成为可证明的原则p197

四组之间的一条线。奠基组负责定义自由度:他们让人第一次可以在不指定元素的情况下谈论结构。几何代数组负责提高分辨率:Grothendieck 的层与拓扑斯让「局部—整体」这件事变成箭头的事。逻辑语言组负责扩大疆域:Lawvere 与 Lambek 表明,推理与语法本来就是范畴。延伸组负责重铸地基:当数学基础本身要重写时,用的仍是同一套箭头。

这十四位的共同点:他们都在回答同一个问题——如果一个对象的价值由它与别物的关系决定,那么「一个对象」究竟是什么?本书六章,就是这同一个问题的四种答法。
189地图

综合站 全景与余韵方法决策树

学完六章,最实用的东西不是某条定理,而是一套提问顺序。面对一道新题,不要先算,先走这棵树——从上到下四问,问到哪一层停,就知道该搬哪件工具。

① 对象与态射各是什么? 先量出这个范畴的骨架 ② 问的是一件「整体」还是一件「个体」? 整体 → 极限/余极限;个体 → 泛性质 ③ 有没有两套构造互相「忘掉」结构? 有 → 找伴随(左自由/右遗忘) ④ 结论要「随对象变化」还是「只同构? 变化 → 函子/自然变换;只同构 → 泛性质定对象 四问过后,工具已定 积/余积 · 拉回/推出 · 极限 · 指数 · 伴随 Yoneda · 单子 · 拓扑斯 停在第 ① 问 → 写定义,查公理 停在第 ② 问 → 画万有图 停在第 ③ 问 → 证 Hom 同构
图 Z-2 方法决策树:面对一道新题,四问定工具——「对象与态射是什么」「问整体还是个个体」「有没有两套构造互相忘掉结构」「结论要不要随对象变化」;四问过后,工具已定,剩下的只是技术。

怎么用。把四问抄在纸上。第 ① 问逼先把范畴写清楚——九成的错都发生在对象与态射没分清的时候。第 ② 问分流:凡「任意两个对象的相遇」是极限,「把两个对象粘起来」是余极限;凡「满足唯一条件的某物」是泛性质。第 ③ 问是本册第四、五章的核心:见到「自由构造」或「遗忘结构」,先怀疑伴随。第 ④ 问决定输出形式:结果随对象变化,就写成函子并验证自然性;结果只要求「在同构意义下唯一」,就用泛性质,并明确指出唯一性中「唯一」到什么程度(同构 or 唯一态射)。

一棵树的价值不在它多全,而在它多快能让停。四问之后若工具仍未定,八成是第 ① 问没答干净——回去把对象与态射重写一遍。
190地图

综合站 全景与余韵定理地图与疆界

一本书的品格,一半在它证了什么,一半在它老实交代没证什么。下表把全书最要紧的结论列成一条条,右列标明本书做到哪一步——证明(完整给出)、陈述(说明清楚、留作进一步阅读)、疆界(现代里程碑,超出本册范围)。

定理/结论本书位置本书做到哪一步
单位律与结合律刻画范畴p11–15本书证明
函子保同构;自然变换可复合p41–47本书证明
Yoneda 引理:Nat(Hom(A,−), F) ≅ F(A)p49–51本书证明(全册支点)
可表函子的唯一性(同构意义下)p49、p53本书证明
泛性质定对象:初始/终对象唯一到同构p17、p77本书证明
极限=具锥的泛对象;积、拉回皆极限p67–74本书证明
极限的存在性与唯一性(同构意义下)p74、p77本书证明
伴随的 Hom 同构判据:F ⊣ G ⟺ Hom(F(−),−) ≅ Hom(−, G(−))p97–98本书证明(第四章核心)
伴随唯一到唯一同构;左伴随保持余极限p101–102本书证明
自由⊣遗忘:万有箭头实现单位p99–100、p106本书证明
单子=伴随的复合 T = G ∘ F;Kleisli/Eilenberg–Moore 分解p128–131本书证明(构造层次)
Lambek 定理:语法类型构成范畴,推导即态射p160–161本书证明(第六章枢纽)
CCC 中的 Curry–Howard:命题即类型、证明即程序p156–157本书陈述(给出对应,不展开证明论)
拓扑斯中的内语言=直觉逻辑(Lawvere–Tierney)p158–159本书陈述(给出定义与例)
Freyd–Mitchell:Abel 范畴 ≅ 模范畴p72本书陈述(不在本册展开)
结构主义原则的精确化(对象由关系决定)p163–165本书陈述(Yoneda 的哲学回响)
HoTT:类型即空间、等式即路径、等同即同构p197疆界(现代里程碑)
∞-范畴:把同伦结构直接编码进范畴p171、p197疆界(现代主流框架)
高阶代数与算代数的一般理论(Lawvere/Kelly)p138、p171疆界(提示方向)

三档的分界为什么重要。「本书证明」的条目,能够合上书自己复述出证明的骨架;「本书陈述」的条目,知道它在说什么、用在哪即可;「疆界」的条目,只需要知道那里有一片大陆,不必此刻登陆。把这三档分清,是避免「读完觉得什么都没记住」的唯一方法。

一条自查原则:凡「本书证明」的条目,若只看名字想不起证明思路,回去翻那一页——那才是这本书真正要交到手上的东西。
191实验

综合站 全景与余韵综合实验(一):伴随的数值对拍

第四、五章的核心是伴随:两函子的 Hom 集之间有一一对应,而且这份对应「随对象自然变化」。本实验把这份对应拿到具体范畴里实测一遍——不证明,只对拍:把两边数出来,看它们是否永远相等。

场景。取伴随 F ⊣ G,其中 F: Set → Mon 是「自由幺半群」函子(把集合 S 送到以 S 为生成元的自由幺半群),G: Mon → Set 是「遗忘」函子(把幺半群送到它的底层集合)。伴随说:
HomMon(F(S), M) ≅ HomSet(S, G(M))。
左边是「从自由幺半群到 M 的幺半群同态」,右边是「从生成元集合到 M 底层集的任意函数」。伴随断言:二者个数相等、且一一对应。

我们用有限玩具模型对拍:取 S 为 n 个生成元,取 M 为有限群 ℤ3 与 ℤ3 × ℤ3,直接穷举两边的元素个数。

# 伴随 Hom(F(S), M)  ←→  Hom(S, G(M))  数值对拍
# F: Set -> Mon 自由幺半群;G: Mon -> Set 遗忘函子
import itertools

def hom_mon(Fnums, m, oper):
    """从自由幺半群(生成元 Fnums)到幺半群 m 的同态:
       同态由生成元的像决定,但须满足 '像的复合 = 复合的像'
       这里用自由幺半群至有限群的唯一性:只要生成元像确定,
       唯一扩张为同态——故计数 = 所有生成元像的合法选择数。"""
    gens = Fnums
    cnt = 0
    for img in itertools.product(m, repeat=len(gens)):
        # 自由幺半群的同态唯一由生成元像决定,且对有限群总良定义
        # (自由构造的最大好处:约束最少,故每一个选择都合法)
        cnt += 1
    return cnt

def hom_set(S, T):
    """集合间函数个数:|T|^|S|"""
    return len(T) ** len(S)

for n in range(1, 4):                 # 生成元个数
    S = list(range(n))                # 生成元集合
    for m, name in [([0,1,2], "Z3"), ([(a,b) for a in range(3) for b in range(3)], "Z3xZ3")]:
        left  = hom_mon(S, m, None)               # Hom(F(S), M)
        right = hom_set(S, m)                     # Hom(S, G(M))
        ok = "OK" if left == right else "MISMATCH"
        print(f"S={n}  M={name:6s}  Hom(F(S),M)={left:4d}  Hom(S,G(M))={right:4d}  {ok}")

运行结果(节录)。

S=1  M=Z3      Hom(F(S),M)=   3  Hom(S,G(M))=   3  OK
S=1  M=Z3xZ3   Hom(F(S),M)=   9  Hom(S,G(M))=   9  OK
S=2  M=Z3      Hom(F(S),M)=   9  Hom(S,G(M))=   9  OK
S=2  M=Z3xZ3   Hom(F(S),M)=  81  Hom(S,G(M))=  81  OK
S=3  M=Z3      Hom(F(S),M)=  27  Hom(S,G(M))=  27  OK
S=3  M=Z3xZ3   Hom(F(S),M)= 729  Hom(S,G(M))= 729  OK

读数。六行全部 OK,且数字规律一眼可见:右边是 |M|n(每个生成元独立选一个像),左边同样如此。这不是巧合——伴随的本质正是「自由构造把约束降到最低,于是每个生成元的像都能自由选择」;而这份「自由」的代数表述,就是 Hom 集的一一对应。

实验要点:伴随的 Hom 同构不是抽象摆设,它有一个非常朴素的内容——在自由对象上定义同态,等于在生成元上随便指定像。第四、五章 p97 的万有箭头,就是这句话的图形版。

对拍之外还有一层。右边的计数方法(每个生成元独立选像)之所以成立,恰恰因为左边是自由对象。把 F(S) 换成一个任意的、带关系的幺半群(比如 ℤ5),右边就不再有这种自由性,Hom 同构也随之消失——伴随是「自由⊣遗忘」这一对的专利,不是任意两函子之间都有的关系。这正是第四、五章反复强调的:伴随是稀有而珍贵的结构,不是随手可得的巧合。

192实验

综合站 全景与余韵综合实验(二):Lambek 句法分析器

第六章写过:一个句子的合法性,就是一条复合箭头。这个实验把它做成能跑的程序——输入一串词性,机器判断它能不能合成一个完整句子;若能,还会把推导树打出来。

场景。取 Lambek 演算的最小片段:三个基本类型 n(名词)、np(名词短语)、s(句子);两个构造:左除 A ⟍ B(「缺一个左边的 A 就成 B」)与右除 B ⟋ A(「缺一个右边的 A 就成 B」)。消去规则只有两条:
A · (A ⟍ B) → B(把左邻补上)  (B ⟋ A) · A → B(把右邻补上)。

词库照常用法:不及物动词 runs 的类型是 np ⟍ s,形容词 big 是 n ⟋ n,限定词 every 是 n ⟋ np 的一条边、又作 (s ⟋ (np ⟍ s)) ⟋ n。程序用栈式规约穷举所有合法归约顺序。

# Lambek 句法分析器:用类型消去判断一句话是否合法
# 类型表示为 ('\\', A, B) = A \\ B   |  ('/', B, A) = B / A   |  'n' 'np' 's'

def ts(t):
    """类型的可读记法:('\\', 'np', 's') → (np \\ s)。"""
    return t if isinstance(t, str) else f"({ts(t[1])} {t[0]} {ts(t[2])})"

def reduce_once(seq):
    """对类型序列做一步消去,返回所有可能的新序列(含推导记录)。"""
    out = []
    for i in range(len(seq) - 1):
        a, b = seq[i], seq[i + 1]
        # A · (A \\ B) -> B
        if isinstance(b, tuple) and b[0] == '\\' and a == b[1]:
            out.append((seq[:i] + [b[2]] + seq[i + 2:], f"({ts(a)}·{ts(b)})→{ts(b[2])}"))
        # (B / A) · A -> B
        if isinstance(a, tuple) and a[0] == '/' and b == a[2]:
            out.append((seq[:i] + [a[1]] + seq[i + 2:], f"({ts(a)}·{ts(b)})→{ts(a[1])}"))
    return out

def parse(words):                      # words = [类型, ...]
    seen = set()
    stack = [(tuple(words), [])]
    while stack:
        seq, steps = stack.pop()
        if len(seq) <= 1:
            if seq and seq[0] == 's':
                return steps
            continue
        if seq in seen:
            continue
        seen.add(seq)
        for nxt, why in reduce_once(list(seq)):
            stack.append((tuple(nxt), steps + [why]))
    return None

N, NP, S = 'n', 'np', 's'
lex = {
    "every": ('/', NP, N),     # every : np / n(限定词;完整类型 (s/(np\s))/n 的演示简化)
    "a":     ('/', NP, N),     # a     : np / n
    "big":   ('/', N, N),      # big   : n / n(形容词)
    "cat":   N,                # cat   : n(普通名词)
    "runs":  ('\\', NP, S),   # runs  : np \ s(不及物动词)
}

for sent in ["every big cat runs", "a cat runs", "cat runs big"]:
    toks = [lex[w] for w in sent.split()]
    r = parse(toks)
    print(f"{sent:20s} -> {'ACCEPT' if r else 'REJECT'}", ("; " + " ; ".join(r)) if r else "")

运行结果(节选)。

every big cat runs   -> ACCEPT ; ((n / n)·n)→n ; ((np / n)·n)→np ; (np·(np \ s))→s
a cat runs           -> ACCEPT ; ((np / n)·n)→np ; (np·(np \ s))→s
cat runs big         -> REJECT 

读数。第一、二句通过,第三句被拒——cat runs big 里 big 需要一个右边的 n,而它右边已经没有了,消去卡住。语法合法性在这里成了纯粹的组合问题:把类型序列一路归约,若能归到只剩一个 s,句子就合法;否则非法。这正是 Lambek 定理的内容——推导即复合,句子即态射。

实验要点:这个分析器只有三十行,却已经抓住了人类语言的一条硬骨架。要处理自然语言的全部复杂性还需要更多类型构造(模态、连续、类型提升等),但出发点永远是这一条:词是对象,邻接是复合,整句是箭头。

一处必须说明的简化。上面的类型标记作了教学简化(如 every 的完整类型 (s ⟋ (np ⟍ s)) ⟋ n 被替换成更短的近似),目的是让三十行代码能一次读通;真正的 Lambek 演算还需处理类型提升与迭代,才能覆盖「every big cat」这类含形容词的连锁。这份简化不影响结论:合法性与推导的对应关系,与类型的完整程度无关,只与消去规则有关。

193挑战

综合站 全景与余韵终极挑战:三重启发的接力

全书最后一道挑战,把三重启发的接力棒传完:逻辑递出「命题」,语言接过变成「类型」,计算再接过变成「程序」,最后交回范畴——同一根棒,三种握法。题目只有一道,但要跑完四程。

挑战题。取最经典的一条推理——肯定前件:由「P ⟹ Q」与「P」得「Q」。这条推理在三条战线上各写一遍,画出一张对照表,然后回答:为什么三处写的是同一件事?又为什么「接力」不可能掉棒?

第一棒(逻辑 → 类型)。一个「P ⟹ Q 的证明」是什么?Curry–Howard(p157)说:它是一个函数——吃一个 P 的证明,吐一个 Q 的证明。于是推理规则「由两条前提得结论」变成程序里的函数应用:把 x: P 喂给 f: P → Q,得到 f(x): Q。逻辑上「删掉一段绕路」=计算上「求值一步」——同一动作的两个名字。

第二棒(类型 → 范畴)。Lambek(p160)说:类型就是对象,函数就是箭头,函数应用就是复合。于是同一条推理在范畴里的样子是:点 x: 1 → P 与箭头 f: P → Q 复合,得 f ∘ x: 1 → Q。「真」是终对象 1、「假」是始对象 0、「且」是积、「或」是余积——第三章与第六章的两张表,在同一个范畴里对齐。

第三棒(范畴 → 逻辑)。在 Cartesian 闭范畴(p156)里,指数对象 QP 的万有性质给出求值箭头 ev: QP × P → Q——正是肯定前件。三棒跑完,接力闭合:从任何一棒出发,都能绕回起点;而「绕回来不添不减」的那句保证,仍是 p103 的三角恒等式。

对读表(补全右列空白)。

环节逻辑(命题)类型(程序)范畴(箭头)
前提命题 P类型 P对象 P
蕴含P ⟹ Q函数类型 P → Q指数对象 QP
使用规则肯定前件函数应用 f(x)复合 f ∘ x
结论命题 Q类型 Q对象 Q
化简删去绕路一步求值三角恒等式(p103)

思路提示。三问递进。①为什么能有三副面孔?因为三者问的其实是同一个问题:合法的构造如何组合。逻辑管「什么能推出」,语言管「什么被说出」,计算管「什么可执行」——一旦都改写成「对象与箭头」,剩下的就只有复合律。②哪一棒最容易掉?第二棒:把「类型」当「集合」看会立刻失灵——类型不是元素的袋子,它是对象(p163);把「函数应用」当「取一个元素」也会失灵——点是从 1 出发的箭头。掉棒处几乎总在「偷偷用元素语言」。③第四条战线在哪?把「证明本身」也当对象:证明之间可以比较、可以复合、可以同伦——塔往上再走一层,就是 p171 的 ∞-世界。

反思。这道题没有唯一答案,但要看清一件事:三张对照表不是三份要背的清单,而是同一次翻译的三种字迹。真正交到手上的是一种能力——见到任何一个「过程」,先问:它由哪些对象、哪些箭头复合而成?答得出,就已经站在范畴论的门口;答得顺,这三重启发的接力才真正跑完。
194习题

综合站 全景与余韵二十四题自查

六章各六题,共二十四题。题不在难,在点到筋骨:每题都对应一个必须内化的定义、一处必需自己动手验算的自然性、或一个必须能画出来的图形。建议先全部写完再翻答案(答案在下一站评讲页的原则里)。

1 写出范畴的三项数据与两条公理。为什么「对象类」而不是「对象集」?
2 举出三个以上范畴(一个具体、一个抽象、一个「退化」的),并写出各自的态射与复合。
3 同构与等价有什么区别?为什么范畴论说「对象只到同构为止」?
4 陈述 Yoneda 引理,并解释它为什么被称为「全书的支点」。
5 举例说明:两个不同的构造物满足同一泛性质。它们之间必存在什么?
6 自然变换的「自然」指什么?写出自然性方块,并解释它是一组等式而非过程。
7 写出积与余积的万有性质。说清楚它们各自「唯一」到什么程度。
8 拉回与推出各是哪种极限?在 Set 中各对应什么具体构造?
9 为什么说「极限统一了一切构造」?给出至少四个被统一的具体例子。
10 陈述泛性质定对象定理,并说明为什么它免除了「选代表元」的麻烦。
11 「由关系定义对象」——举一个具体例子,说明不用元素如何确定一个对象。
12 极限与余极限的对偶性如何表述?举出两组互为对偶的构造。
13 写出伴随的两种等价刻画(Hom 同构与万有箭头),并说明二者如何互推。
14 单位与余单位是什么?写出三角恒等式,并说明它表达的是「互逆」的哪种弱化。
15 为什么说伴随统一了「自由」与「遗忘」?举例说明左伴随=自由、右伴随=遗忘。
16 伴随唯一到什么程度?为什么「伴随的存在」是一个强约束?
17 单子的三项数据与两条公理是什么?它与代数结构(如幺半群)有何关系?
18 Kleisli 范畴与 Eilenberg–Moore 范畴分别「记得」了什么?两者如何分解同一个单子?
19 什么是 Cartesian 闭范畴?写出指数对象的万有性质,并说明它如何对应蕴含。
20 陈述 Curry–Howard 对应:命题/证明/归约分别对应什么?
21 Lambek 定理说什么?用「及物动词」的类型 n ⟍ s ⟋ n 演示一次消去。
22 组合语义学如何把「意义」放进函子?给出一个从词到句的意义合成链。
23 「结构先于个体」在数学与哲学上各指什么?它与 Yoneda 引理是什么关系?
24 回看全书:如果只允许用一句话向一位没学过范畴论的人介绍它,会说什么?

用时建议。第 1–6 题属第一、二章,应能在半小时内写完;第 7–12 题需动手画万有图,留一小时;第 13–18 题最难,建议写完再核对第 13、17 两题;第 19–24 题是第六章的收束,其中第 21、23 两题是本书的火力点。

195评讲

综合站 全景与余韵评讲:四类错因

六章八十几道练习下来,错法其实只有四种。这不是巧合——四种错恰好对应四个最容易松动的关节。把它们认准,自查页的二十四题会过得快得多。

错因典型症状根源与对策
一 · 偷用元素证明里出现「取 x ∈ A」;定义写成「A 中的元素满足…」根源:把具体范畴(Set)的习惯搬进了任意范畴。
对策:动笔前先自问「我这个 x 是从哪里取的?」若答案不是「由某条万有性质唯一给出」,就重写。
二 · 唯一性错档把「唯一到同构」写成「唯一」;把「存在唯一态射」写成「存在唯一对象」根源:混淆了三种唯一——对象唯一(假)、唯一到同构(泛性质)、唯一态射(万有性质)。
对策:每次写「唯一」,补一句「唯一到什么」:唯一态射?还是只到同构?
三 · 自然性漏检断言某个对应是自然的,却从未写下自然性方块根源:「自然」被当成形容词,而非需验证的条件。
对策:凡说「自然同构」,必写出方块并在两行上各算一次复合——这是一次不可省的验算(本册 p97 的 Hom 同构就是这样验出来的)。
四 · 方向混淆左/右伴随对调;⟍ 与 ⟋ 用反;拉回写成推出根源:对偶构造只记名字、不记方向。
对策:记住一条锚——左伴随保持余极限,右伴随保持极限;再记住「自由⊣遗忘」:自由在左。方向由此确定。

四类错因的共同点。它们都不是计算错误,而是概念的边界没量清:第一类把元素偷渡进了无元素的世界,第二类把「唯一」的三种含义混成一种,第三类把「自然」当成标签而非条件,第四类把方向当成可以随手记的细节。换句话说,这四处正是范畴论最不容含糊的地方——它逼精确,误差无处可藏。

一条通关经验:做题时若卡住,先不忙算,回到「对象是谁、态射是谁」与「我要证的是一组等式还是两个方向的自然对应」这两问——八成的卡壳会在这一分钟里解开。

最后一句。若自查中发现某类错反复出现,不必焦虑,那只是说明对应那一章的某个关节还没有真正松动。把那一页重读一遍、把那个万有图亲手画一遍,错就会退回到它该待的位置——已被看见的错,不再是错。

196小结

综合站 全景与余韵余韵(一):逻辑·语言·计算三条战线

第六章讲的是范畴论如何照进别的领域。收官之际,把这三条战线在今天的推进方向各说一段——不是教程,只是让知道门在哪、朝哪开。

逻辑从拓扑斯到类型论
Lawvere–Tierney 的拓扑斯给直觉逻辑找了范畴模型;内语言让「在一个范畴里做逻辑」成为可能。今天的方向是:把构造性逻辑、证明论与范畴语义更紧地绑在一起,让「证明」本身就是可以复合、可以比较的对象。
语言从 Lambek 到组合语义
Lambek 定理说语法即范畴;Montague 与后继者把「意义」定义成函子。今天的自然语言处理里,这套类型驱动的方法仍在提供骨架——它把「一个句子的意义如何从词的意义合成」写成了可计算的复合律。
计算从单子到类型系统
单子在函数式语言里用于表达状态、异常与副作用,成为最广为人知的应用。更深的一层是 Curry–Howard:类型即命题、程序即证明、求值即归约。计算与逻辑在这里不是类比,而是同一条链的两端。

三条战线其实是一条。逻辑讲「什么能证明」,语言讲「什么被说出」,计算讲「什么可执行」——三者都在问同一个问题:合法的构造如何组合。范畴论给出的回答只有一句:把它写成箭头,让复合律管住一切。逻辑的证明、语言的推导、计算的程序,都是同一个复合结构的三副面孔。

为什么是这三条

因为这三处最不像数学,却最先被数学化:一个推理、一句话、一个算法,乍看都是「过程」,范畴论却把它们重写成「对象与箭头」。一旦重写成功,过程就变成了可以被比较、被证明、被计算的东西。

p196

一条阅读建议。想沿逻辑往下走,从拓扑斯的内语言读起;想沿语言走,先把 Lambek 演算的类型提升补上;想沿计算走,从单子在函数式语言中的三条律开始。三条路都不轻,但都有同一个入口:先能顺畅地画万有图。

197小结

综合站 全景与余韵余韵(二):走向高阶范畴与 HoTT

本书从头到尾只用一个层级的范畴:对象、态射、以及它们之间的自然变换。但自然变换自己也能复合,复合之间还能比较——一层层加上去,就是高阶范畴。这是今天活着的数学前沿。

为什么必须往上走。因为「同构」这个概念有层次。在本书里,我们说两个对象同构;但「同构」的证明之间也可以有相等、有等价。一旦要求「把这件事也讲清楚」,就不能再停留在单层范畴——需要 2-范畴(对象、态射、态射间的 2-态射)、双范畴,再往上到 ∞-范畴。高阶范畴的全部动因,就是「把同构本身也当作结构来处理」。

逐层加高 1 层 · 本书 对象 态射 2 层 · 加 2-态射 2-态射:态射之间的比较 ∞ 层 · HoTT 等式即路径 路径之间的等式=更高一层的路径 每一层都要「唯一到同构」 层数越高,同构越宽容 「等同即同构」: 同构的证明就是「相等」的证据
图 Z-3 逐层加高:本书住在一层(对象与态射),往上是 2-态射,再往上是 ∞ 层与 HoTT——等式即路径、路径之间的等式是更高一层的路径;层数越高,「等同」越宽容。

HoTT 做的事。同伦类型论(Homotopy Type Theory)把「类型」读作「空间」,「两个元素的等式」读作「两点间的路径」。于是:等式证明不再是一张纸上的符号,而是一条可以走的路;而「两条路径相等」就是更高一层的路径。这条读法一路往上,恰好对应 ∞-范畴的层层结构——「等同即同构」(equality is isomorphism)从一句口号,变成了可以证明的原则。

本册到此为止。本书没有引入 ∞-范畴,也不打算引入——它属于另一个体量的教材。但有一条线已经握住了:从 p50 的 Yoneda,到 p97 的 Hom 同构,到第六章的「结构先于个体」,再到 HoTT 的「等同即同构」,全部是一条思路的四次抬升。层级会变,箭头不变。

顺带一句:本书为避免拖累主线,把 2026 年这一格的时间线留在了年表页(p187)——它记的是「还没写完的历史」,而这正是留下的那一格。
198速查

综合站 全景与余韵符号总表与终极速查

把全册用到的记号收在一页,按类别排列。凡本册用到而此处未见者,属一次性记号,已在原页就地说明。

记号含义首次出现
C, D, Set范畴;Set 指集合与函数的范畴p9
A, B, X对象(斜体大写拉丁)p10
f, g, h态射(斜体小写拉丁)p10
f: A → B从 A 到 B 的态射p10
Hom(A, B)态射集p11
g ∘ f复合(先 f 后 g)p11
idA单位态射p11
≅同构p15
F, G函子p41
F: C → D范畴间的函子p41
η: F ⟹ G自然变换(双箭头)p45
ηA自然变换在对象 A 处的分量p45
Nat(F, G)自然变换的集合p45
C(A, −)可表函子(Hom 函子)p49
1, 0终对象、初始对象p17
A × B, A + B积、余积p67
A ×C B拉回(纤维积)p71
lim, colim极限、余极限p73
Δ对角函子p73
F ⊣ G伴随(F 左伴随 G)p95
η, ε单位、余单位p98
T = G ∘ F单子(自函子+单位+乘法)p128
μ, η单子的乘法、单位p128
CTKleisli 范畴p131
CTEilenberg–Moore 范畴p130
BA指数对象(内部 Hom)p75
ev, ⌜f⌝求值态射、Curry 化p75
Ω, true子对象分类器、真值态射p159
A ⟍ B, B ⟋ ALambek 左除、右除p160
n, np, s语法基本类型:名词、名词短语、句子p160
⊤, ⊥, ∧, ⟹真、假、合取、蕴含p156
⟍, ⟋与 ∖、/ 同义(排版符号)p160

两条使用约定。其一,拉丁字母与小写希腊字母表变量时一律斜体(A、f、η、μ),大写希腊与函数名、单位正体(Δ、Hom、Nat、id、ev)。其二,⟹ 只用于自然变换,→ 用于态射,二者不可混用——这一点在第二章 p45 首次出现时已经交代过。

二索引(Index)

术语与概念

  • 2-范畴171
  • Galois 连接100
  • Hom 集与局部小19
  • Kleisli 范畴131
  • Lawvere 理论138
  • Yoneda 嵌入51
  • 伴随的唯一性102
  • 伴随函子96
  • 伴随函子定理109
  • 伴随与可表104
  • 比较定理132
  • 单位与余单位98, 103
  • 单子128
  • 等化子70
  • 点式伴随105
  • 读法139
  • 对称幺半范畴135
  • 对偶的伴随读法107
  • 对偶原理24
  • 范畴的等价15
  • 范畴等价22
  • 骨架23
  • 函子的复合44
  • 函子范畴47
  • 核与余核72
  • 交换图20
  • 可表函子49
  • 拉回71
  • 来自伴随的结构149
  • 连通极限79
  • 模板66
  • 偏序集是范畴13
  • 群=单对象群胚18
  • 双代数140
  • 态射层面15
  • 图形范畴78
  • 忘却的层级106
  • 协变41
  • 幺半闭范畴136
  • 幺半范畴126, 134
  • 幺半群对象127
  • 幺半群是单对象范畴13
  • 易错清单33, 57, 58, 147
  • 余单子133
  • 余积68
  • 与上半章的接口88, 118
  • 与上半章的接口与出口148
  • 与样板108
  • 正式版97
  • 指数对象75
  • 锥与极限73
  • 自然变换45
  • 自然同构46

定理与命题

  • Set 完备74
  • Yoneda 引理50
  • 伴随 ⇒ 单子128
  • 本质唯一17
  • 表示本质上唯一49
  • 场景191, 192
  • 对偶原理14
  • 积的唯一性77
  • 挑战题180, 193
  • 右伴随保极限101
  • 余单子150
  • 战线二170
  • 战线三170
  • 战线一170

记号与缩写

  • CCC76, 82, 86, 87, 93, 105, 112, 118, 126, 136, 146, 154 等
  • EM119, 124, 125, 130, 131, 132, 137, 138, 141, 144, 146, 147 等
  • ETCS4, 8, 9, 154, 166, 174, 175, 177, 180
  • FA54, 63, 109, 110, 117, 123
  • FX94, 102, 104, 108, 110, 111
  • RAPL94, 102, 109, 110, 111, 118, 120
  • UF103, 110, 118, 124, 125, 132, 137, 147, 149, 153, 184

人名

  • Abel187, 188, 190
  • Alice160, 161, 162, 173
  • Cartesian8, 64, 65, 76, 88, 104, 105, 126, 154, 155, 156, 157 等
  • Coecke4, 162, 170
  • Curry75, 76, 86, 154, 155, 156, 157, 169, 172, 176, 177, 181 等
  • Currying64, 75, 76, 87, 105, 112, 114, 117, 123, 136, 145, 154 等
  • DisCoCat4, 8, 131, 148, 154, 162, 170, 173, 175, 176, 177
  • Eilenberg2, 3, 4, 40, 45, 59, 124, 130, 132, 137, 170, 179 等
  • Frobenius94, 107, 108, 116, 118, 123
  • Galois6, 8, 13, 56, 94, 95, 100, 105, 116, 117, 118, 123 等
  • Grothendieck4, 44, 187, 188
  • Haskell4, 139, 146, 170
  • HoTT4, 171, 184, 185, 187, 190, 197
  • Hopf106, 124, 127, 140, 146, 148, 153
  • Howard75, 76, 86, 154, 155, 156, 157, 169, 172, 176, 177, 181 等
  • Kleisli119, 124, 125, 131, 132, 137, 138, 141, 144, 146, 147, 150 等
  • Lambek4, 8, 9, 137, 154, 155, 160, 162, 169, 173, 176, 177 等
  • Lane2, 3, 4, 40, 45, 59, 60, 119, 120, 126, 127, 137 等
  • Lawvere4, 138, 145, 153, 166, 187, 188, 190, 196
  • Maybe8, 124, 129, 131, 139, 142, 144, 146, 147, 151, 153
  • Moggi4, 139, 170
  • Montague4, 187, 188, 196
  • Moore124, 130, 132, 137, 170, 186, 187, 190, 194
  • State139, 141, 142, 146, 147, 150, 153
  • Tierney4, 187, 188, 190, 196
  • Writer139, 141, 142, 146, 147, 153
  • Yoneda2, 5, 8, 9, 10, 21, 26, 30, 34, 35, 37, 39 等