一句话:提出带宇宙与擦除的分级模态依赖类型理论,并在 Agda 中形式化,证明元理论性质与擦除提取的可靠性。
本文提出分级模态依赖类型理论,用偏序半环中的 grade 追踪变量在项与类型中的使用,支持把函数参数标为可擦除。理论含 Π、弱/强 Σ、自然数、空类型与宇宙,并扩展单位与分级 Σ。作者在 Agda 中完整形式化,核心采用句法 Kripke 逻辑关系,证明主体归约、一致性、规范化与定义等价可判定,以及 grade 替换和归约下 grade 保持。还定义到无类型 λ 演算的提取,删除可擦除内容,并对某类模态证明自然数程序提取前后值相同;当上下文变量可擦除且一致、弱 Σ 不允许擦除匹配时,开放程序也成立。
We present a graded modal type theory, a dependent type theory with grades that can be used to enforce various properties of the code. The theory has Π-types, weak and strong Σ-types, natural numbers, an empty type, and a universe, and we also extend the theory with a unit type and graded Σ-types. The theory is parameterized by a modality, a kind of partially ordered semiring, whose elements (grades) are used to track the usage of variables in terms and types. Different modalities are possible. We focus mainly on quantitative properties, in particular erasure: with the erasure modality one can mark function arguments as erasable. The theory is fully formalized in Agda. The formalization, which uses a syntactic Kripke logical relation at its core and is based on earlier work, establishes major meta-theoretic properties such as subject reduction, consistency, normalization, and decidability of definitional equality. We also prove a substitution theorem for grade assignment, and preservation of grades under reduction. Furthermore we study an extraction function that translates terms to an untyped λ-calculus and removes erasable content, in particular function arguments with the “erasable” grade. For a certain class of modalities we prove that extraction is sound, in the sense that programs of natural number type have the same value before and after extraction. Soundness of extraction holds also for open programs, as long as all variables in the context are erasable, the context is consistent, and erased matches are not allowed for weak Σ-types.
@article{paperbot1912,
title = {A Graded Modal Dependent Type Theory with a Universe and Erasure, Formalized},
author = {Andreas Abel and Nils Anders Danielsson and Oskar Eriksson},
journal = {Proceedings of the ACM on Programming Languages},
volume = {7},
number = {ICFP},
year = {2023},
doi = {10.1145/3607862}
}