A Tutorial on Satisfiability Modulo Theories

Solvers for satisfiability modulo theories (SMT) check the satisfiability of first-order formulas containing operations from various theories such as the Booleans, bit-vectors, arithmetic, arrays, and recursive datatypes. SMT solvers are extensions of Boolean satisfiability solvers (SAT solvers) that check the satisfiability of formulas built from Boolean variables and operations. SMT solvers have a wide range of applications in hardware and software verification, extended static checking, constraint solving, planning, scheduling, test case generation, and computer security. We briefly survey the theory of SAT and SMT solving, and present some of the key algorithms in the form of pseudocode. This tutorial presentation is primarily directed at those who wish to build satisfiability solvers or to use existing solvers more effectively.

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

[2]  Dexter Kozen,et al.  Complexity of finitely presented algebras , 1977, STOC '77.

[3]  Bruno Dutertre,et al.  A Fast Linear-Arithmetic Solver for DPLL(T) , 2006, CAV.

[4]  Natarajan Shankar,et al.  Justifying Equality , 2005, Electron. Notes Theor. Comput. Sci..

[5]  Hilary Putnam,et al.  A Computing Procedure for Quantification Theory , 1960, JACM.

[6]  Lawrence Ryan Efficient algorithms for clause-learning SAT solvers , 2004 .

[7]  Robert E. Tarjan,et al.  Efficiency of a Good But Not Linear Set Union Algorithm , 1972, JACM.

[8]  Robert E. Shostak,et al.  A Practical Decision Procedure for Arithmetic with Function Symbols , 1979, JACM.

[9]  Kenneth L. McMillan An interpolating theorem prover , 2005, Theor. Comput. Sci..

[10]  Ashish Tiwari,et al.  Abstract Congruence Closure , 2003, Journal of Automated Reasoning.

[11]  William Craig,et al.  Three uses of the Herbrand-Gentzen theorem in relating model theory and proof theory , 1957, Journal of Symbolic Logic.

[12]  Cesare Tinelli,et al.  Solving SAT and SAT Modulo Theories: From an abstract Davis--Putnam--Logemann--Loveland procedure to DPLL(T) , 2006, JACM.

[13]  Albert Oliveras,et al.  Proof-Producing Congruence Closure , 2005, RTA.

[14]  Robert E. Shostak,et al.  An algorithm for reasoning about equality , 1977, CACM.

[15]  Derek C. Oppen,et al.  Complexity, Convexity and Combinations of Theories , 1980, Theor. Comput. Sci..

[16]  Greg Nelson,et al.  Simplification by Cooperating Decision Procedures , 1979, TOPL.

[17]  Eugene Goldberg,et al.  BerkMin: A Fast and Robust Sat-Solver , 2002 .

[18]  Sundar Sarukkai,et al.  FSTTCS 2005: Foundations of Software Technology and Theoretical Computer Science, 25th International Conference, Hyderabad, India, December 15-18, 2005, Proceedings , 2005, FSTTCS.

[19]  Charles Gregory Nelson,et al.  Techniques for program verification , 1979 .

[20]  Lintao Zhang,et al.  Searching for truth: techniques for satisfiability of boolean formulas , 2003 .

[21]  Frank Wolter,et al.  Monodic fragments of first-order temporal logics: 2000-2001 A.D , 2001, LPAR.

[22]  Andrei Voronkov,et al.  Automated Deduction—CADE-18 , 2002, Lecture Notes in Computer Science.

[23]  David L. Dill,et al.  Checking Satisfiability of First-Order Formulas by Incremental Translation to SAT , 2002, CAV.

[24]  Xinming Ou,et al.  Theorem Proving Using Lazy Proof Explication , 2003, CAV.

[25]  Sharad Malik,et al.  Chaff: engineering an efficient SAT solver , 2001, Proceedings of the 38th Design Automation Conference (IEEE Cat. No.01CH37232).

[26]  Chao Wang,et al.  Deciding Separation Logic Formulae by SAT and Incremental Negative Cycle Elimination , 2005, LPAR.

[27]  Bart Selman,et al.  Local search strategies for satisfiability testing , 1993, Cliques, Coloring, and Satisfiability.

[28]  Michael J. Fischer,et al.  An improved equivalence algorithm , 1964, CACM.

[29]  Sharad Malik,et al.  The Quest for Efficient Boolean Satisfiability Solvers , 2002, CAV.

[30]  Hantao Zhang,et al.  SATO: An Efficient Propositional Prover , 1997, CADE.

[31]  L. D. Moura,et al.  The YICES SMT Solver , 2006 .

[32]  Andrew V. Goldberg,et al.  Negative-Cycle Detection Algorithms , 1996, ESA.

[33]  Natarajan Shankar,et al.  Inference Systems for Logical Algorithms , 2005, FSTTCS.

[34]  Joao Marques-Silva,et al.  GRASP: A Search Algorithm for Propositional Satisfiability , 1999, IEEE Trans. Computers.

[35]  Donald W. Loveland,et al.  A machine program for theorem-proving , 2011, CACM.

[36]  Philip Wadler Call-by-Value Is Dual to Call-by-Name - Reloaded , 2005, RTA.

[37]  David Detlefs,et al.  Simplify: a theorem prover for program checking , 2005, JACM.

[38]  Harald Ruess,et al.  Lazy Theorem Proving for Bounded Model Checking over Infinite Domains , 2002, CADE.