Termination proofs constitute a crucial part of program verification. Much research about termination has been done in the context of term rewriting systems. But until now there was little hope that termination proofs for nontrivial programs could be achieved automatically. This book gives a comprehensive discussion of the termination problem in the context of logic programming. Although logic programs pose special difficulties for termination proofs it turns out that automation of this task is obtainable to a much larger degree than for programs in imperative languages. A technique for the automatic derivation of termination proofs is presented in detail. The discussion of several nontrivial examples illustrates its range of applicability. The approach is based on the concept of declarative semantics, and thus makes use of an important feature of logic programming.