Constructing Correct Software - Cooke, John (Springer London, 2005)