Pragmatics of Formally Verified Yet Efficient Static Analysis, in particular for Formally Verified Compilers
本文针对形式化验证编译器所需的静态分析,探讨其正确性证明与效能平衡的难点、解决方案、设计选择及树/映射/集合形式分析结果的相关权衡。
2024-07-11 cs.LO cs.PL
The Trusted Computing Base of the CompCert Verified Compiler
CompCert是第一个现实的正式验证编译器:它提供了一个机器检查的数学证明,证明它生成的代码与源代码匹配。然而,这种做法可能存在漏洞。我们全面分析了CompCert的错误可能导致生成错误代码的方面。可能的问题包括从源语言和目标语言的建模到用于从编译器内部调用外部算法的某些技术。
2022-10-10 cs.LO cs.PL
Verified VCG and Verified Compiler for Dafny
ETH Zurich Switzerland;Chalmers University of Technology\ of Gothenburg Sweden;Institute for Infocomm Research (I 2 R), A STAR Singapore;Nanyang Technological University Singapore;ETH Zurich;Chalmers University of Technology\ of Gothenburg;Institute for Infocomm Research (I 2 R), A STAR;Nanyang Technological University
本文提出通过形式化方法验证Dafny语言的VCG和编译器,确保程序的正确性并生成可执行代码。
2025-12-04 cs.LO cs.PL
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
Memory Simulations, Security and Optimization in a Verified Compiler
针对编译器安全特性与优化需跨内存布局模拟原程序的问题,本文通过内存扩展、注入及未定义值细节,在CompCert验证编译器中实现并证明了两项安全特性和一项尾递归消除优化的正确性。
2023-12-13 cs.LO cs.PL
A Verified Compiler for Probability Density Functions
Bhat等人开发了一个归纳编译器,它可以用简单的概率函数语言计算概率空间的密度函数。在这项工作中,我们实现了这样一个编译器的修改后的版本,这种语言的定理证明器伊莎贝尔,并给出了一个正式的证明其可靠性w.r.t.源语言和目标语言的语义。与Isabelle的归纳谓词代码生成一起,这产生了一个完全验证的、可执行的密度编译器。使用标准的精化方法,证明分两步完成:首先,定义一个抽象编译器,使用直接在定理证明器的逻辑中建模的抽象函数,并证明其正确性。然后,这个编译器被细化为返回目标语言表达式的具体版本。
2017-07-21 cs.LO cs.PL math.PR
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
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
A Verified Compiler for Quantum Simulation
针对现有哈密顿量模拟编译器缺乏形式化保证的问题,提出基于二次量子化的高层验证框架QBlue,含类型系统并支持数字/模拟电路编译,在Rocq中完全机械化,实现端到端验证。
2025-09-26 cs.PL quant-ph
Separation Logic for Small-step Cminor
Cminor是一种中级命令式程序设计语言;从C到Cminor以及从Cminor到机器语言都有被证明是正确的优化编译器。我们重新设计了Cminor,使其适合霍尔逻辑推理,并且我们为Cminor设计了一个分离逻辑。在本文中,我们给出了一个小步骤的语义(而不是大步骤的证明正确的编译器),这是出于需要支持未来的并发扩展。我们详细介绍了我们的分离逻辑的可靠性的机器检查证明。这是分离逻辑w.r.t.的第一个大规模机器检验证明。一个小步骤的语义。本文的工作已在Coq证明助手中实现。这是迈向并发Cminor程序可以使用分离逻辑进行验证的环境的第一步,也可以通过具有正式端到端正确性保证的证明正确的编译器进行编译。
2007-07-30 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
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
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 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
Program Analysis with Prophecy and History Variables in the Nexis Compiler
National University of Singapore(新加坡国立大学);Massachusetts Institute of Technology(麻省理工学院)
研究提出用预言变量解决程序分析问题,通过特定语言指定变量,紧密耦合变量规范与操作语义,消除传统机制。给出预言和历史变量的验证实现,证明经典转换的正确性和最优性,是首批此类机器检查证明。
2026-07-28 cs.PL
Formal Verification of a C Value Analysis Based on Abstract Interpretation
基于抽象解释的静态分析器是实现精细算法的复杂软件。即使静态分析技术已经被很好地理解,它们在真实语言上的实现仍然容易出错。本文提出了一个使用Coq证明助手的形式化验证:一个基于抽象解释的价值分析的形式化,以及价值分析的可靠性证明。形式化依赖于泛型接口。机械化的证明是由一个布尔东克莱不动点迭代器的翻译验证。这项工作已被集成到CompCert验证的C编译器。我们的验证分析直接操作的编译器的中间语言具有相同的表达能力为C。我们的价值分析到OCaml的自动提取产生了一个具有竞争力的结果的程序,从实验中获得的一些基准和比较的框架-C工具。
2013-04-12 cs.PL
Verified Secure Compilation for Mixed-Sensitivity Concurrent Programs
该研究使用Isabelle/HOL验证了一个单遍编译器能够保持混合敏感并发程序的非干扰性,通过引入分解原则简化安全精化证明,并在真实用例上自动保留安全属性。
2022-02-28 cs.CR cs.LO cs.PL
Foundational Refinement Proofs for EVM Bytecode, at the Price of Tokens
Argot Collective;National Technical University of Athens(雅典国立技术大学)
该研究构建了Lean框架EquiVM,利用前沿LLM以代币为代价,为EVM上23个真实合约生成了可复现的基础精化机器证明,实现了此前技术未达的特性组合,重塑验证框架架构。
2026-10-21 cs.PL
Verified Purely Functional Catenable Real-Time Deques
Inria Paris(巴黎国家数字研究院);Tarides(塔里德斯);Université Paris-Saclay, CNRS, ENS Paris-Saclay, Inria, LMF(巴黎萨克雷大学、法国国家科学研究中心、巴黎高等师范学院、国家数字研究院、LMF)
介绍了Kaplan和Tarjan纯函数式实时可连接双端队列的OCaml及Rocq实现,Rocq代码正确性经机器检查。
2026-11-05 cs.DS cs.LO 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
A Verified Information-Flow Architecture
SAFE是高度安全的计算机系统的全新设计,具有用于跟踪和限制信息流的普遍机制。在最低级别,SAFE硬件支持细粒度的可编程标记,在执行指令时具有有效和灵活的标记传播和组合。操作系统将这些通用设施虚拟化,以呈现一个信息流抽象机,该信息流抽象机允许用户程序使用丰富的机密性策略来标记敏感数据。我们提出了一个正式的,机器检查模型的关键硬件和软件机制,用于动态控制信息流的安全和端到端的证明,该模型的非干扰。我们使用一个改进的证明方法来传播的抽象机器的不干扰属性到具体的机器级别。我们使用一个中间层的细化链,因素的信息流控制策略的细节,并设计一个代码生成器编译成低级别的监控代码的信息流策略。最后,我们使用一个专用的霍尔逻辑,从低级别的机器指令抽象成一组可重用的验证结构化代码生成器验证此生成器的正确性。
2016-03-06 cs.PL
SECOMP: Formally Secure Compilation of Compartmentalized C Programs
本文提出SECOMP编译器,首次为主流语言C证明类似完全抽象的安全编译准则,将未定义行为限制在遭攻陷的分区内,并通过扩展CompCert及证明工程创新实现形式化安全编译。
2025-01-01 cs.CR cs.PL
A Formalization of the Yul Language and Some Verified Yul Code Transformations
本文使用 ACL2 对 Solidity 编译器中间语言 Yul 的语法、语义及代码转换进行形式化,并证明静态与动态语义关系及转换正确性。
2025-07-25 cs.LO cs.PL
An Infrastructure for Faithful Execution of Remote Attestation Protocols
远程证明是在远程计算系统中建立信任的新兴技术。Copland是一种特定于领域的语言,用于指定分层证明协议,描述与证明相关的系统事件,并描述证据捆绑。在这项工作中,我们正式定义和验证的Copland的虚拟机执行Copland协议。编译器将Copland转换为在虚拟机上执行的指令。编译器和虚拟机实现为一元,功能程序的Coq证明助手和验证相对于科普兰事件和证据语义。此外,我们介绍了证明经理Monad作为一个环境,用于管理Copland长期执行提供支持管理nonce,约束结果的Copland协议的变量,并评估证据结果。
2020-12-18 cs.CR cs.LO cs.PL
Towards a Scalable Proof Engine: A Performant Prototype Rewriting Primitive for Coq
针对系统规模与复杂度增长下的验证规模化难题,提出研究高性能证明引擎的议程,开发了基于反射证明的Coq重写原型模块,经Fiat Cryptography验证使提取的编译器提速约1000倍且证明更简洁,为规模化验证奠基。
2024-08-14 cs.PL
Generating Correctness Proofs with Neural Networks
基础验证允许程序员构建软件,这些软件已被经验证明在各种重要领域具有高水平的保证。然而,对大多数项目来说,生产经过基础验证的软件的成本仍然高得令人望而却步,因为它需要训练有素的专家进行大量的手工工作。在本文中,我们提出了Proverbot 9001,证明搜索系统使用机器学习技术,以产生软件的正确性证明,在交互式定理证明。我们展示了Proverbot9001的证明义务,从一个大型的实际证明项目,CompCert验证的C编译器,并表明它可以有效地自动化什么是以前的手动证明,自动生成证明27.5%的定理语句在我们的测试数据集,结合基于求解器的工具。没有任何额外的求解器,我们展示了一个证明完成率,这是一个4倍的改进,比现有的最先进的机器学习模型在Coq中生成证明。
2020-05-28 cs.PL
Formally Verified Patent Analysis via Dependent Type Theory: Machine-Checkable Certificates from a Hybrid AI + Lean 4 Pipeline
Ascendr, Inc.(Ascendr公司)
本文提出一种混合AI与Lean 4的正式验证框架,用于专利分析。通过依赖类型理论,实现了专利自由实施、权利主张敏感性、交叉权利主张一致性等五种知识产权应用场景的正式化验证,利用Lean 4进行机器验证,确保计算的数学正确性。
2026-04-20 cs.AI cs.LO cs.PL
QED at Large: A Survey of Engineering of Formally Verified Software
开发程序正确性的形式化证明可以增加实际和感知的可靠性,并有助于更好地理解程序规范及其基本假设。支持这种发展的工具已有40多年的历史,但直到最近才得到广泛的实际使用。基于机器检查的形式化证明的构建的项目现在达到了前所未有的规模,可以与大型软件项目相媲美,这导致了证明开发和维护的新挑战。尽管其日益重要,证明工程领域很少考虑自己的权利;相关的理论,技术和工具跨越许多领域和场所。这篇文献综述对程序正确性的证明工程有了全面的了解,包括在实践中的影响、基础、证明自动化、证明组织和实际证明开发。
2020-03-13 cs.LO cs.PL
Verification of a Generational Garbage Collector
Princeton University(普林斯顿大学);Shanghai Qi Zhi Institute(上海智源人工智能研究院);Heriot-Watt University(赫瑞-瓦特大学)
本文在Rocq+VST中形式化验证了一个支持可变引用、兼容OCaml数据类型的C语言多代垃圾收集器,其模块化API规范独立于实现细节,并通过验证客户端程序证明了规范的充分性。
2026-09-15 cs.PL
Automatically Building Machine-Checked Assurance Cases from C Codebases to Requirements
Zhejiang University(浙江大学);University of Oxford(牛津大学);The Chinese University of Hong Kong(香港中文大学);Xidian University(西安电子科技大学)
本文提出CCV框架,利用LLM辅助构建机器检查的保证案例,通过接口协议和模块化证明验证C代码库满足需求,在六个基准上验证299个函数,人工工作量低。
2026-10-01 cs.PL cs.SE
Towards a Coq-verified Chain of Esterel Semantics
本文利用 Coq 构建并验证 Esterel 的形式语义链,提出去除 Must/Can 势函数对的微步语义,并证明其对 CSS 的精化以及 CBS 与 CSS 的等价性。
2025-01-06 cs.FL cs.LO cs.PL
From Rocq to Metal: A Pipeline for Formally Verified Microcontroller Firmware
Ledger;Telecom Paris(巴黎电信学院);Ledger Donjon
本文提出Encore!虚拟机,通过延续传递风格运行Rocq提取的Scheme代码,实现微控制器固件的形式化验证,并利用大语言模型辅助策略合成自动证明固件正确性。
2026-09-22 cs.LO cs.PL cs.SE
Combining Small-Step and Big-Step Semantics to Verify Loop Optimizations
FZI Research Center for Information Technology, Karlsruhe, Germany(德国卡尔斯鲁厄 FZI 信息技术研究中心);University of Tübingen, Tübingen, Germany(德国蒂宾根大学)
本文提出结合小步和大步语义的方法,用于验证循环优化,通过引入抽象行为语义实现结构变换与局部变换的统一,提升编译器验证的表达能力。
2026-02-23 cs.LO cs.PL
Formally verified asymptotic consensus in robust networks
该研究首次使用Coq证明助手完成了W-MSR渐近共识算法的形式化验证,明确了弹性渐近共识的充要条件,修正了纸面证明的多处不严谨问题。
2024-01-31 cs.PL math.OC
Vero: Can AI Agents Build Formally Verified Software Repositories?
University of Chicago(芝加哥大学);California Institute of Technology(加州理工学院);Stanford University(斯坦福大学);UC Berkeley(加州大学伯克利分校);Amazon Web Services(亚马逊云计算服务);Apodex
研究推出首个仓库级验证软件综合基准Vero,含43个多模块实例,评估发现前沿智能体仅解决27个实例,为相关研究提供测试平台。
2026-08-14 cs.AI cs.LG cs.LO