The Logical Basis for Computer Programming: Volume 1: Deductive Reasoning