Beaver: Engineering an Efficient SMT Solver for Bit-Vector Arithmetic

We present the key ideas in the design and implementation of Beaver, an SMT solver for quantifier-free finite-precision bit-vector logic (QF_BV). Beaver uses an eager approach, encoding the original SMT problem into a Boolean satisfiability (SAT) problem using a series of word-level and bit-level transformations. In this paper, we describe the most effective transformations, such as propagating constants and equalities at the word-level, and using and-inverter graph rewriting techniques at the bit-level. We highlight implementation details of these transformations that distinguishes Beaver from other solvers. We present an experimental analysis of the effectiveness of Beaver's techniques on both hardware and software benchmarks with a selection of back-end SAT solvers. Beaver is an open-source tool implemented in Ocaml, usable with any back-end SAT engine, and has a well-documented extensible code base that can be used to experiment with new algorithms and techniques.

[1]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[2]  Niklas Sörensson,et al.  An Extensible SAT-solver , 2003, SAT.

[3]  Joao Marques-Silva,et al.  Theory and Applications of Satisfiability Testing - SAT 2007, 10th International Conference, Lisbon, Portugal, May 28-31, 2007, Proceedings , 2007, SAT.

[4]  David L. Dill,et al.  A Decision Procedure for Bit-Vectors and Arrays , 2007, CAV.

[5]  Z. Hanna,et al.  A Lazy and Layered SMT ( B V ) Solver for Hard Industrial Verification Problems ⋆ , 2007 .

[6]  Cesare Tinelli,et al.  Satisfiability Modulo Theories , 2021, Handbook of Satisfiability.

[7]  Edmund M. Clarke,et al.  Efficient SAT solving for non-clausal formulas using DPLL, graphs, and watched cuts , 2009, 2009 46th ACM/IEEE Design Automation Conference.

[8]  Henry S. Warren,et al.  Hacker's Delight , 2002 .

[9]  Alan J. Hu,et al.  Boosting Verification by Automatic Tuning of Decision Procedures , 2007 .

[10]  Alan Mishchenko,et al.  Applying Logic Synthesis for Speeding Up SAT , 2007, SAT.

[11]  Panagiotis Manolios,et al.  BAT: The Bit-Level Analysis Tool , 2007, CAV.

[12]  Armin Biere,et al.  PicoSAT Essentials , 2008, J. Satisf. Boolean Model. Comput..

[13]  Age , 2000, BMJ : British Medical Journal.

[14]  Adnan Darwiche,et al.  RSat 2.0: SAT Solver Description , 2006 .

[15]  Armin Biere,et al.  Boolector: An Efficient SMT Solver for Bit-Vectors and Arrays , 2009, TACAS.

[16]  Edward McCrorie,et al.  Black , 2011 .

[17]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[18]  Joël Ouaknine,et al.  Deciding Bit-Vector Arithmetic with Abstraction , 2007, TACAS.