paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Interactive Bitvector Reasoning using Verified Bit-Blasting

基于已验证位爆破的交互式位向量推理
OOPSLA 9(OOPSLA2)2025匹配度 3/10 · 该论文属于形式化验证/交互式定理证明领域,其位向量推理基础设施虽与程序验证相关,但并未涉及 LLM/Agent 改进形式化验证,也不直接针对静态分析、浮点程序分析或贝叶斯程序分析。与用户画像中“AI→PL”或“PL→AI”的核心交叉点仅有非常间接的关联。引用 2 inbox
Henrik Böving, Siddharth Bhat, Luisa Cicolini, Alex Keizer, Léon Frenot, Abdalrhman Mohamed, Léo Stefanesco, Harun Khan, Joshua Clune, Clark Barrett, Tobias Grosser
crossref: 2026-09-10

AI 速览

一句话:提出首个端到端已验证的位爆破器 bv_decide,将高效位向量推理作为 Lean 交互式证明 tactic,并支持反例生成。

交互式定理证明器中的位向量推理长期受限于库不完整、决策过程集成不足、难位爆破操作及宿主语言联动有限。本文提出 bv_decide:首个面向依赖类型 ITP 的端到端已验证位爆破器,其证明仅信任 Lean 编译器与内核,并以 tactic 提供交互式推理。作者用 Lean 的 FBIP 高效编码 AIG 等结构,将 UInt/SInt 建立于位向量类型,支持 enum/struct lowering,并实现覆盖 SMT-LIB 2.7(含溢出建模)的位向量库与位宽无关自动化。评估显示,bv_decide 在完整 SMT-LIB 数据集上比 CoqQFBV 解出更多定理,并验证了从 LLVM 抽取的 7000 多条 SMT 语句,是迄今最大规模的 LLVM 重写机器化验证。

问题
在交互式定理证明器(ITP)中,位向量推理因缺少完整库、决策过程集成不足、难位爆破操作和宿主语言联动有限而难以支撑机器化证明。
方法
提出 bv_decide:首个面向依赖类型 ITP 的端到端已验证位爆破器;以 Lean tactic 形式交互式使用,利用 FBIP 高效编码 AIG 等结构,将 UInt/SInt 基于位向量类型并支持 enum/struct lowering,同时实现覆盖 SMT-LIB 2.7 的规范化位向量库。
评估
在完整 SMT-LIB 等基准上与 CoqQFBV 比较,bv_decide 解出更多定理,并验证从 LLVM 抽取的 7000 多条 SMT 语句,构成迄今最大规模的 LLVM 重写机器化验证。
原文摘要(Abstract)

Bit-blasting SMT solvers enable efficient automatic reasoning about bitvectors, which are fundamental for the verification of compiler backends, cryptographic algorithms, hardware designs and other soft- or hardware tasks. Despite the clear demand for efficient bitvector reasoning infrastructure and the impressive advancements in state-of-the-art bit-blasting SMT solvers such as Bitwuzla, effective bitvector reasoning within interactive theorem provers (ITPs) remains a challenge, hindering their use for mechanized proofs. Incomplete bitvector libraries, unavailable or only partially integrated decision procedures, complex and hard-to-bitblast operations, and limited integration with the host language prevent the wide adoption of bitvector reasoning in proving contexts. We introduce bv_decide : the first end-to-end verified bitblaster designed for interactive bitvector reasoning in a dependently-typed ITP . Our verified bitblaster is scalable, comes with a complete end-to-end proof (trusting only the Lean compiler and kernel), and is available as a proof tactic that allows interactive reasoning right from within a programming language, in our case Lean. We use Lean’s Functional But In-Place (FBIP) paradigm to efficiently encode our core data structures (e.g., AIGs), demonstrating that fast execution of an SMT solver need not come at the expense of rigorous formalization. We enable dependable interactive verification of user-written-code by basing Lean’s C-Style standard dataypes UInt/SInt on our bitvector type, adding a lowering from enums and structs to bitvectors to enable transparent bit-blasting support for composed types, and by offering an interactive tactic that either solves a goal or provides a counter-example. Moreover, we present the design of Lean’s canonical bitvector library, which supports all operations (with reasoning principles) for the SMT-LIB 2.7 standard (including overflow modeling), is fast-to-execute, and offers a comprehensive API and automation for bit-width-independent reasoning. We thoroughly evaluate our bit-blaster on a comprehensive set of benchmarks, including the full SMT-LIB dataset, where bv_decide solves more theorems than the state-of-the-art in verified bit-blasting, CoqQFBV. We also verify over 7000 SMT statements extracted from LLVM, providing the largest mechanized verification of LLVM rewrites to date, to our knowledge. By making bit-blasting bitvector reasoning a polished, well-supported, and interactive feature of modern ITPs, we enable effective, dependable white-box reasoning for bitvector-level verification.

链接与引用

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

BibTeX
@article{paperbot2900,
  title = {Interactive Bitvector Reasoning using Verified Bit-Blasting},
  author = {Henrik Böving and Siddharth Bhat and Luisa Cicolini and Alex Keizer and Léon Frenot and Abdalrhman Mohamed and Léo Stefanesco and Harun Khan and Joshua Clune and Clark Barrett and Tobias Grosser},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {9},
  number = {OOPSLA2},
  year = {2025},
  doi = {10.1145/3763167}
}