编码–解码法
编码–解码法是同伦类型论中的一种证明给定一点的道路空间和其它类型同构的手法.
本文假设读者对同伦类型论相关的概念有基本的了解, 例如道路空间、相等类型及其归纳公理 J 规则、高阶归纳类型等.
1类型论相关背景
我们使用如下辅助定义:
• | 为把一个函数 应用到一条道路上的操作, 在 J 规则中有证明. |
• | , 也是通过 J 规则证明. |
本词条借助较为简单的无交并类型来正式介绍编码–解码法, 然后再引入编码–解码法处理较为复杂的圆周类型的例子.
2例子: 无交并
无交并类型是一个有两个构造子的类型, 这两个构造子满足如下性质:
• | 单射: 由 可以得到 . |
• | 不交: 由 可以得到空类型 . |
现在尝试证明它.
无交并的编码
给定 , 定义:
读者应该能根据上面的定义推断出 . 这就是「编码–解码法」这个名字里的「码」了. 使用模式匹配可以更直观地观察到它的行为:
考虑 和 , 有:
注意我们得到的是一个类型之间的相等关系, 左边是 上的环路空间, 右边是 对应的码. 借助 我们可以得到一个从左到右的函数, 然后再把 喂给它:
上面的这个构造就是无交并类型的编码操作了. 定义:
不难看出:
分别令 或者 就可以分别构造证明前面说的单射和不交两个性质:
• | 的话, 那么 , 所以 的类型也就是 . |
• | 的情况留给读者. |
观察编码操作的类型, 它可以看作是一个参数化的函数, 从 到 . 这个函数的输入是从定点 出发的道路空间, 输出是这个定点周围的「码」. 接下来我们将会定义它的逆, 以证明这个函数是一个同构.
无交并的解码
从编码操作的类型可以很轻易地看出解码操作应有的类型:
我们借助 来定义解码操作.
• | 如果 , 那么参数类型 , 此时返回类型也随之变为 , 通过 即可简单实现这个转换. |
• | 如果 , 那么 , 此时返回类型是什么已经不再重要. |
因此:
编码和解码互逆
接下来我们需要证明编码和解码两个函数互逆. 证明很直接, 其中一个方向是使用 J 公理直接得到结果, 另一个方向是使用模式匹配, 留作习题.
3例子: 圆
圆类型类似的性质如下:
命题 3.1. 任何 都生成自形如 的表达式, 其中 为 或者 . 用构造主义逻辑的话来讲, 就是存在一个整数 使得 和自己相连 次得到的道路等价于 , 其中负数代表反向相连.
我们尝试证明它. 这个证明用到了泛等公理的性质 ( 规则):
其中 是指取出 中对应的函数. 在立方类型论中, 如上性质是类型论中的计算性质.
除此之外, 我们还需要用到整数上由 操作形成的自同构:
圆周的编码
由于圆周的构造子不需要参数, 因此定义「码」如下:
读者应该能推断出 . 不难看出 等价于 , 也就是 . 同样的, 在立方类型论中如上性质由计算即可得到.
用类似的思路可以定义编码操作:
其中 是整数. 不难看出,
圆周的解码
从编码操作的类型可以看出解码操作应该有如下类型:
解码操作需要处理如下两种情况 (第二个情况的类型过于复杂, 第一次阅读推荐跳过):
对于第一个情况, 对于输入的整数 , 我们需要返回「转了 圈」的环路, 因此可以感性地定义如下:
负数的情况也可以使用如下等价的定义:
接下来还需要证明这个操作被「绕着 转一圈」保持. 注意到 的类型为:
按照定义这等于
一番整理后我们可以得到如下等价的命题:
证明思路大致如下:
编解码互逆
思路类似, 但涉及大量技术细节, 因此略过, 但编解码的互逆会给出如下等价:
令 可以得到
换言之, 的环路空间等价于整数.
4参考文献
• | Daniel R. Licata, Michael Shulman (2013). “Calculating the Fundamental Group of the Circle in Homotopy Type Theory”. arXiv: 1301.3443. (doi) (web) |