Testing, Credible Compilation, and Verification in the Axon Verified Compiler in Lean and Claude Code
Massachusetts Institute of Technology(麻省理工学院);National University of Singapore(新加坡国立大学)
本文探讨了Axon编译器中测试、可信编译验证、验证及审计的应用,通过Lean和Claude代码实现的全机检查证明保证生成代码的正确性,无需审计。
2026-08-03 cs.PL
RustCompCert: A Verified and Verifying Compiler for a Sequential Subset of Rust
Shanghai Jiao Tong University(上海交通大学);University of Minnesota(明尼苏达大学)
RustCompCert是一个基于CompCert开发的经过验证的Rust编译器,提供语义保持和内存安全保证,简化了Rust程序的验证过程。
2026-02-07 cs.PL
Formally Verified Native Code Generation in an Effectful JIT -- or: Turning the CompCert Backend into a Formally Verified JIT Compiler
现代即时编译器(或JIT)通常交错使用几种机制来执行程序。为了更快的启动时间和观察执行的初始行为,最初可以使用解释。但是过了一段时间,JIT会动态地为它们经常执行的程序部分生成本机代码。尽管动态编译花费了一些时间,但这种机制使得程序执行的剩余时间更快。这样的编译器是具有各种组件的复杂软件,并且在很大程度上依赖于正在执行的不同语言之间的精确相互作用,包括栈上替换。像CompCert这样的传统静态编译器已经在证明助手中实现了机械化,但是JIT到目前为止几乎没有正式化,部分原因是它们的不纯性质和它们的众多组件。这项工作提出了一个模型JIT与动态生成的本地代码,实现和正式验证Coq。虽然JIT的某些部分不能用Coq编写,但我们提出了一种证明方法来界定,指定和推理JIT的不纯影响。我们认为,正式验证一个完整的JIT的艰巨任务应该利用现有的本地代码生成的证据。为此,我们的工作成功地重用CompCert及其正确性证明在动态编译。最后,我们的原型可以提取和执行。
2022-12-06 cs.PL
Machine-Generated, Machine-Checked Proofs for a Verified Compiler (Experience Report)
National Technical University of Athens(雅典国立技术大学)
利用机器学习模型生成并验证编译器正确性证明,通过模板技术实现ANF转换的语义保持性证明,耗时96小时完成,展示了机器辅助证明的潜力与局限。
2026-02-23 cs.PL
CertiQ: A Mostly-automated Verification of a Realistic Quantum Compiler
我们提出了CertiQ,一个验证框架,用于编写和验证Qiskit,最广泛使用的量子编译器的编译器通行证。据我们所知,CertiQ是第一个以最自动化的方式验证真实世界量子编译器通过的努力。在CertiQ接口中编写的带有注释的验证器通道可用于生成验证条件,以及可集成到Qiskit中的可执行代码。CertiQ引入了量子电路演算,通过将这种检查过程编码到SMT问题中来实现量子线路的等效性的有效检查。CertiQ还提供了一个经过验证的广泛使用的数据结构库、电路转换函数以及不同量子数据表示的转换函数。这个经过验证的库不仅可以进行模块化验证,而且还可以为未来的量子编译器设计提供指导。我们已经在CertiQ中重新实现并验证了26个(共30个)Qiskit编译器通道,在此期间,在Qiskit实现中检测到三个错误。我们验证的编译器通过实现通过了所有Qiskit的回归测试,没有显示出明显的性能损失。
2020-11-26 cs.ET cs.PL quant-ph
A Verified Compiler for Quantum Simulation
针对现有哈密顿量模拟编译器缺乏形式化保证的问题,提出基于二次量子化的高层验证框架QBlue,含类型系统并支持数字/模拟电路编译,在Rocq中完全机械化,实现端到端验证。
2025-09-26 cs.PL quant-ph
A Linear First-Order Functional Intermediate Language for Verified Compilers
我们提出了线性一阶中间语言IL验证编译器。IL是一种函数式语言,可以调用非确定性环境。我们给IL条款的第二个,命令式语义解释,并获得一个寄存器转移语言。对于命令式解释,我们建立了活变量的概念。基于活变量,我们制定了一个可判定的属性称为一致性,确保功能和命令的解释一个术语相吻合。我们制定了一个寄存器分配算法的IL,并证明其正确性。该算法将一个函数式IL程序转换为一个等价的命令式IL程序。正确性来自于这样一个事实,即算法在一致地重命名局部变量后达到了一个连贯的程序。我们证明了初始程序中的最大活变量数限制了最终相干程序中不同变量的数量。整个开发都在Coq中正式化。
2015-06-04 cs.PL
Quantitative Comparison of Credible Compilation and Verification In Coding Agent Compiler Development
National University of Singapore(新加坡国立大学);Massachusetts Institute of Technology(麻省理工学院)
本文通过首个由人类监督的验证编译器,比较了可信编译与验证两种编译验证方法的效率,发现验证需要更多开发工作量,且验证优化选择更不高效的算法,证书检查时间占主导。
2026-05-09 cs.PL
Simple, Light, Yet Formally Verified, Global Common Subexpression Elimination and Loop-Invariant Code Motion
我们提出了一种方法,通过组合展开通道和正式认证但有效的全局子表达式消除来实现正式认证的循环不变代码运动优化。这种方法是轻量级的:每一遍都有一个简单而独立的正确性证明。实验表明,该方法显着缩小了CompCert认证编译器和国家之间的性能差距。艺术优化编译器。我们的静态分析采用了一个有效的,但验证哈希集结构,导致快速编译。
2021-05-04 cs.PL
Fully Composable and Adequate Verified Compilation with Direct Refinements between Open Modules (Technical Report)
提出一种基于CompCert内存模型和带内存保护的Kripke关系的开放模块可信组合编译方法,实现直接精化,支持完整编译链的端到端验证,降低验证复杂度。
2023-11-18 cs.PL
A Higher-Order Abstract Syntax Approach to the Verified Compilation of Functional Programs
我们认为,功能性程序设计语言的编译器的实现和验证大大简化了采用高阶表示的语法称为高阶抽象语法或HOAS。HOAS的基本思想是使用一种元语言,它为绑定相关概念提供内置的逻辑处理。通过将元语言嵌入到更大的编程或推理框架中,可以将对象语言中的绑定结构的处理吸收到系统的元理论中,从而大大简化整体实现和推理过程。我们在这篇论文中提出并证明了上述论点的有效性的方法来验证执行的编译器转换的函数程序,利用HOAS。在这种方法中,函数程序的转换首先以基于规则的关系规范的形式表达。这些规范被渲染成语言lambda Prolog的程序。一方面,这些程序直接作为实现。另一方面,它们可以用作Abella系统的输入,该系统允许我们证明关于它们的属性,从而证明关于实现的属性。lambda Prolog和Abella都支持使用HOAS方法。因此,它们构成了一个框架,可用于在验证编译中测试HOAS方法的好处。我们用它们来实现和验证一个编译器的代表性的功能程序设计语言,体现了许多编译器的核心,这些语言的转换。在这两个编程和推理阶段,我们展示了如何使用的HOAS方法显着简化了绑定结构的表示,操作,分析和推理。
2017-02-11 cs.LO cs.PL
Pyrosome: Verified Compilation for Modular Metatheory
Pyrosome 是一个 Coq 实现的模块化元理论框架,通过归纳等价保持实现可扩展的验证编译,支持特性扩展和编译器垂直组合,并展示了从 System F 到 CPS 及闭包转换的多遍编译案例。
2025-07-08 cs.PL
Verified Self-Explaining Computation
常见的编程工具,如编译器,调试器和IDE,主要依赖于分析程序代码的能力,以推断其行为和属性。在验证编译器和静态分析方面已经做了大量的工作,但是在验证诸如程序切片之类的动态分析方面的工作却少得多。最近,一个新的数学框架切片介绍,其中向前和向后切片是双重的意义上说,他们构成了伽罗瓦连接。本文形式化了一种简单命令式程序设计语言的前向和后向动态切片算法,并使用Coq证明助手形式化地验证了它们的对偶性。
2019-07-12 cs.PL
Verified Secure Compilation for Mixed-Sensitivity Concurrent Programs
该研究使用Isabelle/HOL验证了一个单遍编译器能够保持混合敏感并发程序的非干扰性,通过引入分解原则简化安全精化证明,并在真实用例上自动保留安全属性。
2022-02-28 cs.CR cs.LO cs.PL
Tenspiler: A Verified Lifting-Based Compiler for Tensor Operations (Extended Version)
针对张量处理基础设施遗留代码迁移成本高的问题,提出基于提升的验证编译器Tenspiler,通过中间语言TensIR将通用语言顺序程序转为张量运算,支持多后端,实现显著性能提升。
2024-12-14 cs.PL
Coqlex: Generating Formally Verified Lexers
Coqlex 是一个类似 OCamllex 的生成器,用于生成带有 Coq 正确性证明的词法分析器,采用 Brzozowski 导数实现,兼顾简单性与性能,比 Verbatim++ 快两个数量级,并在工业 Ada 项目中验证了其实用性。
2023-06-21 cs.PL
Let it Flow: A Formally Verified Compilation Framework for Asynchronous Dataflow
Carnegie Mellon University(卡内基梅隆大学);University of Maryland, College Park(马里兰大学帕克分校)
该研究提出首个异步数据流编译器的形式化验证框架Wavelet,通过带围栏的能力类型系统等技术,验证编译器核心 passes 并证明相关属性,编译的数据流图规模与未经验证编译器相当。
2026-08-07 cs.LO cs.PL
Introducing Certified Compilation in Education by a Functional Language Approach
在计算机科学课程中,通常会有关于编译器技术的课程,内容涉及语法分析、语义分析、中间转换和目标代码生成等方面。本文介绍了通过函数语言的方法,在介绍过程中的编译器建设认证编译技术。针对在形式方法方面经验很少或没有经验的学生,证明过程使用Why3框架高度自动化。底层逻辑,语义建模和证明,连同练习和作业,导致了一个简单的命令式语言的正式验证编译器。本文涵盖了动机,课程设计,工具的选择,和教学方法,以及评价和建议的改进,从学生和教师的角度。
2019-06-27 cs.LO cs.PL
Mechanized semantics for the Clight subset of the C language
本文介绍了C语言的一个大子集Clight的形式语义。Clight包括指针算术、“struct”和“union”类型、C循环和结构化“switch”语句。Clight是CompCert验证编译器的源语言。Clight的形式语义是一个大步骤的操作语义,它观察终止和发散执行,并产生输入/输出事件的跟踪。Clight的形式语义是使用Coq证明助手机械化的。除了Clight的语义之外,本文还描述了它在CompCert验证编译器中的集成以及验证语义的几种方法。
2009-01-23 cs.PL
A Formalization of the Yul Language and Some Verified Yul Code Transformations
本文使用 ACL2 对 Solidity 编译器中间语言 Yul 的语法、语义及代码转换进行形式化,并证明静态与动态语义关系及转换正确性。
2025-07-25 cs.LO cs.PL
End-to-end Compositional Verification of Program Safety through Verified and Verifying Compilation
针对 Rust 等现代安全语言混合安全与不安全模块导致的端到端验证难题,提出基于开放标记迁移系统的开放安全性定义,实现经验证与验证性编译的协同组合,保障异构模块在目标层面的安全性组合验证。
2025-10-11 cs.PL
Formal Verification of a C Value Analysis Based on Abstract Interpretation
基于抽象解释的静态分析器是实现精细算法的复杂软件。即使静态分析技术已经被很好地理解,它们在真实语言上的实现仍然容易出错。本文提出了一个使用Coq证明助手的形式化验证:一个基于抽象解释的价值分析的形式化,以及价值分析的可靠性证明。形式化依赖于泛型接口。机械化的证明是由一个布尔东克莱不动点迭代器的翻译验证。这项工作已被集成到CompCert验证的C编译器。我们的验证分析直接操作的编译器的中间语言具有相同的表达能力为C。我们的价值分析到OCaml的自动提取产生了一个具有竞争力的结果的程序,从实验中获得的一些基准和比较的框架-C工具。
2013-04-12 cs.PL
Compilation as Multi-Language Semantics
该研究提出一种将编译器统一建模为多语言语义中开放项归约系统的方法,以解决现有模型中编译与互操作性建模重复的问题,同时提供语义见解并简化正确性证明。
2025-09-23 cs.PL
The CoCompiler: DSL Lifting via Relational Compilation
本研究提出CoCompiler双向工具,通过关系编译思路改写Vélus编译器,结合规范化处理,实现真实反应式C代码到Lustre DSL的提升,为复用现有编译器构建DSL提升器提供实用基础。
2025-10-28 cs.PL
Foundational Verification of Smart Contracts through Verified Compilation
针对智能合约的高正确性需求,研究提出面向以太坊的DeepSEA基础验证系统,含适配验证的DeepSEA语言与经验证的编译器,可实现端到端验证,并通过DeFi、众筹两个案例验证了可用性。
2024-05-14 cs.PL
Verifying Device Drivers with Pancake
针对设备驱动程序漏洞导致操作系统被攻破的问题,提出命令式语言 Pancake 及其编译器,结合 CakeML 后端与 Viper 前端,成功验证了以太网 NIC 的高性能驱动程序。
2025-05-30 cs.CR cs.OS cs.PL
Verified Reversible Programming for Verified Lossless Compression
University of Amsterdam(阿姆斯特丹大学)
无损压缩实现通常包含两个程序,编码器和解码器,它们需要彼此相反。我们观察到,一类重要的基于非对称数字系统(ANS)的压缩方法在编码器和解码器之间具有共享结构--解码器程序是编码器程序的“反向”--允许两者同时指定由单个可逆函数。为了利用这一点,我们实现了一个嵌入在Agda中的小型可逆语言,我们称之为“Flipper”(可在https://github.com/j-towns/flipper获得)。Agda支持程序属性的形式化验证,并且我们的可逆语言的编译器(作为Agda宏实现)不仅产生一个编码器/解码器对函数,而且还证明它们彼此是逆的。因此,语言的用户可以“免费”获得形式化验证。我们在本文中给出了Flipper的一个小示例用例,并计划很快发布一个完整的压缩实现。
2022-11-23 cs.AI cs.IT cs.PL
Deriving Probability Density Functions from Probabilistic Functional Programs
Georgia Institute of Technology(佐治亚理工学院);Uppsala University(乌普萨拉大学);Microsoft Research(微软研究院);University of Edinburgh(爱丁堡大学)
概率分布的概率密度函数是概率论中的基本概念,也是各种广泛使用的机器学习方法中的关键成分。然而,必要的框架编译概率函数程序密度函数最近才被开发出来。在这项工作中,我们提出了一个密度编译器的概率语言故障和离散和连续分布,并提供了一个证明其可靠性。编译器大大减少了领域专家的开发工作,我们证明了解决推理问题,从各种科学应用,如建模全球碳循环,使用标准的马尔可夫链蒙特卡罗框架。
2017-06-29 cs.AI cs.PL
Dandelion: Certified Approximations of Elementary Functions
像sin和exp这样的初等函数运算一般不能在今天的数字计算机上精确计算,因此必须近似计算。库函数中的标准近似通常只提供有限的精度集,并且对于许多应用程序来说效率太低。为有限的输入域和输出精度定制的多项式近似可以提供卓越的性能。事实上,Remez算法计算给定多项式次数的最佳可能近似,但迄今为止尚未得到正式验证。本文介绍了Daneclit,一个自动证书检查器的多项式近似的基本函数计算与Remez类算法,充分验证了HOL4定理证明。Danvet检查多项式近似与其目标参考初等函数之间的差异是否保持低于给定约束中所有输入的给定误差范围。通过使用CakeML编译器提取经过验证的二进制文件,Danvet可以在合理的时间内验证证书,完全自动化以前的手动验证近似值。
2022-04-29 cs.PL
Translating Canonical SQL to Imperative Code in Coq
SQL是迄今为止使用和实现最广泛的查询语言。然而,在一些关键特性上,比如相关查询和空值语义,许多实现存在分歧或包含错误。我们利用SQL和查询编译器的形式化的最新进展来开发DBCert,这是第一个从以规范形式编写的SQL查询到命令式代码的机械验证编译器。构建DBCert需要几个新的贡献,本文对此进行了描述。首先,我们指定和机械化一个完整的转换,从SQL到嵌套关系代数,可用于查询优化。其次,我们定义了Imp,这是一种足以表达SQL的小型命令式语言,可以针对包括JavaScript在内的几种执行语言。最后,我们开发了一个机械化的翻译从嵌套关系代数Imp,使用嵌套的关系演算作为中间步骤。
2022-03-22 cs.DB cs.PL
Verified Code Transpilation with LLMs
提出基于 LLM 的验证式提升方法 LLMLift,利用 LLM 推理和生成等价性证明实现代码转译,在四种 DSL 上优于符号工具且构建成本更低。
2024-06-05 cs.PL
VERT: Verified Equivalent Rust Transpilation with Large Language Models as Few-Shot Learners
VERT 结合 Web Assembly 编译器生成的 oracle 与 LLM 候选,通过迭代验证生成可读且形式化正确的 Rust 转译,显著提升属性测试和模型检查通过率。
2024-05-25 cs.PL cs.SE
Verified Compilation of Quantum Oracles
量子算法通常在经典数据的量子叠加上应用经典操作,如算术或谓词检查;这些所谓的预言通常是量子程序的最大组件。为了简化高效、正确的Oracle函数的构造,本文提出了VQO,一个使用Coq证明助手实现的高保证框架。VQO的核心是Oracle量子汇编语言OQASM。OQASM操作通过量子傅立叶变换在两个不同的基之间移动量子位,因此允许重要的优化,但不会引起纠缠和随之而来的指数爆破。OQASM的设计使我们能够证明正确的VQO编译器-从一个简单的命令式语言OQIMP到OQASM,从OQASM到SQIR,一种通用的量子汇编语言--并允许我们使用QuickChick基于属性的测试框架有效地测试OQASM程序的属性。我们已经使用VQO实现了各种算术和几何运算符,这些运算符是重要预言机的构建块,包括Shor和Grover算法中使用的运算符。我们发现,VQO的基于QFT的算术神谕需要更少的量子位,有时甚至比使用“经典”门构建的更少; VQO的后者版本仍然与Quipper(一个最先进但未经验证的量子编程平台)生产的神谕相当或更好(在量子位和门数方面)。
2022-04-20 cs.PL quant-ph
CryptOpt: Verified Compilation with Randomized Program Search for Cryptographic Primitives (full version)
提出首个密码学编译流水线 CryptOpt,结合随机化汇编程序搜索与基于 Fiat Cryptography 框架的形式化验证,生成显著快于 GCC/Clang 且经 Coq 证明的汇编代码,创下了 Curve25519 和 secp256k1 有限域算术的最快实现纪录。
2023-05-22 cs.CR cs.NE cs.PL