Logic programming has emerged over the last 5 years as one of the most promising new programming paradigms and as a very active research area. The PROLOG experience has shown that relevant problems in areas such as expert systems, deductive databases, knowledge representation, and rapid prototyping can profitably be tackled by logic programming technology. It has also shown that the performance of PROLOG systems can be made comparablewith more traditional programming languages by means of sophisticated optimization and implementation of the design of a new class of languages, the concurrent logic languages. Many recent advances in the theory of logic programs are related to extensions of the basic positive logic language and the related semantic problems. The original non-monotonic negation-as-failure rule has been extended in various ways and provided with new declarative characterisations. Othernew language constructs are constraints (which lead to a very important extension of the paradigm which allows us to compute on new domains), concurrency, and modules and objects. This book, written by a team of international experts, goes beyond the classical theory to discuss the many recent advances for the first time in a systematic form.