paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Extracting functional programs from Coq, in Coq

在 Coq 中从 Coq 提取函数式程序
JFP vol.322022匹配度 3/10 · 论文研究Coq到函数式语言的认证提取与验证变换,属于形式化验证和程序语言领域,但未涉及LLM/Agent与静态分析/形式化验证的交叉,也未面向ML系统或Agentic程序的分析;与用户核心方向(PL与AI交叉)关联较弱。引用 5 inbox
DANIL ANNENKOV, MIKKEL MILO, JAKOB BOTSCH NIELSEN, BAS SPITTERS
crossref: 2026-09-10

AI 速览

一句话:在 Coq 内构建认证提取管线,将依赖类型程序翻译为多种函数式语言并验证关键变换。

本文解决如何从 Coq 可靠地提取函数式程序到多种目标语言,并尽量缩小可信计算基。作者基于 MetaCoq 的认证擦除,扩展其输出语言加入类型信息,得到中间表示 λ^T_□;围绕该表示实现包含 eta-展开、内联等证明生成式变换以及经验证的未用参数消除优化的完整管线,并针对函数式语言的值调用操作语义证明该优化正确。管线可将优化后的表示 pretty-print 为 Liquidity、CameLIGO、Elm 以及 Rust 子集;在 ConCert 框架中提取了董事会投票和托管两个经验证的真实智能合约,并开发经验证 Web 应用提取为 Elm。可信基仅保留 MetaCoq 与各目标语言 pretty-printer。

问题
如何将 Coq 中经依赖类型验证的程序可靠地提取到多种函数式语言,同时在翻译和优化过程中保持正确性并控制可信计算基。
方法
基于 MetaCoq 认证擦除,扩展带类型信息的中间表示 λ^T_□;以证明生成方式实现 eta-展开、内联和未用参数消除等变换,并证明优化相对于按值调用操作语义正确;再经 pretty-printer 输出到多个目标语言。
评估
在 ConCert 框架中提取董事会投票与托管两个经验证智能合约,并将一个经验证 Web 应用提取为 Elm;目标语言包括 Liquidity、CameLIGO、Elm 和 Rust 子集。
原文摘要(Abstract)

Abstract We implement extraction of Coq programs to functional languages based on MetaCoq’s certified erasure. We extend the MetaCoq erasure output language with typing information and use it as an intermediate representation, which we call ${\lambda^T_\square}$ . We complement the extraction functionality with a full pipeline that includes several standard transformations (e.g. eta-expansion and inlining) implemented in a proof-generating manner along with a verified optimisation pass removing unused arguments. We prove the pass correct wrt. a conventional call-by-value operational semantics of functional languages. From the optimised ${\lambda^T_\square}$ representation, we obtain code in two functional smart contract languages, Liquidity and CameLIGO, the functional language Elm, and a subset of the multi-paradigm language for systems programming Rust. Rust is currently gaining popularity as a language for smart contracts, and we demonstrate how our extraction can be used to extract smart contract code for the Concordium network. The development is done in the context of the ConCert framework that enables smart contract verification. We contribute with two verified real-world smart contracts (boardroom voting and escrow), which we use, among other examples, to exemplify the applicability of the pipeline. In addition, we develop a verified web application and extract it to fully functional Elm code. In total, this gives us a way to write dependently typed programs in Coq, verify, and then extract them to several target languages while retaining a small trusted computing base of only MetaCoq and the pretty-printers into these languages.

链接与引用

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

BibTeX
@article{paperbot1635,
  title = {Extracting functional programs from Coq, in Coq},
  author = {DANIL ANNENKOV and MIKKEL MILO and JAKOB BOTSCH NIELSEN and BAS SPITTERS},
  journal = {Journal of Functional Programming},
  volume = {32},
  year = {2022},
  doi = {10.1017/s0956796822000077}
}