*Data Refinement*. 1998, with Willem-Paul de Roever

The goal of this book is to provide a comprehensive
and systematic introduction to the important and
highly applicable method of data refinement and the
simulation methods used for proving its correctness.
The authors concentrate in the first part on the
general principles needed to prove data refinement
correct. They beg in with an explanation of the
fundamental notions, showing that data refinement
proofs reduce to proving simulation. The topics of
Hoare Logic and the Refinement Calculus are
introduced and a general theory of simulations is
developed and related to them. Accessibility and
comprehension are emphasised in order to guide
newcomers to the area.

The book’s second part contains a detailed survey of important methods in this field, such as VDM, and the methods due to Abadi & Lamport, Hehner, Lynch & Reynolds, Back’s refinement calculus, and Z. All these methods are carefully analysed, and shown either to be incomplete, with counterexamples to their application, or to be always applicable whenever data refinement holds. This Is shown by proving, for the first time, that all these methods can be described and analysed in terms of two simple notions: forward and backward simulation.

The book is self-contained, going from advanced undergraduate level and taking the reader to the state of the art in methods for proving simulation.