Table of Contents | Slides and Extra Reading | Projects | Software Download |

By Daniel Kroening and Ofer Strichman | ||

(click to enlarge) |
A The authors introduce the basic terminology of SAT, Satisfiability Modulo Theories (SMT) and the DPLL(T) framework. Then, in separate chapters, they study decision procedures for the following theories: - equalities and uninterpreted functions
- linear arithmetic
- bit vectors
- arrays
- pointer logic
- quantified formulas.
The first edition of this book was adopted as a textbook in courses worldwide. It was published in 2008 and the field now called SMT was then in its infancy, without the standard terminology and canonic algorithms it has now; this second edition reflects these changes. It brings forward the DPLL(T) framework. It also expands the SAT chapter with modern SAT heuristics, and includes a new section about incremental satisfiability, and the related Constraints Satisfaction Problem (CSP). The chapter about quantifiers was expanded with a new section about general quantification using E-matching and a section about Effectively Propositional Reasoning (EPR). The book also includes a new chapter on the application of SMT in industrial software engineering and in computational biology, coauthored by Nikolaj Bjørner and Leonardo de Moura, and Hillel Kugler, respectively. Each chapter includes a detailed bibliography and exercises. Lecturers' slides and a C++ library for rapid prototyping of decision procedures are available from this website. The book is available at Springer and at Amazon. Springer also provides an online version. Clark Barrett has written a review of the first edition of the book in JAR. (Errata for the first edition, errata for the second edition) |