Formal development of programs and proofs - Dijkstra, Edsger Wybe (Addison-Wesley, 1990)