This book deals with the presentation and systematic design of mathematical proofs, including correctness proofs of algorithms. A technical rather than psychological view of heuristics and a stress on exploiting for- malism effectively are two key features.