
×
„Specification and verification of programs is increasingly being taught to undergraduate and graduate computer science students. Courses along these lines enable students to understand and reason about programs as formal objects.
…this beautifully written and smoothly flowing textbook should serve as a fine candidate for teaching graduate-level and possibly upper-level undergraduate courses on, or with a component on, program verification. …the book is self-contained“
(Anish Arora, William Gasarch’s Book Review Column, SIGACT News)
Computer programs are becoming more and more part of systems that we use to rely on in our daily lives. The proper functioning and safety of these systems is of paramount importance. A major challenger for computer science is to develop methods that ensure program correctness. This textbook provides a structured introduction to program verification using an assertional approach - so named because it relies on the use of assertions that are attached to program control points. Sequential programs in the form of deterministic and nondeterministic programs, and concurrent programs in the form of parallel and distributed programs are considered within the context of their partial and total correctness. The use of these proof systems is demonstrated with the help of case studies. In particular solutions to classical problems such as mutual exclusion are formally verified. Each chapter concludes with exercises and bibliographic remarks for further reading. As a result, this text will be appropriate for either an introductory course on program verification for upper division of undergraduate studies or for graduate studies. It can also be used as an introduction to operational semantics. Outlines of possible courses are presented in the preface of the book.