Cullinane’s book, geared at undergraduates making the transition from calculus courses to proof-intensive courses such as abstract algebra, has a suitable, if not particularly unsurprising, structure. He begins with a conversational chapter introducing and motivating the ideas of proof and of precise mathematical writing. He follows this with core chapters on elementary logic and on the planning and writing of proofs. Along the way, he introduces basic set theory objects and axioms, as well as exploring properties of the real numbers, in order to provide a context in which students can write proofs. These are followed by topical chapters introducing other mathematical playgrounds in which students can practice their proof-writing skills.

I enjoyed reading the book. It has an accessible style; I can picture some undergraduates actually reading this book, rather than just skimming through it for definitions and examples. It covers the basics of proof-writing, and draws attention to most of the common pitfalls into which students tumble, such as assuming what you want to prove or neglecting to formally choose an arbitrary element in a predicate’s domain when attempting to prove a universal statement.

I like the book’s emphasis on the distinction between proof-planning and proof-writing. Throughout the book, Cullinane provides informal discussions or sketches of arguments preceding their rigorous distillations as proofs. The difference between the linear progression of logic in proofs versus its often non-linear progression in the thought-processes leading up to the proofs is something that is often elided in proof-instruction. After reading Cullinane’s book I recognize that this is something I need to emphasize more in my own classes.

Cullinane discusses many useful proof techniques, such as the uses of contradiction, contraposition, and induction; the proving of if-then statements; and the demonstratation of the equality of sets. (Though I must admit, I have always thought of what he terms “contradiction” and “contraposition” proof techniques to be more or less the same thing, and wonder if distinguishing between them might be more confusing for students than necessary). Finally, each section of the book contains practice problems, embedded in appropriate places within the text, whose solutions appear at the end of the section. I believe students will find these very helpful.

There are some aspects of the book of which I was less fond. Each section begins with questions “to guide the reading of the section.” While this is something I approve of in theory, in practice I forgot about the questions immediately after reading them. I think keeping them in mind might be even trickier for students, since many of the guiding-question words will be as yet unfamiliar to them. That said, the inclusion of these questions doesn’t detract from the quality of the book.

More significant to me was the use of the word undefined to describe terms such as “set” which are fundamental mathematical concepts Cullinane is — for obvious reasons — avoiding formally defining. While I completely agree that one should simply appeal to intuition, rather than attempting to formally define such notions, “undefined” seems to me to be a very poor choice of a word for the classification of such terms. For instance, it leads to the peculiar phrase “A formal version of definition adheres… to this requirement by using only undefined terms, previously defined terms, and allowable logical phrases…” (27). Here, by “undefined” Cullinane means the specific terms such as “set” and “membership” which he has identified as fundamental but not easily definable, but really, there are myriad undefined words which definitions should not use, such as Curious George’s “blimlimlim.” Simply choosing a different word, such as “fundamental” or “core” to describe these so-called “undefined” terms would have provided ample clarification.

After his proof-writing chapter, Cullinane provides three topical chapters. I see good reasons for including the first two of these. Chapter 5 focuses on relations and functions; while it is not necessary to discuss these in a proof-writing course, the notions of one-to-one/onto maps and equivalence relations are central to linear algebra, abstract algebra, and other courses for which a proof-writing course is often a prerequisite: an introduction to these concepts prior to these classes is, in my mind, highly useful. Chapter 6 focuses on number theory and combinatorics, and uses the study of natural numbers as a vehicle for introducing the crucial proof concept of induction. Chapter 7, however, feels a bit arbitrary, introducing the areas of graph theory, group theory, and set cardinality (this third topic could have been nicely tucked into Chapter 6). That said, it does provide further topics whose studies involve proofs; this may be of use in courses which can get through the previous material sufficiently quickly (and also may allow its adoption as a text in a discrete math course).

In short, this is a good, if not particularly groundbreaking, text. It would work very well, I think, for a one-semester sophomore or junior-level introduction to proofs course (though it would be insufficient for an honors or high-level version of such a course). Its exercises are plentiful and well-organized into subsections pertaining to certain goals or topics (e.g., “Proving an Or Statement” or “The Binomial Theorem”), and it is eminently readable. I would definitely consider using it if I teach a proofs class in the near future.