整数 (同伦类型论)
约定. 在本文中,
- 类型 会记作 .
在类型论以至于同伦类型论中, 有非常多不同的方法定义整数的类型, 例如可以从集合的角度出发, 也可以通过整数的代数性质出发.
1借助自然数定义
整数可以看作自然数的简单拓展, 也就是用某种方法给自然数加入负数得到的数学对象. 于是在类型论中, 借助自然数类型, 可以给出几种整数的定义.
作为归纳类型
定义 1.1. 整数类型 是由如下构造子生成的归纳类型:
• | 代表整数 , |
• | , 对于 , 代表整数 , |
• | , 对于 , 代表整数 . |
但这个类型由定义直接得到的性质很难用——作为归纳类型, 它每次模式匹配都需要考虑三个情况. 例如乘法分配律的证明需要处理特别多的情况 [Nuo 2014].
商掉零的符号
在 1.1 中, 构造子不是直接构造正整数和负整数, 而是构造出加一或者减一过后的整数, 这是为了确保 没有符号.
在同伦类型论或者其它支持某种高阶归纳类型的类型论中, 可以允许 和 同时存在, 但用高阶构造子将两者变得等价.
定义 1.2. 整数类型 是由如下构造子生成的归纳类型:
• | , 对于 , 代表整数 , |
• | , 对于 , 代表整数 . |
• | . |
使用减法
在同伦类型论或者其它支持某种高阶归纳类型的类型论中, 整数可以直接定义为自然数相减的结果, 商去 这个关系.
定义 1.3. 整数类型 是由如下构造子生成的高阶归纳类型:
• | , 其中 对应整数 , |
• | . |
2修改自然数定义
实质上, 从自然数到整数, 无非是让取后继的操作 变得可逆, 换言之它成为一个等价 (类型论). 换言之, 用假想的构造子 代替原来的 就可以了. 此时我们是在修改自然数的定义, 不再需要用到自然数类型.
为了将这个假想的构造子化为现实, 可以采用多种方法.
展开等价的定义
在同伦类型论中, 所谓 , 就是说存在一函数 , 满足命题 . 关于这个命题的细节可参见等价 (类型论). 由于后者有多种定义, 我们任选其中一种 (双可逆等价) 展开, 变成如下数据:
• | , |
• | , |
• | , |
• | , |
• | . |
定义 2.1. 整数类型 是由如下构造子生成的高阶归纳类型:
• | 一般构造子:
| ||||||||
• | 高阶构造子:
|
• | 构造: 根据等价的定义, 可以由这些构造子直接得到 的证明. |
• | 解构: 每当我们消去如上类型时, 本质上需要对 的处理, 对 的处理, 以及对 的各个组件的处理. |
因此, 可以看作是由 这三个符号生成的归纳类型, 这符合我们对整数的想象.
使用圆周的环路空间
该定义直接对应编码–解码法中圆周的道路空间的 “码”.
接下来的定义需要用到等量代换的函数, 在 J 公理中给出定义:
定义 2.3 (前驱和后继). 整数的 和 分别定义如下:
接下来证明两者互逆.
引理 2.4. 对于任意 , 有
定理 2.5 (前驱和后继互逆). 对于 , 如下类型存在实例 (换言之它们对应的命题存在证明):
3性质
定理 3.1.
定理 3.2. 是集合.
推论 3.3. 是集合.
是始代数
定义 3.4. 整数代数是三元组 , 其中:
• | 是类型, |
• | . |
令 .
定义 3.5. 整数代数态射 包含函数 , 且满足如下条件:
• | 保持 , 即 , |
• | 保持 , 即 . |
定义 3.6. 始整数代数是整数代数 且对于任意其它整数代数 , 它们之间有唯一整数代数态射.
定理 3.7. 是始整数代数.
4参考文献
• | Li Nuo (2014). “Quotient Types in Type Theory”. (web) |
• | Thorsten Altenkirch, Luis Scoccola (2020). “The Integers as a Higher Inductive Type”. (web) |