This mathematically oriented introduction to the theory of logic programming presents a systematic exposition of the resolution method for propositional, first-order, and Horn- clause logics, together with an analysis of the semantic aspects of the method. It is through the inference rule of resolution that both proofs and computations can be manipulated on computers, and this book contains elegant versions and proofs of the fundamental theorems and lemmas in the proof theory of logic programming. Advanced topics such as recursive complexity and negation as failure and its semantics are covered, and streamlined setups for SLD- and SLDNF-resolution are described. No other book treats this material in such detail and with such sophistication. Doets provides a novel approach to resolution that is applied to the first-order case and the case of (positive) logic programs. In contrast to the usual approach, the concept of a resolvent is defined nonconstructively, without recourse to the concept of unification, allowing the soundness and completeness proofs to be carried out in a more economic way. Other new material includes computability results dealing with analytical hierarchy, results on infinite derivations and an exposition on general logic programs using 3-valued logic.