一句话:将合流技术推广到带类型转换的依赖类型论,并在 Rocq 中形式化验证类型与转换检查算法的部分正确性。
依赖类型理论的元理论中,合流技术常用于证明实现正确性,但以往多针对无类型转换的理论,难与语义关联。本文把合流推广到带类型转换的丰富依赖类型论:规范含函数类型、宇宙、Nat 与和类型、依赖对、定义性证明无关性及 lift 类型,可模拟 Agda 式弱显式累积性。作者证明该理论的合流定理,并以 observational equality 或 Lean 式非线性计算规则消去器两种方式扩展定义性证明无关等式。借助合流,文章证明类型检查与转换检查算法的部分正确性;规范全标注以衔接语义,算法却处理非标注项,利于实际实现。结果已在 Rocq 中形式化。
In the meta-theoretic study of dependent type theory, confluence techniques are powerful tools for establishing the properties required when proving correctness of implementations. Unfortunately, such techniques have historically mostly been studied for type theories with untyped conversion, which are harder to relate to semantics. In this work, we show how to scale confluence techniques to rich dependent type theories with typed conversion. To do this, we prove a confluence theorem for a theory featuring not only function types (without eta) and universes, but also some inductive types (Nat and sums), dependent pairs (without eta), definitional proof irrelevance and a lift type (with eta), allowing to simulate a weak form of explicit cumulativity (as done in Agda). We then show how to extend our framework with a definitionally proof-irrelevant equality in two ways, either with an observational equality or with an eliminator with a non-linear computation rule (as done in Lean), illustrating the extensibility of our approach. With confluence in hand, we then fulfill our promise of showing (partial) correctness of type- and conversion-checking algorithms. Moreover, while our specification for the type theory is fully annotated, which eases the connection with semantics, we prove correctness of algorithms that operate on usual non-annotated terms, an important optimization for real-life implementations. Finally, our results have been fully formalized in Rocq and can serve as a basis for future type theory formalizations.
@article{FelicissimoW26,
title = {Confluence Techniques for Dependent Type Theory with Typed Conversion},
author = {Thiago Felicissimo and Théo Winterhalter},
journal = {Proceedings of the ACM on Programming Languages},
volume = {10},
number = {ICFP},
year = {2026},
doi = {10.1145/3828691}
}