Further reading (optional)

We give a list of books, papers, and webpages with additional information of how SAT/SMT solvers work as well as tutorials for using them together with various programming languages.

For a general introduction to mathematical logic, some references are found in the preliminaries.

Tutorials & Documentation

More on SAT Solvers

A comprehensive introduction to satisfiability solving is found in the handbook of satisfiability:

Handbook of satisfiability. Armin Biere. 2009.

The original algorithm for SAT solving is DPLL: Davis-Putnam-Logemann-Loveland. You can read more about it in the original paper.

A machine program for theorem-proving. Martin Davis, George Logemann, and Donald Loveland. 1962.

Modern SAT solvers typically use a different algorithm, called Conflict-Driven Clause Learning (CDLC):

GRASP – A New Search Algorithm for Satisfiability. João P. Marques Silva and Karem A. Sakallah. 1996.

For a comparison of existing SAT solvers, we refer to the annual SAT competition.

More on SMT Solvers

A comprehensive introduction to SMT solving is found in the following book:

Decision procedures : an algorithmic point of view. Daniel Kroening and Ofer Strichman. 2008.

The book's website also provides supplementary material, for example slides for selected topics.

There are also excellent courses that focus on the theory, implementation, and usage of SMT solvers: