This is the second and slightly revised edition of this book. A few errors have been fixed, and some references to related work have been added. I thank the readers for their comments on the first edition. We analyze the search efficiency of a number of common refutational theorem proving strategies on propositional and near-propositional probÂ- lems. Search efficiency is concerned with the total number of proofs and partial proofs generated, rather than with the sizes of the proofs. We show that most common strategies produce search spaces of expoÂ- nential size even on simple sets of clauses, or else are not sensitive to the goal. However, clause linking, which uses a reduction to proposiÂ- tional calculus, has behavior that is more favorable in some respects, a property that it shares with methods that cache subgoals. A stratÂ- egy which is of interest for term-rewriting based theorem proving is the A-ordering strategy, and we discuss it in some detail. We show some advantages of A-ordering over other strategies, which may help to explain its efficiency in practice. We also point out some of its comÂ- binatorial inefficiencies, especially in relation to goal-sensitivity and irrelevant clauses. In addition, SLD-resolution, which is of importance for Prolog implementation, has combinatorial inefficiencies; this may suggest basing Prolog implementations on a different theorem proving strategy. We also develop techniques for studying the asymptotic complexity of first-order theorem provers. This permits an analytic comparison of the worst-case performances of various theorem proving methods.