Formal methods of program verification and specification (Prentice-Hall software series., 1982)