Effective theorem provers are essential for automatic verification and generation of programs. The conventional resolution strategies, albeit complete, are inefficient. On the other hand, special purpose methods, such as term rewriting systems for solving word problems, are relatively efficient but applicable to only limited classes of problems. In this paper, a simple canonical set of rewrite rules for Boolean algebra is presented. Based on this set of rules, the notion of term rewriting systems is generalized to provide complete proof strategies for first order predicate calculus. The methods are conceptually simple and can frequently utilize lemmas in proofs. Moreover, when the variables of the predicates involve some domain that has a canonical system, that system can be incorporated as rewrite rules, with the algebraic simplifications being done simultaneously with the merging of clauses. This feature is particularly useful in program verification, data type specification, and programming language design, where axioms can be expressed as equations (rewrite rules). Preliminary results from our implementation indicate that the methods are space-efficient with respect to the number of rules generated (as compared to the number of resolvents in resolution provers).