整数 (同伦类型论)

约定. 在本文中,

类型论以至于同伦类型论中, 有非常多不同的方法定义整数的类型, 例如可以从集合的角度出发, 也可以通过整数的代数性质出发.

1借助自然数定义

整数可以看作自然数的简单拓展, 也就是用某种方法给自然数加入负数得到的数学对象. 于是在类型论中, 借助自然数类型, 可以给出几种整数的定义.

作为归纳类型

简单类型论中, 整数可以定义为归纳类型:

定义 1.1. 整数类型 是由如下构造子生成的归纳类型:

代表整数 ,

, 对于 , 代表整数 ,

, 对于 , 代表整数 .

但这个类型由定义直接得到的性质很难用——作为归纳类型, 它每次模式匹配都需要考虑三个情况. 例如乘法分配律的证明需要处理特别多的情况 [Nuo 2014].

商掉零的符号

1.1 中, 构造子不是直接构造正整数和负整数, 而是构造出加一或者减一过后的整数, 这是为了确保 没有符号.

同伦类型论或者其它支持某种高阶归纳类型的类型论中, 可以允许 同时存在, 但用高阶构造子将两者变得等价.

定义 1.2. 整数类型 是由如下构造子生成的归纳类型:

, 对于 , 代表整数 ,

, 对于 , 代表整数 .

.

使用减法

同伦类型论或者其它支持某种高阶归纳类型的类型论中, 整数可以直接定义为自然数相减的结果, 商去 这个关系.

定义 1.3. 整数类型 是由如下构造子生成的高阶归纳类型:

, 其中 对应整数 ,

.

2修改自然数定义

实质上, 从自然数到整数, 无非是让取后继的操作 变得可逆, 换言之它成为一个等价 (类型论). 换言之, 用假想的构造子 代替原来的 就可以了. 此时我们是在修改自然数的定义, 不再需要用到自然数类型.

为了将这个假想的构造子化为现实, 可以采用多种方法.

展开等价的定义

在同伦类型论中, 所谓 , 就是说存在一函数 , 满足命题 . 关于这个命题的细节可参见等价 (类型论). 由于后者有多种定义, 我们任选其中一种 (双可逆等价) 展开, 变成如下数据:

,

,

,

,

.

定义 2.1. 整数类型 是由如下构造子生成的高阶归纳类型:

一般构造子:

,

,

,

.

高阶构造子:

,

.

构造: 根据等价的定义, 可以由这些构造子直接得到 的证明.

解构: 每当我们消去如上类型时, 本质上需要对 的处理, 对 的处理, 以及对 的各个组件的处理.

因此, 可以看作是由 这三个符号生成的归纳类型, 这符合我们对整数的想象.

使用圆周的环路空间

由于整数类型对应圆周环路空间, 这启发了如下定义.

定义 2.2. 定义归纳族 , 由如下构造子生成:

整数类型 定义为 .

该定义直接对应编码–解码法中圆周的道路空间的 “码”.

接下来的定义需要用到等量代换的函数, 在 J 公理中给出定义:

定义 2.3 (前驱和后继). 整数的 分别定义如下:

接下来证明两者互逆.

引理 2.4. 对于任意 , 有

定理 2.5 (前驱和后继互逆). 对于 , 如下类型存在实例 (换言之它们对应的命题存在证明):

证明. 展开定义得到:

2.4 得证.

3性质

定理 3.1.

证明. 参见 [Altenkirch–Scoccola 2020] 的定理 3.2.

定理 3.2. 集合.

由于该类型不是高阶归纳类型, 容易证明它是集合.

推论 3.3. 集合.

是始代数

定义 3.4. 整数代数是三元组 , 其中:

是类型,

.

.

定义 3.5. 整数代数态射 包含函数 , 且满足如下条件:

保持 , 即 ,

保持 , 即 .

定义 3.6. 始整数代数是整数代数 且对于任意其它整数代数 , 它们之间有唯一整数代数态射.

定理 3.7. 是始整数代数.

证明. 参见 [Altenkirch–Scoccola 2020] 的定理 4.4.

4参考文献

Li Nuo (2014). “Quotient Types in Type Theory”. (web)

Thorsten Altenkirch, Luis Scoccola (2020). “The Integers as a Higher Inductive Type”. (web)