Full book name: "How To Prove It - A Structured Approach, 2nd ed."
It's not often than a single book makes me write a full review (rather than just include it in a quarterly summary) these days. For this to happen, the book has to be truly remarkable and I should have so many impressions of it that it certainly won't fit into a summary.
"How To Prove It" is one such book. It takes upon itself the challenging task of teaching readers how to read, understand and come up with mathematical proofs. An audacious goal for sure, but the author succeeds beautifully.
The book starts with basic chapters on mathematical logic, as a prelude to proof-writing - translating simple word problems to logical equations and showing how to reason about them with tools like truth tables, operations on sets and logical quantifiers. In chapter 3, a structured approach to proof writing is presented. The approach is very mechanical - just the way it should be. You're taught to carefully consider and analyze each and every logical statement in your proof. Every statement comes from applying known rules to previously discovered statements. Careful proofs are beautiful things - they leave nothing unexplained. I recall back from my math courses in University, when I was losing points on proofs it was always because I missed to explain some crucial steps. The approach demonstrated in this book is a very nice way to keep track of everything and make sure nothing goes amiss. In fact, as a programmer it's immediately obvious how such proof techniques can be automated (and indeed the author has developed a proof-aid system called Proof Designer, which he talks about in an appendix).
After the reader has basic proof-writing tools in his hands, subsequent chapters present more constructs from logic and set theory, with new proof techniques and examples relevant to them. There's a chapter on relations, including closures. Another chapter on functions. Finally, the book ends with a chapter on induction (including strong induction) and a chapter on infinite sets.
Throughout the book, there are numerous examples, carefully crafted to take the reader through the material in tiny steps, and encouraging experimentation. There's a huge number of exercises (only some of which have solutions, unfortunately). The exercises smartly progress from very simple to challenging, giving the reader an opportunity to practice proof techniques and really understand how to use the matehmatical tools needed for the task.
I thoroughly enjoyed this book - it took me months to work through it, and it was an immensely rewarding experience. I worked through most exercises in the first chapters and at least some in the later chapters. I wish I had more patience to do even more exercises on my own - but it's quite a time-consuming endeavor. Overall, I think that if one is looking for a great book to explain what mathematics is all about, there's no need to look further.
I want to emphasize this last point. There are many books out there contending to be "the introduction to mathematics" for sophisticated readers. Almost always, these books turn out to be roller-coaster rides through dozens of mathematical topics, shortly touching on each. IMHO that's absolutely the worst possible approach to present mathematics, and this is where Velleman gets this right. In terms of total presented material, this book wouldn't even cover a single undergrad course in logic and set theory. But you see, there's no need to cover as many topics as possible. On the contrary, that would be detrimental. "How To Prove It" brilliantly chooses a small number of key topics and ideas and really focuses on teaching readers how to undestand them and reason about proofs using them. Since these ideas are fundemental in mathematics, they permeate every topic studied and are universally useful. Not much different from teaching a man to fish as opposed to dumping a truckload of exotic fish on him, really.
To conclude, if you are looking for a book to understand what mathematics is about and get a great introduction to mathematical thinking - I highly recommend "How To Prove It".