paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Intrinsically-typed definitional interpreters à la carte

内在类型化的定义式解释器 à la carte
OOPSLA 6(OOPSLA2)2022匹配度 2/10 · 论文属于程序语言理论中的机械化验证方向(内在类型化解释器、语言片段复用),与用户的四个核心问题(PL→AI 静态分析、AI→PL 形式化验证、浮点程序分析、贝叶斯程序分析)均无直接交集,且不涉及 LLM/Agent、浮点或概率/贝叶斯分析。仅在'兼具理论形式化与工程实现'这一偏好上略有呼应,但研究目标本身不在用户方向上。引用 12 inbox
Cas van der Rest, Casper Bach Poulsen, Arjen Rouvoet, Eelco Visser, Peter Mosses
crossref: 2026-09-10

AI 速览

一句话:提出基于内在类型化解释器的语言片段抽象,以低代码量实现类型安全语言组件的模块化机械验证。

机械验证类型安全编程语言需要大量规约工作;现有模块化验证方法虽可复用预验证组件,却往往比单体定义多出数倍规约代码,难以开发和理解。本文提出基于内在类型化定义式解释器的替代方案,通过将类型信息内置于解释器语法中,降低模块化规约的规模与复杂度。作者进一步引入“语言片段”(language fragments)抽象,用于安全构造式地规约和组合预验证的类型安全语言组件,使组件像单体内在类型化解释器一样简洁易写,同时代码量约为此前模块化类型安全机械验证方法的十分之一。

问题
如何降低机械验证类型安全语言所需的规约工作量,并支持预验证、可复用语言组件的模块化组合。
方法
采用内在类型化定义式解释器,并引入 language fragments 抽象来安全构造和组合预验证的类型安全语言组件。
评估
通过实现与案例展示,比较语言片段规约与既有模块化机械验证方法的代码规模,显示约少 10 倍代码。
原文摘要(Abstract)

Specifying and mechanically verifying type safe programming languages requires significant effort. This effort can in theory be reduced by defining and reusing pre-verified, modular components. In practice, however, existing approaches to modular mechanical verification require many times as much specification code as plain, monolithic definitions. This makes it hard to develop new reusable components, and makes existing component specifications hard to grasp. We present an alternative approach based on intrinsically-typed interpreters, which reduces the size and complexity of modular specifications as compared to existing approaches. Furthermore, we introduce a new abstraction for safe-by-construction specification and composition of pre-verified type safe language components: language fragments . Language fragments are about as concise and easy to develop as plain, monolithic intrinsically-typed interpreters, but require about 10 times less code than previous approaches to modular mechanical verification of type safety.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot1427,
  title = {Intrinsically-typed definitional interpreters à la carte},
  author = {Cas van der Rest and Casper Bach Poulsen and Arjen Rouvoet and Eelco Visser and Peter Mosses},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {6},
  number = {OOPSLA2},
  year = {2022},
  doi = {10.1145/3563355}
}