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.
Author(s): Daniel Kroening, Ofer Strichman
Series: Texts in Theoretical Computer Science. An EATCS Series
Publisher: Springer
Year: 2008
Language: English
Pages: 321
Tags: Информатика и вычислительная техника;Информационные технологии;
Cover......Page 1
Decision Procedures:
An Algorithmic Point of View......Page 3
Texts in Theoretical Computer Science
An EATCS Series......Page 2
ISBN 3540741046......Page 4
Foreword......Page 6
Preface......Page 8
Contents......Page 12
1
Introduction and Basic Concepts......Page 18
2
Decision Procedures for Propositional Logic......Page 42
3
Equality Logic and Uninterpreted Functions......Page 76
4
Decision Procedures for Equality Logic and
Uninterpreted Functions......Page 98
5
Linear Arithmetic......Page 128
6
Bit Vectors......Page 166
7
Arrays......Page 188
8
Pointer Logic......Page 198
9
Quantified Formulas......Page 224
10
Deciding a Combination of Theories......Page 242
11
Propositional Encodings......Page 258
A
The Satisfiability-Modulo-Theory Library and
Standard (SMT-LIB)......Page 286
B
A C++ Library for Developing Decision
Procedures......Page 288
References......Page 302
Index......Page 316