用户: 算,就使劲算/如何把你的类型论变成一个范畴
读者最好了解依赖类型论 (dependent type theory) 和范畴论的基本概念. 没有的话也无妨, 您可以随便逛逛. 我们将始终要求涉及的类型论 是依赖类型论.
1句法范畴
对于一个类型论 , 我们可以纯粹通过 中的语句定义一个范畴. 它的对象是类型论 中的语境 (context):
而态射 则是这两个语境间的 substitution:其中 满足:
恒等态射 是保持所有变量不变的 substitution:
而给定态射 和 :
它们的复合 则是将 用 进行 substitute:
定义 1.1. 这个范畴叫做 的句法范畴 (syntactic category) 1, 记作 .
1. | 又称为 category of contexts. |
注 1.2. 句法范畴中 态射复合的结合律 (也就是 substitution 的结合律) 一般被称为 substitution lemma.
我们用 表示空语境, 也就是不包含任何类型的语境 .
定理 1.3. 空语境 是句法范畴的一个终对象 (terminal object).
注 1.4. 不同的语境在句法范畴中可能是同构的对象. 例如, 任取两个闭类型 和 , 通过交换自由变量我们可以得到一个表现对称性的同构:之后我们会看到更多例子. 这说明句法范畴实际上并不能完全地还原句法.
最后, 任何闭类型 (closed type), 也就是在空语境下合法定义的类型:都可以通过语境 来将其看做是句法范畴中的一个对象. 所有闭类型组成 的一个满子范畴, 记作 .
一般来说, 这是一个真子范畴. 不过之后我们会看到, 如果 包含 类型和 类型的话, 这两个范畴就自然等价了. 按照定义, 空语境到闭类型的态射 实际上就是所谓的闭 term(closed term).
来个简单的例子:
例 1.5. 假设类型论 包含一个自然数对象 . 考虑 中的这两个态射:它们的复合就是 .
预层与 Judgement
对于一个类型论 而言, 句法范畴上的预层范畴 也很重要. 一种简单的说法是, 类型论 中的每一类与 substitution 交换的 judgement 都会对应一个预层 , 并且每一个语境 上的此类 judgement(商去某种自然定义的 judgemental equality 后): 都会精确对应预层上的一个元素: 反之任何预层也可看做是一类关于 的 judgement 类. 而 judgement 类之间的推导规则: 则对应预层之间的自然变换: 从这个角度来说, 可以被视作一种 logical framework, 它提供了描述 的元语言. 而 Yoneda 嵌入则是将语言嵌入元语言的映射. 方便起见, 我们之后不会在记号上区分 和 .
为了进一步阐明这一点, 我们来考虑类型论中两种最基本的 judgement:
对应这两种 judgement, 我们来定义两个预层和它们间的自然变换:
对于任意语境 , 是所有满足 的元素 商去类型间 judgemental equality 后的商集. 相应地, 则是满足 的元素对 商去 judgemental equality 及 后的商集. 可以认为这里的 . 最后我们定义:
预层的函子性来自于这类 judgement 都与 substitution 交换, 也就是对于任意 substitution 和 judgement , 我们有类型论中的规则:
对于任意范畴 , 和预层 , 我们有一个自然的范畴等价 2:
2. | 这里的 指 comma category, 也被记作 . 当 是预层时又被称为 category of elements, 常使用 的记号. |
而经由 , 预层 成为 中的对象, 因此我们也可以视其为 中的对象, 它可以这样表述: 对于任意 , 由 Yoneda 引理, 我们可以将其等同于元素 . 此时一个 的对象可以看做一个元素对 , 其中 , 而 . 那么 在其上的值就是: 也就是满足 的 的集合. 为了方便起见, 接下来我们将不会区分 的这两种形式.
注 1.6. 就像注 1.4 中所指出的, 一类 judgement 所对应的预层实际上无法还原最初的 judgement. 不过当我们试图对句法范畴中的概念作 judgement 的时候, 实际上只需要用到对应的预层. 因此从现在开始, 每当我们作出这样一个 judgement, 我们总是指对应预层中的元素.
例如, 当我们需要这样一个 judgement 时: 我们其实是指一个元素: 在本文中无论多么复杂的 judgement 都可以这样翻译, 但很多时候这需要读者自己完成.
语境扩张
如果在某个 context 下有一个合法类型 , 遵照类型论的基本规则, 我们可以扩充 得到一个更大的 context . 为了标注自由变量的名字, 我们同时也使用 的记法. 在这个新的 context 下, 自由变量 3 是 的合法 term. 此时, 我们会在句法范畴 4 中得到一个交换方块:
在这个方块中, 下方的 对应 judgement:
上方的 称为 generic term, 对应 judgement:
左侧的 5 称为 projection. 它对于任何 substitution 满足 . 由 Yoneda 引理, 这唯一确定了态射 . 其实 满足类似等式 , 这也可作为 的另一种定义.
注 1.7. 态射 总是对应一个自由变量. 因此如果语境清楚, 我们总是可以在没有命名的情况下, 使用 来指代这个类型为 的自由变量. 这是一种局部无名 (locally nameless) 表示法. 更一般的, 如果我们有连续扩张: 那么就有一列态射 (这里 ): 它们分别对应类型为 的自由变量. 这实际上就是 de Brujin index.
3. | 自由变量当然可以任意取名, 而不一定是 . 我们也可以使用注 1.7 中的局部无名表示法. |
4. | 严格来说是在预层范畴 中. 不过方便起见, 我们就不区分这两种说法了. |
5. | 没错, 这和 到 的自然变换重名. 好在这一般不会造成混淆. |
定理 1.8. 这是一个笛卡尔方块.
证明. 我们需要验证拉回的泛性质. 假设有一个交换方块:
这个方块意味着什么? 答案是一个 judgement: 事实上这种方块和这类 judgement 是一一对应的. 现在我们可以构造一个交换图:
这给出了句法范畴上非常重要的附加结构, 称之为语境扩张 (context extension). 一个直接的推论是, 自然变换 其实是所谓的可表变换.
定义 1.9. 给定范畴 , 及其预层范畴 中的自然变换 . 如果对于任何对象 和元素 , 都存在拉回方块:
我们就称自然变换 是可表 (representable) 变换.
推论 1.10. 自然变换 是可表变换.
最后, 如果有两个语境 , 并将 展开成 telescope: 那么我们用 来记如下一系列扩张后的语境:
可表态射
为了方便之后的论证, 我们来定义一个叫做可表态射的概念. 简而言之, 可表态射就是对应语境扩张的态射. 亦或者, 它们是一种性质良好的 fibration.
定义 1.11. 给定一个类型论 , 我们称句法范畴 中形如 的态射为生成可表态射 (generating representable map). 如果一个态射是一系列生成可表态射的复合, 我们称其为可表态射 (representable map). 所有的生成可表态射记作 , 而所有的可表态射记作 .
注 1.12. 换句话说, 可表态射其实就是这种态射:
注 1.13. 生成可表态射 一般也被叫做 display map. 我们使用的术语来自 [1].
我们之后会看到, 如果类型论 包含外延相等类型, 所有的态射都同构于可表态射. 但一般来说, 这是不成立的.
注 1.14. 一个到空语境的态射 是生成可表态射当且仅当 是一个闭类型. 按定义, 所有到空语境的态射都是可表态射.
可表态射的一个重要性质是它们 stable under base change. 这可以从定理 1.8 直接推出.
定义 1.15. 给定范畴 , 和其中的一类态射 . 如果 中态射沿着任意态射的 base change 都存在, 并且 base change 后仍属于 , 那么我们称 是一个稳定类 (stable class).
定理 1.16. 生成可表态射类 与可表态射类 都是稳定类.
笛卡尔积
这一节我们来解释为什么句法范畴总是容许有限乘积 (admits finite products). 首先, 正如我们一开始指出的 (定理 1.3), 空语境 是一个终对象.
引理 1.17. 对于任意语境 , 语境 是它们在句法范畴中的乘积.
对任意范畴 , 其容许有限乘积当且仅当其包含终对象并且容许二元乘积. 我们立即可以由此推出:
定理 1.18. 句法范畴 容许有限乘积.
2 类型
现在假设我们的类型论 包含 类型 (简记作 包含 ). 这意味着我们有如下的规则:
我们可以将这些规则利用预层翻译到句法范畴之上. 为此我们首先定义两个新的预层和它们间的自然变换: 对于任意语境 :
注 2.1. 这里及以后我们都会使用这种类似模式匹配 (pattern matching) 的写法来定义自然变换.
你可以认为 实际上 classify 了一对 judgements6:而在此基础之上 则 classify 了:
注 2.2. 如果我们使用预层范畴的内语言 (internal language), 也就是将其作为一种类型论使用, 那么这里的两个预层可以等价地表述为:而 则是到第一个变量的投影.
接下来, 我们把每个 类型的规则对应到预层之中. 首先 type formation 我们有自然变换:随后 term introduction 也就是 -abstraction 给出一个自然变换:
按定义我们有一个交换方块:
接下来 term elimination 也就是 function application 会给出自然变换:
这里的拉回 取自上面方块的右下角. 而 可以被看作类型为 的自由变量.
6. | 当然这里全部都要商去 judgemental equality. |
定理 2.3. 刚刚的交换方块是一个笛卡尔方块.
Exponential Object
这一小节将解释类型论中的 类型如何给出其句法范畴中可表态射间的 exponential object. 本小节所涉及的类型论 都包含 . 我们从最简单的情形: 一个生成可表态射 开始.
引理 2.4. 存在关于 的自然同构: 这意味着 是 中的一个 exponential object .
给定一个生成可表态射 , 如果我们有另一个可表态射 , 其中:
我们记 为如下语境:
注意到 是可表态射.
引理 2.5. 存在关于 的自然同构:
我们引入一个关于伴随函子的概念:
定义 2.6. 给定一个函子 , 如果对于某个 存在对象 和关于 的自然同构: 我们就称 的右伴随在 处有定义, 其值为 .
将这个同构用两次就可以记得得到如下引理:
引理 2.7. 给定函子 和 , 如果对于 我们有:
1. | 函子 的右伴随在 处有定义, 其值为 ; |
2. | 函子 的右伴随在 处有定义, 其值为 . |
那么函子 的右伴随在 处有定义, 其值为 .
本节的主要定理是:
定理 2.8. 如果类型论 包含 , 那么任意可表态射 所诱导拉回函子 的右伴随在可表态射处有定义, 并且其值仍是可表态射.
注 2.9. 我们一般用 记这个右伴随.
对于任意范畴 和态射类 以及对象 , 我们用 记 内由 中态射所组成的满子范畴.
推论 2.10. 如果类型论 包含 , 那么任意可表态射 诱导的拉回函子 有右伴随.
推论 2.11. 如果类型论 包含 , 那么对于任意语境 , 范畴 是笛卡尔闭范畴 (cartesian closed category).
最后我们引入一个新术语来概括本节的主要内容 (见 [3] 定义 27):
定义 2.12. 给定有终对象的范畴 , 如果一个稳定类 , 满足如下条件:
1. | 任意到终对象的态射都属于 ; |
2. | 类 中的态射在复合下封闭; |
3. | 任意 诱导的拉回函子 在 处有右伴随. |
我们就称 是一个闭类 (closed class).
推论 2.13. 如果类型论 包含 , 那么可表态射类 是闭类.
3外延相等
这一节我们来解释, 为何当你的类型论包含外延相等 (extensional identity) 类型时 (简记作 包含 ), 句法范畴将容许所有的有限极限 (admits finite limits). 首先外延相等的规则是:
我们首先来解释一下这些 jugdements 如何翻译成预层. Type formation 对应如下的自然变换:Term introduction 对应一个交换方块. 这里 是对角映射 , 而 :
我们可以由 equality reflection 推出这是一个笛卡尔方块.
对角映射
外延相等类型和对角映射 (diagonal map) 间有密切的联系.
定理 3.1. 如果类型论 包含 , 那么句法范畴 中有同构 7:
7. | 我们在这里使用了局部无名法, 见注 1.7 |
由此可知 实际上就是对角映射.
可表态射与有限极限
本节的主要定理在此:
定理 3.2. 如果类型论 包含 , 那么句法范畴 中的所有态射都同构于某个可表态射.
证明. 选定一个态射 , 这里我们把语境展开成 telescope:
先构造一个新的语境:
我们有如下 substitution, 它可以使得 成为 中的对象:
使用 equality reflection 可得 , 由此我们可以定义两个 中的态射:
可以验证 和 实际上互为逆映射, 因而 . 再由对称性知在 中有同构:
本小节开头的断言就是一个直接的推论:
推论 3.3. 如果类型论 包含 , 那么句法范畴 容许所有有限极限.
4局部笛卡尔闭范畴
经由之前的讨论, 我们可以立即得到这个众所周知的定理:
定理 4.1. 如果类型论 包含 和 , 那么句法范畴 是局部笛卡尔闭范畴.
注 4.2. 这个定理最初来自于 [2]. 不过我们的版本条件更宽松, 只要求类型论 包含 和 .
5 类型
现在我们假设 包含单位类型, 或者叫 类型 (简记为 包含 ):并且 类型满足 规则:
我们也可以加入 type eliminator rule, 不过这其实是 admissible 的.
这些 judgement 比较容易翻译,type formation 就是空语境下的一个元素:
由于 是终对象, 这等价于预层 的一个整体截面 (global section). Term introduction 也是一个元素:
这也可看成是一个三角形:
而 规则则对应下面的方块总是笛卡尔方块:或者说 关于 的 lifting 存在且唯一.
终对象
定理 5.1. 如果类型论 包含 , 那么 是句法范畴 的一个终对象.
注 5.2. 由终对象的唯一性, 我们知道在句法范畴中空语境同构于 类型:
6 类型
现在我们假设 包含 类型 (简记为 包含 ), 也就是说 有如下规则:
如果我们将这些 judgements 翻译到预层上, 那么 type formation 类似于 类型的情形:
接下来, 我们先定义一个新预层 和一个自然变换 . 对于任意语境 :
注 6.1. 如果我们使用预层范畴的内语言, 那么这里的预层可以等价地表述为:而 则是到第一个变量的投影.
此时 term introduction 对应自然变换:
按定义我们有一个交换方块:
而 类型的 与 规则则对应这个方块是笛卡尔方块.
闭类型范畴
如果 包含 , 那么它句法范畴的结构会大幅简化. 这是因为除了空语境, 所有的 telescope 都会等价于一个单独的闭类型. 方便起见, 我们假设 也包含 , 这样就可以包括所有的情形. 给定一个语境 并将其展开成 telescope: 我们定义 为如下的一系列 类型的组合: 当然特殊情形 需要定义. 对于空语境, 也就是 时, 我们定义: 而 时, 我们则将其定义为对应的闭类型: 实际上 可以看做是 到 的函子. 我们用 记 到 的自然嵌入.
定理 6.2. 如果类型论 包含 和 , 那么 是一个范畴等价. 或者说闭类型范畴等价于整个句法范畴:
注 6.3. 从定理 6.2 可以看出, 即便类型论 不包含 , 它的句法范畴 也会表现得好像包含 类型. 而语境扩张相当于构造 类型. 实际上本文中的许多证明都借助了这一点. 如果 包含 , 这些证明 (起码在记号上) 就可以简化. 读者不妨自己试一试.
同样的构造可以应用到任意语境 下, 从而证明:
定理 6.4. 如果类型论 包含 和 , 那么其句法范畴 中的可表态射等价于生成可表态射:
推论 6.5. 如果类型论 包含 , 和 , 那么其句法范畴 中所有态射都等价于生成可表态射.
推论 6.6. 如果类型论 包含 , , 和 , 那么其闭类型范畴 是局部笛卡尔闭范畴.
7内涵相等
当类型论 不再是外延的 (譬如在同伦类型论的情形下), 而是包含内涵相等 (intensional equality) 类型时 (简记为 包含 ), 其句法范畴的结构会变得更加丰富. 同伦类型论 (homotopy type theory) 就是这样一种情形. 这一节我们就来解释这件事.
内涵相等的规则是:
Judgement 到预层的翻译和外延相等的情形很相似. Type formation 对应如下的自然变换:
Term introduction 对应一个交换方块. 这里 是对角映射 , 而 :
但这个方块不再是笛卡尔方块. 事实上它的笛卡尔性等价于 equality reflection. 内涵相等的 规则对应一个 extension-lifting problem. 对于如下任意交换方块 8, 都存在对角方向的映射使整个图交换:事实上, 左上角三角形的交换性对应 规则, 而右下角三角形的交换性对应 term elimination.
8. | 我们在这里使用了局部无名法, 见注 1.7 |
注 7.1. 我们可以纯粹使用预层表述 规则, 而不用涉及语境扩张. 不过这件事稍微有些复杂, 详情请见 [3].
规则与提升性质
刚刚我们所使用的是双侧对称形式的 规则, 但我们在之后的内容中会用到单侧的 规则. 这两种形式是完全等价的, 一个证明可在 [4] 中找到. 用预层来表述, 单侧 规则就是对于任何 , 如下的提升问题总有解:
方便起见, 我们将使用 来记左侧态射 . 如同可表态射 , 我们可以使用更一般的记号: 这里 满足: 方便起见我们会使用如下简写: 我们称这样形如 的态射为 elementary acyclic cofibration 9. 现在基于单侧 规则的提升性质, 我们可以解决句法范畴中的一整类提升问题:
引理 7.2. 假设类型论 包含 . 给定句法范畴 中的 elementary acyclic cofibration 和可表态射 , 如下的提升问题总有解:
9. | 这是作者为了方便临时起的名字, 并不是标准术语 (似乎本来就没有标准术语). |
弱分解系统
在本小节我们来解释, 当 包含 时, 句法范畴内会自然地形成一个弱分解系统 (见 [5]).
定义 7.3. 给定一个范畴 和其中的两个态射类 . 如果下面两个条件得到满足, 我们就称 为 中的一组弱分解系统 (weak factorization system):
1. | (分解的存在性) 对于任何 中态射 , 都存在 和 使得 : |
2. | (提升性质) 对于任何满足 和 的交换方块, 都存在对角方向态射使得整个图交换: |
在我们将要定义的弱分解系统中, 就是所有的可表态射, 而 则简单粗暴地定义成所有相对于可表态射满足提升性质的态射.
定义 7.4. 给定范畴 和态射类 , 以及一个态射 . 如果对于任意 的 (如下) 方块, 都存在对角方向映射使得整个图交换: 我们就称 满足关于 的左提升性质.
定义 7.5. 假设类型论 包含 , 我们称关于可表态射满足左提升性质的态射为 acyclic cofibration. 全体 acyclic cofibration 构成的态射类记作 .
此时定义 7.3 中的提升性质是平凡的, 我们只需要验证分解的存在性. 实际上我们的证明只涉及 elementary acyclic cofibration. 当然, 我们必须说明 elementary acyclic cofibration 的确是 acyclic cofibration. 这不过就是引理 7.2 换种说法. 我们在此重新叙述一遍:
引理 7.6. 所有的 elementary acyclic cofibration 都是 acyclic cofibration.
本节的主要定理是:
定理 7.7. 如果类型论 包含 , 那么其句法范畴 中的任何态射都可以分解为 elementary acyclic cofibration 和可表态射的复合 10:
10. | 我们这里的说法并不完全正确, 严格来说只是同构于 elementary acyclic cofibration 和可表态射. |
证明. 选定一个态射 , 这里我们把语境展开成 telescope:
先构造一个新的语境:
我们有如下 substitution, 它可以使得 成为 中的对象:
我们可以定义一个 中的态射:
再由对称性知在 中有两个同构:
注 7.8. 这个证明和定理 3.2 的证明非常相似. 我们完全可以认为它们是同一个构造在两种不同相等类型上的应用.
结合引理 7.6 我们就立即可以得到以下推论:
推论 7.9. 如果类型论 包含 , 那么其句法范畴 中的 acyclic cofibration 和可表态射 构成弱分解系统.
最后我们引入一个新术语来概括本节的主要内容 (见 [3] 引理 29 前的定义):
定义 7.10. 给定范畴 和态射类 , 记 为全体关于 满足左提升性质的态射类. 如果 构成一个弱分解系统, 我们就称 是一个分解类 (factorizing class).
推论 7.11. 如果类型论 包含 和 , 那么可表态射类 是分解类.
8内涵类型论
这一节我们来研究内涵类型论 (intensional type theory) 的句法范畴. 首先我们对之前几节的内容做一个简单的概括:
定理 8.1. 如果类型论 包含 和 , 那么可表态射类 是句法范畴 中的稳定闭分解类 (stable, closed and factorizing class).
9范畴语义
什么是范畴语义 (categorical semantics)? 如果用一句话概括, 范畴语义就是把一个类型论中的语句翻译到一个范畴当中去. 当然, 有很多基本问题需要阐明. 事实上, 如何翻译, 翻译到什么样的范畴里, 这些问题截至目前并没有标准答案, 现有的解决方案也不止一种. 在这一节里, 我们选择 category with families(简称为 CwF) 的理论来建立范畴语义.
定理 9.1. 给定一个类型论 , 它的句法范畴 是一个 CwF, 我们称其为项模型 (term model).
定理 9.2. 一个 总是包含 范畴意义下的始对象 (bi-initial object), 这个始对象被称为始模型 (initial model).
猜想 9.3. (Initiality Conjecture) 项模型是始模型.
严格来说, 这并不是一个猜想, 因为它依赖于我们究竟如何定义类型论 , 以及对应的 . 事实上, 在很多的重要的情形下, 它已经被证明了.
参考文献
[1] | Uemura, T. (2019). A General Framework for the Semantics of Type Theory. https://arxiv.org/abs/1904.04097. arXiv. |
[2] | Seely, R. A. G. (1984). Locally cartesian closed categories and type theory. Math. Proc. Cambridge Philos. Soc. 95.1, pp. 33–48. |
[3] | Awodey, S. (2018). Natural models of homotopy type theory. Mathematical Structures in Computer Science 28.2, pp. 241–286. |
[4] | The Univalent Foundations Program (2013). Homotopy Type Theory: Univalent Foundations of Mathematics. http://homotopytypetheory.org/book/. Institute for Advanced Study. |
[5] | Gambino, N., Garner, R. (2008). The identity type weak factorisation system. Theoretical Computer Science 409(1), 94–109. |