The Deductive Foundations of Computer Programming