立方类型论
立方类型论是一种同伦类型论的典范 “实现”. 有如下两种方式看待立方类型论:
• |
• | 语法视角: 通过重新定义 Martin-Löf 类型论中的相等类型以将同伦类型论中的公理转化为新的相等类型上的定理. |
1动机
同伦类型论最经典的模型是基于单纯集的, 也就是说将依值类型解释为单纯集, 然后将泛等公理在单纯集中证明出来. 但是在当时, 这个模型的构造需要假设排中律. 具体来说, 需要假定一个单纯形要么是退化的, 要么不是. 不然有许多必须的性质就无法证明. 如果希望将某个模型使用计算机算法实现成编程语言的话, 就不能使用公理, 不能为了解决同伦类型论的泛等公理而引入选择公理或者排中律. 而使用方形的模型没有这些困难, 由此启发了立方类型论的设计. (后来对相关的构造和证明进行改进, 去除了排中律与选择公理的使用, 并且也有工作提出了单形类型论的概念.)
在类型论中, 方形的表示非常方便: 如果某方形上的值类型都是 那么它可以表示为如下函数:
使用逻辑的语言的话, 可以写作
将 这样的变量替换为 的过程就是退化映射, 而在语境里加入新的变量就是面映射.
2内容
道路类型
立方类型论的基本思想是引入一个类比标准区间拓扑空间的底层构造 , 用这个类型来定义道路空间的类型, 并且用这个类型代替相等类型. 比如类型 上的道路空间就是 , 而 之间的道路 就是函数 使得 . 这本质上是相等类型变成了某种特殊的函数类型, 因此相等类型可以像函数一样通过 符号被构造、被传递参数来应用.
相等类型的构造规则, 也就是自反性可以直接定义为常函数.
用这种方式可以轻易地证明函数外延性.
证明. 令 , 定义
其中
但这样定义的话还需要处理 J 公理, 也就是相等类型的消去规则. 立方类型论引入了转换规则和复合来解决这个问题.
Kan 结构
立方类型论给每个类型的形成规则加入了如下操作:
该操作对于每个类型的形成规则都必须定义, 此处只给出函数类型的例子:
其中
除此之外, 若 那么转换操作直接返回参数. 换言之,
复合
相等类型的 操作并不能像函数类型那样直接通过类型论现有的规则处理. 考虑如下表达式:
根据 的类型化简得到
类型 虽说看起来像是一条 到 的道路, 但如果把 看作以 为方向的道路的话, 这个表达式整体就可以看作一个方块了:
而 是每个形成规则都必须给出的操作, 此时没有任何类型规则可以构造出上面的方形. 立方类型论引入了方形的复合操作来解决这个问题.
(..)
正则性
参见: Andrew Swan 问题
根据以上定义, 可将 J 公理定义为:
(..)
但 J 公理的计算规则并不成立: 对于根据自反性得到的相等证明, 对它使用 J 公理会触发化简. 在立方类型论中, 没有任何一条规则可以给出这样的化简, J 公理的计算规则只能被作为一个定理证明出来, 而不是一个类型论内置的规则. 内置形式的计算规则在立方类型论中叫做正则性, 在 [Angiuli 2019] 的第 3.4 节中给出了一个反例.
宇宙
宇宙作为定义泛等公理不可或缺的类型, 必然也要支持复合. 待复合的宇宙本身也是一种类型, 它必须要有构造规则和消去规则.
V 类型
在以上框架下, 直接将泛等公理作为一种新的类型加入类型论即可.
(..)
3开放问题
以下问题在立方类型论中尚未解决:
• | 尚未存在高性能的编程语言实现. |
• |
4参考文献
• | Carlo Angiuli (2019). “Computational semantics of Cartesian cubical type theory”. |
术语翻译
立方类型论 • 英文 cubical type theory
转换规则 • 英文 coercion rules
复合 • 英文 homogeneous composition
正则性 • 英文 regularity