A Tutorial on Satisfiability Modulo Theories (Invited Tutorial)
Leonardo de Moura, Bruno Dutertre, Natarajan Shankar · 2007
Abstract. Solvers for satisfiability modulo theories (SMT) check the satisfiabil-ity 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 sat-isfiability 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 pre-sentation is primarily directed at those who wish to build satisfiability solvers or to use existing solvers more effectively. 1