一句话:提出重写类型论 RTT,允许把计算假设写成重写规则并自动用于类型检查,同时保持类型可靠性。
依赖类型语言与证明助手(如 Agda、Coq)在类型检查时依赖计算化简表达式。用户常以公理引入缺失原语或逻辑原则,但公理没有计算行为,只能通过显式等式证明化简,使用不便。外延类型论用 equality reflection 统一计算与相等,却导致类型检查不可判定。本文提出重写类型论 RTT,允许以重写规则添加计算假设;规则自动应用,无需用户干预,且超越内涵类型论的计算能力。为保证类型可靠性与有效类型检查,作者给出模块化、自动检查重写规则合流性的框架,并保证新增规则保持 subject reduction。性质已在 MetaCoq 形式化验证,Agda 已有实现。
Dependently typed programming languages and proof assistants such as Agda and Coq rely on computation to automatically simplify expressions during type checking. To overcome the lack of certain programming primitives or logical principles in those systems, it is common to appeal to axioms to postulate their existence. However, one can only postulate the bare existence of an axiom, not its computational behaviour. Instead, users are forced to postulate equality proofs and appeal to them explicitly to simplify expressions, making axioms dramatically more complicated to work with than built-in primitives. On the other hand, the equality reflection rule from extensional type theory solves these problems by collapsing computation and equality, at the cost of having no practical type checking algorithm. This paper introduces Rewriting Type Theory (RTT), a type theory where it is possible to add computational assumptions in the form of rewrite rules. Rewrite rules go beyond the computational capabilities of intensional type theory, but in contrast to extensional type theory, they are applied automatically so type checking does not require input from the user. To ensure type soundness of RTT—as well as effective type checking—we provide a framework where confluence of user-defined rewrite rules can be checked modularly and automatically, and where adding new rewrite rules is guaranteed to preserve subject reduction. The properties of RTT have been formally verified using the MetaCoq framework and an implementation of rewrite rules is already available in the Agda proof assistant.
@article{paperbot1183,
title = {The taming of the rew: a type theory with computational assumptions},
author = {Jesper Cockx and Nicolas Tabareau and Théo Winterhalter},
journal = {Proceedings of the ACM on Programming Languages},
volume = {5},
number = {POPL},
year = {2021},
doi = {10.1145/3434341}
}