一句话:提出两个参数化转换演算与可复用元理论,统一渐进类型lambda演算变体并在Agda中机械化。
渐进类型研究产生了多种渐进类型lambda演算(GTLC)及其转换演算的变体,其元理论扩展到类型安全、blame安全、空间消耗和渐进保证,但仅为部分变体证明,且为新变体建立元理论耗时。本文识别共性抽象,提出两个参数化转换演算:一个用于语言规范,一个用于空间高效实现。作者为二者开发可复用元理论,证明上述性质,并实例化到八个转换演算(五个来自文献,三个新提出)。所有定义和定理在Agda中机械化,使用模块参数和依赖记录定义抽象。
Abstract The research on gradual typing has led to many variations on the Gradually Typed Lambda Calculus (GTLC) of Siek & Taha (2006) and its underlying cast calculus. For example, Wadler and Findler (2009) added blame tracking, Siek et al . (2009) investigated alternate cast evaluation strategies, and Herman et al . (2010) replaced casts with coercions for space efficiency. The meta-theory for the GTLC has also expanded beyond type safety to include blame safety (Tobin-Hochstadt & Felleisen, 2006), space consumption (Herman et al ., 2010), and the gradual guarantees (Siek et al ., 2015). These results have been proven for some variations of the GTLC but not others. Furthermore, researchers continue to develop variations on the GTLC, but establishing all of the meta-theory for new variations is time-consuming. This article identifies abstractions that capture similarities between many cast calculi in the form of two parameterized cast calculi, one for the purposes of language specification and the other to guide space-efficient implementations. The article then develops reusable meta-theory for these two calculi, proving type safety, blame safety, the gradual guarantees, and space consumption. Finally, the article instantiates this meta-theory for eight cast calculi including five from the literature and three new calculi. All of these definitions and theorems, including the two parameterized calculi, the reusable meta-theory, and the eight instantiations, are mechanized in Agda making extensive use of module parameters and dependent records to define the abstractions.
@article{paperbot1236,
title = {Parameterized cast calculi and reusable meta-theory for gradually typed lambda calculi},
author = {JEREMY G. SIEK and TIANYU CHEN},
journal = {Journal of Functional Programming},
volume = {31},
year = {2021},
doi = {10.1017/s0956796821000241}
}