Written with graduate and advanced undergraduate students in mind, this textbook introduces computational logic from the foundations of first-order logic to state-of-the-art decision procedures for arithmetic, data structures, and combination theories. The textbook also presents a logical approach to engineering correct software. Verification exercises are given to develop the reader's facility in specifying and verifying software using logic. The treatment of verification concludes with an introduction to the static analysis of software, an important component of modern verification systems. The final chapter outlines courses of further study.
"...this book, which addresses the verification of sequential programs, exhibits all the features of a field that has finally fully matured. The material is substantial; it is organized very thoughtfully; the writing is concise but simple, easy to follow, and illustrated with ample examples... Overall, this book is very well written, thoughtfully constructed, and substantive yet accessible. It is bound to become a standard textbook in program verification." (Fatma Mill, ACM Computing Reviews, August 2008)