一句话:提出通用框架 Punk,系统探索渐进索引归纳类型的设计空间,统一 eager/lazy cast 归约语义并给出良行为判据。
索引归纳类型在依赖类型编程中不可或缺,可用于精确表达数据结构与性质。渐进类型能平滑整合静态与动态检查,但将索引归纳类型渐进化仍鲜有研究:内涵类型论中索引归纳类型的标准编码(如类型级不动点或子集类型)在渐进特性下会失效,既有渐进依赖类型工作也只覆盖特定实例。本文提出通用框架 Punk,用于探索渐进索引归纳类型的设计空间。Punk 关注 cast 与归纳消去子交互产生的 eager 与 lazy cast 归约语义,使二者可在同一系统中共存互操作;并提出良好行为渐进索引归纳类型的判据,系统应对集成挑战,为渐进定理证明与渐进依赖类型编程提供洞见与基础。
Indexed inductive types are essential in dependently-typed programming languages, enabling precise and expressive specifications of data structures and properties. Recognizing that programming and proving with dependent types could benefit from the smooth integration of static and dynamic checking that gradual typing offers, recent efforts have studied gradual dependent types. Gradualizing indexed inductive types however remains mostly unexplored: the standard encodings of indexed inductive types in intensional type theory, e.g., using type-level fixpoints or subset types, break in the presence of gradual features; and previous work on gradual dependent types focus on very specific instances of indexed inductive types. This paper contributes a general framework, named P unk , specifically designed for exploring the design space of gradual indexed inductive types. P unk is a versatile framework, enabling the exploration of the space between eager and lazy cast reduction semantics that arise from the interaction between casts and the inductive eliminator, allowing them to coexist and interoperate in a single system. Our work provides significant insights into the intersection of dependent types and gradual typing, by proposing a criteria for well-behaved gradual indexed inductive types, systematically addressing the outlined challenges of integrating these types. The contributions of this paper are a step forward in the quest for making gradual theorem proving and gradual dependently-typed programming a reality.
@article{MalewskiMTT24,
title = {Gradual Indexed Inductive Types},
author = {Mara Malewski and Kenji Maillard and Nicolas Tabareau and Éric Tanter},
journal = {Proceedings of the ACM on Programming Languages},
volume = {8},
number = {ICFP},
year = {2024},
doi = {10.1145/3674644}
}