A theory and practice of program development - Andrews, Derek (Formal Approaches to Computing and Information technology, 1997)