一句话:提出并实现 McTT,一个在 Rocq 中验证、可提取为 OCaml 的 Martin-Löf 类型论内核。
证明助手及其类型检查内核是复杂软件,可能存在缺陷,因此其可信度至关重要。本文提出 McTT,一个在 Rocq 中构建、面向核心 Martin-Löf 类型论(MLTT)的经过验证的内核基础设施。McTT 包含理论部分和算法部分:前者用无类型域模型规定类型论,并证明规范化、一致性、类型构造子单射性等元定理;后者把声明式类型规则与规范化模型同 Rocq 中的函数式实现关联,并提取 OCaml 代码与前端解析器结合执行。提取代码质量可与熟练程序员所写代码相当,已成功对一系列小规模例子做类型检查。该内核支持完整累积宇宙层级,除词法分析器和美化打印器外,编译流水线每一步均经验证,亦可作为探索高级类型论元理论和内核优化的框架。
Proof assistants based on type theories have been widely successful from verifying safety-critical software to establishing a new standard of rigour by formalizing mathematics. But these proof assistants and even their type-checking kernels are also complex pieces of software, and software invariably has bugs, so why should we trust such proof assistants? In this paper, we describe the McTT (Mechanized Type Theory) infrastructure to build a verified implementation of a kernel for a core Martin-Löf type theory (MLTT). McTT is implementation in Rocq and consists of two main components: In the theoretical component, we specify the type theory and prove theorems such as normalization, consistency and injectivity of type constructors of MLTT using an untyped domain model. In the algorithmic component, we relate the declarative specification of typing and the model of normalization in the theoretical component with a functional implementation within Rocq . From this algorithmic component, we extract an OCaml implementation and couple it with a front-end parser for execution. This extracted OCaml code is comparable to what a skilled human programmer would have written and we have successfully used it to type-check a series of small-scale examples. McTT provides a fully verified kernel for a core MLTT with a full cumulative universe hierarchy. Every step in the compilation pipeline is verified except for the lexer and pretty-printer. As a result, McTT serves both as a framework to explore the meta-theory of advanced type theories and to investigate optimizations of and extensions to the type-checking kernel.
@article{paperbot3030,
title = {McTT: A Verified Kernel for a Proof Assistant},
author = {Junyoung Jang and Antoine Gaulin and Jason Z. S. Hu and Brigitte Pientka},
journal = {Proceedings of the ACM on Programming Languages},
volume = {9},
number = {ICFP},
year = {2025},
doi = {10.1145/3747511}
}