一句话:提出首个端到端已验证的位爆破器 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 重写机器化验证。
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.
@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}
}