Location 
Call number 
Availability 
City Campus 
004.0151 KROE

Available

 Description
 xxi, 356 pages : illustrations (some color) ; 24 cm.
 Additional Authors
 Strichman, Ofer,
 Notes
 Contents: Introduction and Basic Concepts  Decision Procedures for Propositional Logic  From Propositional to QuantifierFree Theories  Equalities and Uninterpreted Functions  Linear Arithmetic  Bit Vectors  Arrays  Pointer Logic  Quantified Formulas  Deciding a Combination of Theories  Propositional Encodings  Applications in Software Engineering  SMTLIB 2.0: A Brief Tutorial  A C++ Library for Developing Decision Procedures.Includes bibliographical references and indexes.Summary: 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 firstorder theories that are commonly used in automated verification and reasoning, theoremproving, 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 NelsonOppen 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 Ematching 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.