QUICK REVIEW
[论文解读] Generic Description of Well-Scoped, Well-Typed Syntaxes
Gergő Érdi|ArXiv.org|Mar 31, 2018
Logic, programming, and type systems参考文献 15被引用 3
一句话总结
本文提出了一种通用框架,使用依赖类型语言中的类型论域(universe)内描述来描述良好作用域、良好类型的语法结构,从而实现类型泛型编程。该框架在单一可重用的 Agda 库中实现了所有此类语言的类型保持重命名与替换操作,并附带形式化证明,为具有绑定结构的多种类型语言提供了‘一次且永远’的解决方案。
ABSTRACT
We adapt the technique of type-generic programming via descriptions pointing into a universe to the domain of typed languages with binders and variables, implementing a notion of "syntax-generic programming" in a dependently typed programming language. We present an Agda library implementation of type-preserving renaming and substitution (including proofs about their behaviour) "once and for all" over all applicable languages using our technique.
研究动机与目标
- 解决在具有绑定结构的不同类型语言中重复实现类型保持操作(如重命名与替换)的问题。
- 提供一个通用、可重用的框架,统一适用于依赖类型环境中所有良好作用域、良好类型的语法结构。
- 一次性形式化并验证重命名与替换操作的正确性,且独立于任何特定语言。
- 证明类型论域中的描述能够有效编码具有变量作用域与类型安全性的类型语法结构。
- 通过单一统一基础,实现语言特定组件的系统化、模块化构建。
提出的方法
- 使用类型论域中的描述来以类型泛型方式表示具有绑定结构的语法树。
- 在描述框架中直接编码良好作用域与良好类型约束,以构造方式确保类型安全。
- 使用依赖类型在基于描述的语法上定义通用操作——重命名与替换。
- 利用 Agda 的依赖类型系统证明重命名与替换操作保持类型与作用域条件。
- 利用 Agda 对归纳家族与依赖模式匹配的支持,实现构造方式的正确性保证。
- 通过将框架参数化于语言语法与类型规则的描述,抽象出语言特定的语法细节。
实验结果
研究问题
- RQ1是否能通过单一通用框架,描述具有绑定结构的多种类型语言中的良好作用域、良好类型语法?
- RQ2如何在所有此类语言中泛型化实现类型保持的重命名与替换操作,并附带形式化证明?
- RQ3类型论域中的描述在多大程度上能够捕捉具有变量与绑定结构的类型语言的结构与类型约束?
- RQ4是否能够一次性证明重命名与替换的正确性,而非针对每种语言分别证明?
- RQ5依赖类型在实现此类通用、正确性由构造保证的实现中起到何种作用?
主要发现
- 该框架成功使用类型论域内的描述编码了良好作用域、良好类型的语法结构,通过构造方式确保类型安全。
- 重命名与替换操作在所有支持的语言中实现了泛型化,且其类型保持与作用域保持行为均附有完整形式化证明。
- Agda 库表明,这些操作可一次性定义,并在多个语言中重复使用,无需重新实现。
- 使用描述支持了一种模块化且可扩展的语言描述方法,将语法结构与类型约束分离。
- 该方法通过抽象语言特定细节,减少了语言实现中的样板代码与易错代码。
- 该框架为构建具有绑定结构的类型语言提供了系统化、可重用且形式化验证的基础。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。