依赖类型理论中正则树的机械化理论
1. 引言
无限树在编程语言或进程代数的语义形式化中具有重要作用。例如,在命令式编程语言里,无限树可用于为 while 循环赋予语义,将循环解释为潜在的无限展开;同时,它也能对发散或永不停歇的计算进行建模。从更抽象的层面看,无限树可用于模拟循环结构,像循环列表、循环二叉树、函数式编程代数中的等递归类型或带标签的转换系统等都存在这样的循环结构。
在实际应用中,许多无限树是有限定义的,这意味着它们由有限的循环结构生成,从而具有规则性,比如有限分支树的无限路径最终是周期性的。
余归纳类型为定义和推理这些无限对象提供了自然的框架。然而,在基于依赖类型理论的证明辅助工具(如 Coq 或 Agda)中,余归纳类型的支持不如归纳类型成熟,仍处于积极的研究阶段。因此,在这些证明辅助工具中使用余归纳类型进行推理有时颇具挑战性,尤其是当余归纳与归纳混合使用时。
本文的动机是在证明辅助工具 Coq 中提供一种关于正则树(无限树的一个子集)的机械化理论。这个库既可以在 Coq 中作为正则余归纳类型的实现,也可以通过提取在 Coq 之外使用,因为整个开发过程是构造性且无公理的。
2. 正则树
2.1 签名和树
为了抽象地对树进行推理,引入了签名(ranked alphabet)的概念,树的类型由此推导得出:
record Sig : U
constructor −◁−
Op :⟩U
Dec-Op : ∀(o1 o2 : Op), Dec (o1 = o2)
Ar : Op →N
第一个字段 Op </
超级会员免费看
订阅专栏 解锁全文
580

被折叠的 条评论
为什么被折叠?



