"How to Prove It: A Structured Approach" by Daniel J. Velleman is brilliant. It starts off with sentential and quantificational logic, which are absolutely necessary in really understanding how to write a proof, and then it gets into building blocks of analysis with relations, and functions...