The use of logic as the basis for program development is motivated by the possibilities it offers for achieving greater program correctness. PROLOG is a high-level programming language based on the concept of logic. This text offers a concise treatment of the theory of logic programming and a practical, problem-solving approach to its applications. It introduces major new developments in a continually evolving field, including topics such as concurrency, equational logic programming and constraint logic programming.