Formal development of programs and proofs / - Dijkstra, Edsger W. (Addison-Wesley,, 1990)