Topos: 逻辑的范畴分析

这本书基本上算是第一本关于范畴逻辑的教材, 所以非常温和. 可以看到Steve Awodey的Category Theory对于本书的写法也有不少借鉴.

第1章 数学 = 集合论?

无人能够将我们从Cantor创造的天堂中驱离.
——David Hilbert

第1.1节 集合论

集合论为人所知的领域所坐落于的基本概念是集合成员资格(set membership). 一个集合最初可以想成是一个对象的合集, 这些对象被称为该合集的元素. 成员资格为一个对象由于是某个集合的元素而与该集合之间存在的一种关系. 这个关系的符号化是希腊字母ϵ (epsilon). {译注: 虽然集合论最初会使用ϵ这个符号, 但是如今已标准化为了, 我们之后也将使用.} xA的含义是A为一个对象合集, 而其中之一的对象为x, 即xA的一个成员 (元素). 当x不是A的一个元素时, 这记作xA. 如果xA, 我们也称x属于A.

根据这些基础想法, 我们可以构建一个定义和构造的名录, 其允许我们刻画特定集合以及由给定的集合构造新的集合. 以下是两种会用到的技术.

(a) 表格形式: 这种方法在于通过显式陈述其所有的元素来描述一个集合. 给出的是这些元素的列表, 以括号封闭. 因而{0,1,2,3}代表这样的合集, 其元素是到3为止的所有完全数.

(b) 集合构建器形式: 这是一种远为强大的设备, 其通过陈述一个由集合的所有元素拥有而其他的对象并不具备的性质来刻画某个集合. 因此, 性质是一个小于四的完全数确定了其上以表格形式所给出的集合. 使用性质来定义集合升华为了以下的

概括原理. 如果φ(x)是一个与对象 (复数) x有关的性质或者条件, 那么存在一个集合, 其元素恰是具有性质 (或者满足条件) φ(x)的对象.

对应于性质φ(x)的集合记作{x:φ(x)}这个表达式读作由所有φ之于x为真的那些对象x构成的集合.

例子1. 如果φ(x)是条件xAxB, 那么我们就得到了集合{x:xAxB}其由所有既属于A又属于B的对象构成, 即AB所共有的对象之集合. 这被称为集合AB, 简记作AB.
例子2. 根据概括原理, 条件xAxB所产生的集合{x:xAxB}由所有A的元素连带着所有B的元素构成, 而别无其他. 其被称为AB, 记作AB.
例子3. 条件xA确定了A, 即A, 因而A={x:xA}这个集合的成员恰是那些不属于A的对象.

这些例子都是从已有的集合产生新的集合. 我们也可以使用条件直接定义集合而不诉诸于任何特定的集合. 因而通过xx我们得到了集合={x:xx}其由所有那些x不等于x的对象x构成. 既然没有对象与自身相异, 所以没有可以满足性质xx的对象, 即没有成员. 出于这个原因被称为集. 注意到我们已经拓宽了我们的本体论, 从集合作为有着一些成员的原始概念过渡到了承认压根没有任何成员的集合. 空合集的概念往往最初是难以接受的. 人们最初总是倾向于将集合想成是由组成部分 (或者元素) 以相当具体的方式建造而成的对象. 的引入迫使我们将集合考虑为抽象的自成存在. 我们可以将对于的引用想成是自然语言的替代形式, 例如AB=AB没有共同元素的缩略方式. 经验和熟悉最终将会表明接纳作为实际的对象可以增强并简化理论. 称the空集是由只可能存在一个没有成员的集合这一事实所澄清的. 这是由集合相等的定义所推出的, 而集合相等的定义则体现在以下的

外延原理. 两个集合相等当且仅当它们拥有相同的元素.

从这条原理可以推出如果两个集合要是相异的, 那么必然存在一个对象, 其是其中一个的成员而不是另一个的成员. 既然空集没有元素, 那么它们就不能由此区分, 因而外延原理推出了只存在一种空集.

子集

集合相等性的定义可以另外通过子集的概念传达. 集合A是集合B的一个子集, 记作AB, 如果每个A的成员也是B的一个成员.

例子1. 集合{0,1,2}{0,1,2,3}的一个子集, {0,1,2}{0,1,2,3}.
例子2. 对于任意的集合A, 我们有AA, 因为A的每个成员都是A的一个成员.
例子3. 对于任意的集合A, A, 因为如果不是A的一个子集, 那么将会存在的一个元素而其不属于A. 然而, 压根就没有元素.

使用这一最新概念我们可以看到, 对于任意的集合AB, 我们有A=B当且仅当ABBA.如果AB但是AB, 我们可以记作AB (AB的一个子集).

Russell悖论

在陈述和使用概况原理的过程中我们并没有给出对于什么是与对象 (复数) x的条件的精确解释, 当然也没有给出对于字母x所引用的是何种实体 (entity) 的精确解释. 我们集合所意图的元素是诸如桌子, 人, 埃菲尔铁塔之类的物理对象, 抑或是抽象的东西, 还是说其他集合本身呢? 下面这个合集是什么东西?V={x:x=x}所有等于自身的东西都满足这个集合的定义条件. 那么, V应该囊括世界万物 (包括自身) 吗? 抑或是, 其应该被限制于特定的一类对象或者一个特定的论域 (universe of discourse) 吗?

为了刻画这些问题的重要性, 我们考虑条件xx.

第1.2节 数学基础

第1.3节 作为集合论的数学

第2章 什么是范畴

...理解在于将一种类型的现实归约为另一种.
——Claude Lévi-Strauss

第2.1节 函数是集合?

第2.2节 函数的复合

第2.3节 范畴: 最初的一些例子

范畴对象箭头Set所有的集合所有的集合之间的函数Finset所有的有限集合所有的有限集合之间的函数Nonset所有的非空集合所有的非空集合之间的函数Top所有的拓扑空间所有的拓扑空间之间的连续函数Vect向量空间线性变换Grp群同态Mon幺半群幺半群同态Met度量空间压缩映射Man流形光滑映射TopGrp拓扑群连续同态Pos偏序集单调函数

第2.4节 抽象的病理学

我们刚刚在识别范畴概念过程中所经历的, 正是纯数学的基本运作方式之一. 这种方式被称为抽象. 它始于通过经验和对若干具体情形的考察而产生的认识: 某些现象反复出现, 存在若干共同特征, 不同实体的行为之间存在形式上的类比. 随后才是抽象的实际过程, 即将这些共同特征单独提取出来加以呈现, 形成对某个抽象概念的公理化描述. 这正是我们如何通过考察一系列特定范畴, 从而得到范畴的一般定义的方式. 数学所研究的一切抽象结构 (群, 向量空间, 拓扑空间等) 也都是通过同样的过程得到的.

获得抽象概念之后, 我们便发展其一般理论, 并寻求它的更多实例. 这些实例被称为该概念的例子, 或定义该概念的公理的模型. 任何属于该概念一般理论的命题 (即可从公理推导出的命题) 在所有模型中都成立. 寻找新模型的过程是一种特殊化, 是抽象的逆过程. 理解上的进步, 既来自于认识到某个新的特定结构是某种更一般现象的一个实例, 也来自于认识到若干不同结构具有共同的核心. 我们对数学现实的认识, 正是通过这两个过程的交互作用而不断深化的, 即在特殊与一般之间来回移动. 我们将会看到, 这一程序将会在topos理论的发展中得到很好的刻画.

特殊化的一个重要方面涉及所谓的表示定理. 这类定理断言, 某一抽象结构的公理的任何模型都必定是 (或者说等价于) 某一特定具体模型列表中的一个. 它们度量了原初的启发性例子在多大程度上涵盖了该一般概念的所有可能模型. 例如, 我们知道(根据Cayley定理)任何群都可以被视为某个集合的置换群, 而任何布尔代数本质上都是某个集合的子集代数. 粗略地说, 抽象程度越强, 即我们在抽象概念中加入的内容越多, 其可能的例子就越少. 极端情形是只有唯一的模型, 其经典例子是公理化呈现的完备有序域的概念. 事实上, 只存在唯一一个这样的域, 即实数域. {译注: 当然了, 这个唯一也是在同构意义下唯一.}

范畴论的公理代表了一种非常弱的抽象. 基于我们最初的列表而言, 并不存在与之相关的表示定理. 我们一开始讨论的是数学论述的一般宇宙 (复数). 然而, 我们仅仅选取了我们最初例子的骨头, 血肉存留是如此之少以至于这些公理容许各种各样与Set, Top, Vect等大相径庭的病态例子. 人们很容易发现许多压根就不能算是论述宇宙的例子, 其对象并非集合, 其箭头和函数全然不同, 而运算也和函数复合毫无关系. 以下的列表包含了诸多这种范畴的例子. 读者压根仔细检视它们, 填充定义的细节, 并且检查每种情况下结合性公理和恒元公理的确得到了满足.

第2.5节 基本例子

例子1. 1: 这个范畴只有一个对象和一个箭头. 既已说过这句话, 我们发现其实其结构就已经完全确定下来了. 设我们称这个对象为a而这个箭头为f, 那么我们必然只能置dom(f)=cod(f)=a, 因为a是唯一可用的对象. 既然f是唯一的箭头, 那么我们必然只能取其为a上的恒等箭头了, 即置1a=f. 唯一可以进行复合的箭头序对是f,f, 而我们只能置ff=f. 这就满足了恒元律, 因为1af=f1a=ff=f. 而结合律自然也是满足的, 因为f(ff)=(ff)f=f. 因此, 我们的确有了一个范畴, 图示为欠一张图我们并没有解释af是什么. 要义在于其可以是任何你喜欢的东西, 例如a或许是一个集合而f是其恒等函数. 但是, f也可以是一个数字, 一对数字, 一个香蕉, 埃菲尔铁塔, 或者Richard Nixon.

第3章 箭头而非epsilon

思想的世界并不会一下子就向我们敞开. 我们必须持续不断地在我们的意识之中重新创造它.
——René Thom

本章我们将会检视诸多标准的集合论构造, 然后将其重新以箭头的语言表述. 正如引论中所言, 一般的主题在于诉诸于成员资格的内部结构的概念定义要通过诉诸于集合之间的联系从外部进行刻画, 而这些联系是通过函数建立的. 分析将会逐步引导我们抵达泛性质极限的概念, 其涵盖了几乎所有范畴论中的构造.

第3.1节 单态箭头

一个集合函数f:AB被称为是单射的, 或者一对一的, 如果不存在两个不同的输入能够给出相同的输出, 即对于输入x,yA, 有如果f(x)=f(y), 那么x=y.现在让我们取一个单射f:AB和两个平行函数g,h:CA满足欠一张图交换, 即fg=fh.

然后对于xC, 我们有fg(x)=fh(x), 即f(g(x))=f(h(x)). 但是, 既然f是单射的, 这意味着g(x)=h(x). 因此, gh对于每个输入都会给出相同的输出, 也就是说它们是相同的函数. 我们表明了一个单射f左可消去的, 即每当fg=fh, 都有g=h.从另一方向来说, 如果f具有此左可消去性质, 其必然是一个单射. 为了看出这点, 取A中的xy使得f(x)=f(y).欠一张图指令g(0)=xh(0)=y建立了一对从{0} (即序数1) 到A的函数gh, 并且我们有fg=fh. 根据左消去性质, g=h, 于是g(0)=h(0), 即x=y.

因此, 我们看到Set中的单射箭头恰是左可消去的箭头. 所有这些的要义在于后一种性质全然仅需诉诸于箭头而表述, 这产生了以下的抽象定义:

一个范畴C中的一个箭头f:abC中是单态的(monic), 如果对于任意的平行C-箭头g,h:ca, 等式fg=fh可以推出g=h. 符号f:ab用来指明f是单态的. 这个名字来源于单射的代数同态 (代数同态即诸如MonGrp这样的范畴中的箭头) 被称为单态射 (monomorphism).

译者注记. 如今术语monomorphsim专指本书的monic arrow了. 当我使用单态射的时候, 读者必须注意, 我指的只是monic arrow而不是injective homomorphism. 这两个概念并不等价, 并不仅仅是因为某些范畴里的箭头并非函数. 即便在箭头的确是函数的范畴里 (一般来说, 这种范畴的自然例子是具有结构的集合和保持结构的映射), monic arrow和injective homomorphism也未必相同.
例子1. 在范畴N (第2章, 例子6) 中每个箭头都是单态的. 这里左可消去的含义是如果m+n=m+p, 那么n=p.这当然是一条关于数字加法的正确陈述.
例子2. 在一个预序里, 每个箭头都是单态的: 对于一对g,h:ca, 我们必然有g=h, 因为至多只有一个箭头ca.
例子3.Mon,Grp,Met,Top里单态射即是那些作为集合函数是单射的箭头 (见例如Arbib和Manes [75]).
例子4. 在一个逗号范畴Ca中, 从(b,f)(c,g)的一个箭头k欠一张图Ca中是单态的当且仅当k作为一个从bc的箭头在C中是单态的.
练习. 在任意的范畴里
  1. 如果fg都是单态射, 那么gf是单态射.
  2. 如果gf是单态射, 那么f是单态射.
解答.
  1. 对于箭头h1h2满足(gf)h1=(gf)h2根据范畴复合的结合律有g(fh1)=g(fh2)根据g是单态射, 我们将g从左边消去就得到了fh1=fh2根据f是单态射, 我们将f从左边消去就得到了h1=h2gf可从左边消去, 即其为单态射.
  2. 对于箭头h1h2满足fh1=fh2我们有g(fh1)=g(fh2)根据范畴复合的结合律有(gf)h1=(gf)h2鉴于gf是单态射, 可从左边消去以得到h1=h2那么, f的确也是可以从左边消去的, 即f是单态射.

第3.2节 满态箭头

一个集合函数f:AB映上的, 或者说满射的, 如果陪域Bf的值域, 即对于每个yB, 存在某个xA满足y=f(x), 也就是B的每个成员都是f的一个输出. 这个概念的仅箭头定义来源于将单态的定义调转箭头方向, 形式化地说:

一个范畴C中的一个箭头f:ab满态的(epic) (右可消去的), 如果对于任意的一对C-箭头g,h:bc, 等式gf=hf可以推出g=h, 即每当图表欠一张图交换, 就有g=h. 记号f:ab用于满态箭头.

Set之中, 满态箭头恰是满射函数 (留给读者作为联系, 或者参见Arbib和Manes, p. 2). 满射的同态被称为满态射(epimorphsim).

译者注记. 和之前的译者注记一样, 我们的译文中所有的满态射将会指的是epic arrow而非surjective homomorphism. 如今的epimorphsim在文献中仅指epic arrow, 并且epic arrow和surjective homomorphism并不等价.

在范畴N中, 每个箭头都是满态射, 因为n+m=p+m可以推出n=p. 在任何预序里, 所有的箭头都是满态的.

在我们原本所列的范畴列表里, 这些箭头都是函数, 并且作为函数是满射的箭头总是满态射. 相反的方向在Grp中为真, 但在Mon中不是. 自然数到整数的嵌入是一个幺半群同态 (相对于+), 这显然并非满射, 然而其在Mon中是右可消去的 (Arbib和Manes p. 57).

第3.3节 同构箭头

既是单射又是满射的函数被称为双射的. 如果f:AB是一个双射, 那么f之下从AB的路径可以被逆转或者说反转. 我们可以将f想成是对于A重新贴标签.

第3.4节 同构对象

C中的对象ab同构的, 记作ab, 如果存在一个C-箭头f:ab, 其在C中是一个同构, 即f:ab.

Set中, AB当且仅当AB之间存在一个双射, 在这种情况下其中每个集合都可以想成是另一个集合的重新贴标签版本. 作为一个具体的例子, 取一个集合A, 然后置B=A×{0}={x,0:xA}.

第3.5节 始对象

什么箭头性质可以突显Set中的空集呢? 对于一个集合A, 我们可以找到什么函数A呢? 回忆一下, 我们将函数刻画为了三元组A,B,X, 其中XA×B (第2.1节). 仔细检查这个定义的细节之后我们发现f=,A,是一个从A的函数. f的图为空, 而这f被人称为A空函数. 既然×A为空, 那么×A唯一的子集, 因而f是从A的唯一函数. 这种观察带我们抵达了以下定义:

定义. 范畴C中的一个对象0始的(initial), 如果对于每个C-对象a, C中恰存在唯一的从0a的箭头.

任意两个始C-对象在C中必然是同构的. 这是因为如果00是始对象, 那么存在唯一的箭头f:00g:00. 但是, 如此就有fg:00必然为10, 因为10唯一的箭头00, 鉴于0是始对象. 类似地, 因为0是始对象, gf:0010. 因此, f有一个逆g, 而f:00.

第3.6节 终对象

第3.7节 对偶性

我们已经观察到满态的概念是通过单态的概念反转箭头得到的. 同样的手法也适用于终对象和始对象. 这是范畴论中的对偶性概念的两个例子, 现在我们会将其描述得更为精确.

如果Σ是以基本的范畴语言写成的一句陈述, 那么Σ对偶(dual)Σop是由将Σ中的dom替换为cod, cod替换为dom, h=gf替换为h=fg所得到的陈述. 因此, 由Σ所提及的所有箭头和复合都在Σop中得到了反转. 由Σop所描述的概念或者构造被称为是对偶于由Σ所描述的概念或者构造. 因此, 满态箭头的概念对偶于单态箭头, 始对象的对偶是终对象, 诸如此类.

根据一个给定的范畴C我们可以按照以下方式构造其对偶或者说相反范畴Cop:

CCop拥有相同的对象. 对于每个C-箭头f:ab, 我们引入一个Cop中的箭头fop:ba, 这些就是Cop中全部的箭头了. 恰当gfC中有定义时, fopgopCop中有定义, 并且欠一张图fopgop=(gf)op. 注意到dom(fop)=cod(f), 而cod(fop)=dom(f).

例子1. 如果C是一个离散范畴, 那么Cop=C.
例子2. 如果C是一个预序(P,R), 其中RP×P, 那么Cop是预序(P,R1), 其中pR1q当且仅当qRp, 即R1R的逆关系.
例子3. 对于任意的C, (Cop)op=C.

Σ所表达的构造的对偶可以解释为应用于相反范畴的原本构造. 如果Σ对于C而言为真, 那么Σop对于Cop为真. 因此, Set中的始对象Setop中是终对象. 现在如果Σ是一个范畴论的定理, 即可从范畴论的公理中推导出来, 那么Σ将会在所有的范畴中为真. 因此, Σop将会在所有具有形式Cop的范畴之中成立. 但是, 任意的范畴D都具有这种形式 (置C=Dop), 于是Σop在所有范畴之中都成立. 因此, 根据任何对于范畴论的真陈述Σ我们立即就可以得到另一个真陈述Σop, 此即所谓的对偶原理.

对偶原理将要证明的东西的数目削减了一半. 例如, 首先我们注意到同构箭头的概念是自对偶的.

第3.8节 积

现在我们开始考虑赋予两个集合AB的积集合A×B={x,y:xAyB}一个基于箭头的刻画. 不了解范畴论的人或许很难相信这的确可以在不诉诸于有序对的情况下做到. 但是实际上的确可以, 在同构的意义下, 并且其完成的方式会将我们引向对于什么是范畴中的构造的一般刻画.

A×B相关联的是两个特殊的映射, 即投影(projection)pA:A×BApB:A×BB其由下列规则给出pA(x,y)=xpB(x,y)=y现在设我们给定了某个其他的集合C连带着一对映射f:CAg:CB, 那么我们根据规则p(x)=f(x),g(x)定义p:CA×B.欠一张图于是, 我们有对于每个xC, pA(p(x))=f(x)pB(p(x))=g(x)成立. 也就是说, pAp=fpBp=g, 即上述图表交换. 并且, 这样定义的p是能够使得上述图表交换的唯一箭头. 这是因为如果p(x)=y,z, 那么知道pA(p(x))=f(x)告诉我们y=f(x). 类似地, 如果pBp=g, 那么我们必然有z=g(x).

fg相关联的映射p通常记作f,g, 即fg积映射.

第3.9节 余积

的对偶概念是对象的余积, 或者说, 根据对偶原理我们可以将其直接定义如下.

定义. C-对象ab的一个余积是一个C-对象a+b连带着一对C-箭头ia:aa+bib:ba+b, 其满足对于任意具有形式(f:ac,g:bc)C-箭头序对, 恰存在一个箭头[f,g]:a+bc使得欠一张图交换, 即[f,g]ia=f[f,g]ib=g.

[f,g]被称为fg相对于嵌入(injection)iaib余积箭头.

Set之中, AB的余积是其无交并A+B. 这是两个看起来和AB一样的集合的并, 即它们分别同构于AB, 但是两个新的集合之间又是无交的, 即没有共同元素. 我们置A={a,0:aA}=A×{0}B={b,1:bB}=B×{1}(为什么AB=?) 然后定义A+B=AB嵌入iA:AA+B是由规则iA(a)=a,0给出的, 而iB:BA+B则是iB(b)=b,1.

练习1. 表明刚才定义的A+B,iA,iB满足余积的定义. (首先你应该确定这种情况下函数[f,g]的规则.)
练习2. 如果AB=, 表明ABA+B.

在一个预序(P,)里, p+q是由以下性质定义的:

  1. pp+q, qp+q, 即p+qpq的一个上界;
  2. 如果pcqc, 那么p+qc, 即p+q小于任何其他的pq的上界.

换言之, p+qpq最小上界. 在一个偏序集里, 最小上界若是存在则唯一, 并且会记作pq. 对于一个偏序集而言, 若其任意两个元素都具有最小上界和最大下界 (第3.8节), 那么其会被称为一个格(lattice).

用范畴的语言来说, 一个格是一个骨架预序, 其任意两个元素都有一个积和一个余积.

两个分别具有mn个元素的有限集合的无交并是一个具有(mn)个元素的集合. 的确在Finord里, mn的余积是序数m+n (这里的+是相当字面意思的加法). 相对于序数1={0}2={0,1}, 在骨架范畴Finord里下列陈述为真:1+1=2而在Finset或者Set之中, 更准确来说是1+12(余积是在同构意义下定义的.)

我们之后在第5.4节里将会看到存在范畴在某种合理的解释下, 这上面最后一条陈述为假.

练习3.

第3.10节 等化子

对于Set中的一对平行函数f,g:AB, 令E是使得fg相合的A的子集, 即E={x:xAf(x)=g(x)}那么嵌入函数i:EA被称为fg等化子(equaliser). 之所以取这个名字, 是因为在其与i的复合下我们发现fi=gi, 即两个函数被i等化 (equalised)了. 而且, ifg标准 (canonical)等化子——如果h:CA任意其他这样的fg的等化子, 即fh=gh欠一张图那么h可以通过i:EA进行唯一分解, 即存在唯一的函数k:CE使得ik=h. 换言之, 给定了h之后, 只存在唯一的方式填充虚线箭头以使得上述图表交换.

第3.11节 极限和余极限

对于两个对象之积和两个箭头的等化子而言, 其定义有着相同的基本形式. 在每种情形下, 待定的实体都以标准的方式具有一个特定的性质, 也就是说任何其他具有该性质的实体都能按照之前指出的方式通过它进行分解. 在等化子的情形中, 这个性质是能够等化原本的两个箭头. 在ab的情形之中, 这个性质是作为以ab为陪域的一对箭头的定义域. 这种情况叫做泛构造(universal construction). 待定的实体在所有具有某个特定性质的东西里是泛的(universal).

我们可以通过考虑图表以使得这个想法更加精确, 但希望不会太过学究琐碎. 当我们言称某个范畴C中的一个图表D时, 我们指的不过是一个C-对象di,dj,的合集连带着一些图表的特定对象之间的C-箭头g:didj. (一对对象之间可能存在多于一个箭头, 也可能没有箭头.)

图表D中的一个锥(cone)由一个C-对象c和连带着对于每个D中的对象di的一个C-箭头fi:cdi构成, 其满足每当g是图表D里的一个箭头, 则有图表欠一张图交换. 我们使用符号{fi:cdi}来表示D的一个锥.

图表D的一个极限是一个D-锥{fi:cdi}, 其满足对于任意其他的D-锥{fi:cdi}, 恰存在唯一的箭头f:cc使得对于D中的每个对象di有图表欠一张图交换.

这个极限锥若存在则被称为具有相对于D-锥的泛性质. 其在这样的锥中是泛的——任何其他的D-锥都可以如上图所示那样通过它进行唯一分解. 图表D的极限在同构下是唯一的: 如果

第3.12节 余等化子

第3.13节 拉回

一对具有共同陪域的C-箭头afcgb的一个拉回(pullback)C中图表欠一张图的一个极限.

第3.14节 推出

第3.15节 完备性

第3.16节 指数

第4章 介绍topos

第4.1节 子对象

第4.2节 对于子对象进行分类

第4.3节 topos的定义

第4.4节 最初的一些例子

第5章 topos结构: 最初的几步

第6章 古典逻辑 (logic classically conceived)

简要解释什么是逻辑并不简单, 甚至可能并不有用.
——E. J. Lemmon

第6.1节 topos逻辑的动机

在任何对于集合论的系统性建立过程之中, 最初要被检视的主题之一即是所谓的类的代数(algebra of classes).

第7章 子对象代数

既然新的范式是从旧的范式中诞生的, 它们通常会融入诸多旧范式之前所采用的术语和机制, 不论是概念性的还是操作性的. 不过, 它们很少以传统的方式来运用这些借来的元素.
——Thomas Kuhn

第7.1节 补, 交, 并

第8章 直觉主义及其逻辑

让那些我之后的人思考为什么我建立这些心智构造以及它们如何可以在某种哲学中得到解释; 我满足于建立它们, 以着其在某种意义上将会有助于澄清人类思想的信念.
——L. E. J. Brouwer

第8.1节 构造主义哲学

在Newton和Leibnitz于17世纪末发现微积分之后相当长的一段时间里, 人们对其基本概念存在争议和分歧. 无穷小量的概念以及无穷序列的极限仍笼罩在神秘之中, 其中一些表述在今天看来也颇为奇异 (例如J. Bernoulli所说的无穷小地增加或者减少的量既未增加也未减少). 这一学科在19世纪才获得了严格的基础, 最初是通过Cauchy对极限与收敛概念给出精确定义来实现的. 此后, Weierstrass等人推进了分析的算术化, 给出了实数系统的纯代数处理. 其重要后果之一是, 分析学开始与其物理直觉的根基相分离 (参见Weierstrass关于(反直觉的?)连续但处处不可微函数存在性的证明). 这一点, 连同非欧几何的发展等其他因素, 共同促成了人们认识到: 数学结构具有一种抽象的概念实在性, 完全独立于物理世界之外.

同样重要的是这一时期Dedekind和Peano在数系方面的工作. 实数由有理数构造而来, 有理数由整数构造而来, 整数则由自然数构造而来. 而后, Peano公理对自然数本身的性质给出了抽象的刻画. 这种归约方式推动了一种思想的发展, 即整个数学可以被纳入一个宏大的公理体系之中, 而该体系本身建立在少数几个基本概念和原理之上. 这一构想此后始终是数学基础研究的核心. 它在Frege和Russell的逻辑主义论题中达到了极端的形式——数学是逻辑的一部分, 数学真理可以从纯粹的逻辑原理中推导出来. 这一构想也体现在Hilbert的工作中, 他试图将数学公理化, 并用有穷方法证明这些公理的一致性.

当Cantor登上历史舞台时, 人们已经认识到涉及无穷的表述, 例如n趋于无穷时, 序列n2也趋于无穷, 可以视为关于实数性质的精确但复杂的命题的形象化表述 (对于所有的ε, 存在一个δ..., 诸如此类). Cantor的集合论超越了这一点, 将实无穷作为数学研究的对象加以处理. 无穷集合成为一种自成存在, 可以作为某个其他集合的元素. 数的概念通过建立超限基数和序数的理论而从有穷延伸到了无穷, 其算术涉及对无穷集合的运算. Cantor的态度是: 只要命题在语法上正确, 演绎在逻辑上可靠 (sound), 这样的命题就具有概念上的意义, 即便它们超越了我们关于有穷数与有穷集合的基本直觉.

集合论取得了巨大的成功, 但也并非没有批评者. Leopold Kronecker以上帝创造了整数, 其余一切皆是人的工作这句名言而广为人知, 他拒绝承认无穷集合与无理数的概念, 认为它们是神秘主义的, 而非数学的. 他坚持认为, 一个理论在逻辑上的正确性并不意味着它所声称描述的那些实体的存在性. 除非这些实体能够被实际地构造出来, 否则它们就毫无意义. Kronecker说, 数及其运算必须具有直觉的基础. 定义和证明必须在相当字面的意义上是构造性的. 定义必须明确地展示如何利用已知存在的对象来构造所定义的对象. 在古典数学中, 存在性证明往往通过证明某类实体不存在的假设会导致矛盾来进行. 而从构造主义的立场来看, 这根本不是存在性证明, 因为合法的存在性证明必须明确地展示出所讨论的那个具体对象. Kronecker相信自然数可以被给予这样一种基础, 但实数则不然. 他实际上曾试图从这一立场出发重写数学的某些部分.

将事物视为由已知实体建造而成的这一观念, 也体现在Henri Poincaré对集合论悖论的回应之中. 他认为矛盾的根源在于使用了非直谓(impredicative)定义. 这类定义是循环和自指的, 对于其描述一个对象X所需要引用的集合, 这些集合自身的存在性都依赖于X的存在性. Poincaré坚持认为此类定义是不可接受的, 一个集合在其每个元素被刻画之前是无法被刻画的. 因此, Russell悖论 (第1.1节) 一半的问题在于需要表明(是否)RR. 以这种观点, 那么R的定义是循环性的, 因为其只能在R已经被定义的情况下才能给出. 这样一来Russell类R甚至无法作为合法的研究对象出现. 实际上将会消失的东西远不止于此, 因为实数系统的古典分析的很大一部分都依赖于非直谓定义.

构造主义态度在Kronecker和Poincaré的观点中均有所体现, 而其最为激进的表达则见于直觉主义哲学——这一哲学由荷兰数学家L. E. J. Brouwer于本世纪初所开创. Brouwer拒绝非构造性论证, 也拒绝将无穷集合视为自成存在的观念. 但他更进一步, 否认传统逻辑是数学推理的有效表示. 我们已经指出, 所谓的反证法 (α为真是因为否则会推出矛盾) 在存在性证明中从构造主义角度来看是不可接受的. 但是对于Brouwer而言, 其压根就不是一条可以接受的论证原理. 他对于排中律αα的态度也是一样的.

第8.2节 Heyting的演算

第8.3节 Heyting代数

第8.4节 Kripke语义

第9章 函子

首先应该观察到整个范畴的概念本质上是辅助性的; 我们的基本概念本质上是关于函子和自然变换的.
——S. Eilenberg和S. MacLane

第9.1节 函子的概念

一个函子是一个从某个范畴到另一个范畴的变换, 其保持它的源头的范畴结构. 正如范畴论的创立者的引言所指出的, 函子的概念恰恰是范畴论的本质. 原初的视角已经发生了某种意义上的改变, 因而至少在本书中函子并不比范畴本身更加重要. 诚然如此, topos作为数学基础的可行性很大程度上建立在其可以不用诉诸于函子而定义. 然而, 我们现在也已经到了无法忽略函子的阶段了. 函子提供了描述topos和Kripke模型之间以及topos和集合论模型之间的关系的必要语言.

从范畴C到范畴D的一个函子F是一个函数, 其赋

  1. 每个C-对象a以一个D-对象F(a);
  2. 每个C-箭头f:ab以一个D-箭头F(f):F(a)F(b).
其满足
  1. 对于所有的C-对象a, F(1a)=1F(a), 即函子赋a上的恒等箭头以F(a)上的恒等箭头;
  2. F(gf)=F(g)F(f), 只要gf有定义.

这最后一个条件所陈述的是两个箭头的复合的F-像是其F-像的复合, 即每当欠一张图C中交换 (h=gf), 就有欠一张图D中交换. 我们记F:CD或者CFD以指示F是一个从CD的函子. 既已有了函子的定义, 简而言之, 函子就是保持dom, cod, 恒等箭头, 以及复合的变换. {译注: 换言之, 就是函子与这些操作在某种意义上都是交换的, 例如F(dom(f))=dom(F(f))F(cod(f))=cod(F(f)).}

例子1.
例子2.
例子3.
例子4.

第9.2节 自然变换

第9.3节 函子范畴