© 2008

Decision Procedures

An Algorithmic Point of View


Part of the Texts in Theoretical Computer Science book series (TTCS)

Table of contents

  1. Front Matter
    Pages I-XVI
  2. Daniel Kroening, Ofer Strichman
    Pages 1-23
  3. Daniel Kroening, Ofer Strichman
    Pages 25-57
  4. Daniel Kroening, Ofer Strichman
    Pages 59-80
  5. Daniel Kroening, Ofer Strichman
    Pages 81-110
  6. Daniel Kroening, Ofer Strichman
    Pages 111-147
  7. Daniel Kroening, Ofer Strichman
    Pages 149-170
  8. Daniel Kroening, Ofer Strichman
    Pages 171-179
  9. Daniel Kroening, Ofer Strichman
    Pages 181-206
  10. Daniel Kroening, Ofer Strichman
    Pages 207-224
  11. Daniel Kroening, Ofer Strichman
    Pages 225-239
  12. Daniel Kroening, Ofer Strichman
    Pages 241-268
  13. Back Matter
    Pages 269-304

About this book


A decision procedure is an algorithm that, given a decision problem, terminates with a correct yes/no answer. Here, the authors focus on theories that are expressive enough to model real problems, but are still decidable. Specifically, the book concentrates on decision procedures for first-order theories that are commonly used in automated verification and reasoning, theorem-proving, compiler optimization and operations research. The techniques described in the book draw from fields such as graph theory and logic, and are routinely used in industry.

The authors introduce the basic terminology of satisfiability modulo theories and then, in separate chapters, study decision procedures for each of the following theories: propositional logic; equalities and uninterpreted functions; linear arithmetic; bit vectors; arrays; pointer logic; and quantified formulas. They also study the problem of deciding combined theories and dedicate a chapter to modern techniques based on an interplay between a SAT solver and a decision procedure for the investigated theory.

This textbook has been used to teach undergraduate and graduate courses at ETH Zurich, at the Technion, Haifa, and at the University of Oxford. Each chapter includes a detailed bibliography and exercises. Lecturers' slides and a C++ library for rapid prototyping of decision procedures are available from the authors' website.


Algorithms Automat C++ algorithm logic operations research optimization proving verification

Authors and affiliations

  1. 1.Computing LaboratoryUniversity of OxfordOxfordUnited Kingdom
  2. 2.William Davidson Faculty of Industrial Engineering and ManagementTechnion – Israel Institute of TechnologyTechnion CityIsrael

Bibliographic information

Industry Sectors
Chemical Manufacturing
IT & Software
Consumer Packaged Goods
Materials & Steel
Finance, Business & Banking
Energy, Utilities & Environment
Oil, Gas & Geosciences


From the reviews:

“The topic of this book is decision procedures for first-order theories … . it is one of the first to capture the essential concepts of SMT in a book. … relevant to those wishing to understand the area today. … the book more accessible to those without a strong background in mathematical logic.” (Clark Barrett, Journal of Automated Reasoning, Vol. 51, 2013)

"This book is a developed version of classroom notes for a course on decision procedures, intended for undergraduate and graduate students … . The developments are intended for programmers who need to know about the algorithms that solve their particular problems, as well as for students and researchers who need to know how to define such algorithms in the framework of appropriate logics. … Overall, the book is well structured … ." (Siva Anantharaman, Mathematical Reviews, Issue 2009 m)

"There are a number of things that I like about the book. Although the material is often complex, the exposition is extremely clear, precise and meticulous. A definition is almost always followed by a clarifying example. As noted above, Kroening and Strichman go to great efforts to explain the notations used. In fact, I'd be hard pressed to think of another text on an advanced subject that does so much to make the material accessible to the reader." (K. Harrow, ACM Computing Reviews, September, 2008)

"This book has two topics as main points: ‘decision procedures’ and ‘algorithms to be applied for these decisions’. … Such an approach is very useful for graduate students or students in year four or five … . Each chapter introduces and explains a lot of different concepts and presents good examples, some problems and exercises with algorithm-based solutions, and a glossary at its end, which makes the book very applicable and readable. … The book is very well written and interesting to read." (Christian Posthoff, Zentralblatt MATH, Vol. 1149, 2008)