The value of logic techniques in circuit design has been well-known for many years, but a thorough grounding in mathematical logic is needed for all stages of software development, especially program specification, verification and program transformation. In all these stages, logic underpins the theory, bearing out the dictum that "Logic is the calculus of computer science". This book presents the subject of mathematical logic in order to provide a grounding for students in computer science. The approach utilized is to present the canonical logical theories - the propositional calculus and the first-order predicate calculus. There is a brief presentation of modal and temporal logic in the final chapter.