Skip to main content
Top

2016 | Book

Decision Procedures

An Algorithmic Point of View

insite
SEARCH

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 SAT, Satisfiability Modulo Theories (SMT) and the DPLL(T) framework. Then, in separate chapters, they study decision procedures for 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 based on the Nelson-Oppen procedure.

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 the authors’ website.

Table of Contents

Frontmatter
Chapter 1. Introduction and Basic concepts
Abstract
This chapter presents basic concepts such as formal proofs, the satisfiability problem, soundness and completeness, and the trade-off between expressiveness and decidability. It also includes the theoretical basis for the rest of the book.
Daniel Kroening, Ofer Strichman
Chapter 2. Decision Procedures for Propositional Logic
Abstract
This chapter introduces decision procedures for propositional logic.
Daniel Kroening, Ofer Strichman
Chapter 3. From Propositional to Quantifier-Free Theories
Abstract
This chapter studies a general framework that generalizes CDCL to a decision procedure for decidable quantifier-free first-order theories.
Daniel Kroening, Ofer Strichman
Chapter 4. Equality Logic and Uninterpreted Functions
Abstract
This chapter introduces the theory of equality, also known by the name equality logic. Equality logic can be thought of as propositional logic where the atoms are equalities between variables over some infinite type or between variables and constants.
Daniel Kroening, Ofer Strichman
Chapter 5. Linear Arithmetic
Abstract
This chapter introduces decision procedures for conjunctions of linear constraints.
Daniel Kroening, Ofer Strichman
Chapter 6. Bit Vectors
Abstract
The design of computer systems is error-prone, and thus decision procedures for reasoning about such systems are highly desirable. A computer system uses bit vectors to encode information, for example, numbers.
Daniel Kroening, Ofer Strichman
Chapter 7. Arrays
Abstract
Analysis of software or hardware requires the ability to decide formulas that contain arrays. This chapter introduces an array theory and two decision procedures for specific fragments.
Daniel Kroening, Ofer Strichman
Chapter 8. Pointer Logic
Abstract
This chapter introduces a theory for reasoning about programs that use pointers, and describes decision procedures for it.
Daniel Kroening, Ofer Strichman
Chapter 9. Quantified Formulas
Abstract
Quantification allows us to specify the extent of validity of a predicate, the domain in which the predicate should hold. The syntactic element used in the logic for specifying quantification is called a quantifier.
Daniel Kroening, Ofer Strichman
Chapter 10. Deciding a Combination of Theories
Abstract
Verification conditions that arise in practice frequently mix expressions from several theories.
Daniel Kroening, Ofer Strichman
Chapter 11. Propositional Encodings
Abstract
In this chapter we consider the eager approach based on performing a full reduction of a T-formula to an equisatisfiable propositional formula.
Daniel Kroening, Ofer Strichman
Chapter 12. Applications in Software Engineering and Computational Biology
Abstract
This chapter presents applications of decision procedures in software engineering and computational biology.
Daniel Kroening, Ofer Strichman
Backmatter
Metadata
Title
Decision Procedures
Authors
Daniel Kroening
Ofer Strichman
Copyright Year
2016
Publisher
Springer Berlin Heidelberg
Electronic ISBN
978-3-662-50497-0
Print ISBN
978-3-662-50496-3
DOI
https://doi.org/10.1007/978-3-662-50497-0

Premium Partner