Found within the confines of these pages is a well-written monograph that provides an intuitive account of both the foundations of logic programming and simple programming techniques in Prolog. Only the most important areas of logic programming are considered. The book covers foundations, programming in logic, and alternative logic programming schemes. Within each of these sections are comprehensive explorations covering areas such as SLD-resolution, negation in logic programming, logic and databases, logic and expert systems, logic and grammars, logic programming and concurrency, logic programs with equality, and constraint logic programming. In addition, there are bibliographical notes and answers to selected exercises.
In this book the authors attempt to give a background into the foundations of logic programming and to develop programming expertise in the programming language Prolog. They do a good job, and considering the importance of logic programming in both research and industry, a perusal of this book will give the reader a good background to enter fields such as constraint logic programming or artificial intelligence. Chapter 1 is an introduction to what logic programming is all about, with its declarative nature emphasized right away. The syntax of predicate logic is introduced as a formalization of a collection of declarative statements of natural language. The semantics of the formulas in predicate logic is discussed in terms of a relation between its language and a particular (algebraic) structure. The meaning of terms including both constants and variables is done using a 'valuation'. Some elementay model theory is developed here also. In chapter 2, the authors take up logic programming by introducing the notion of 'definite clauses'. A 'definite program' is then a finite set of definite clauses. Logic programming is explained as writing down a collection of logic formulas, with the programmer attempting to describe an intended model via the use of definite clauses, or "facts" and "rules". The program can have many models, with a program being "incorrect" if and only if the intended model is not a model of the program. The authors show clearly the role of queries in establishing the truth of the intended model.They also show the existence of a model that reflects all of the information expressed in model but not any more, the famous 'Herbrand model'. Logic programs are essentially reasoning systems, and so a notion of proof is needed. This is done in chapter 3, which discusses inference rules in the guise of "SLD-resolution", which is a model-theoretic notion of proof. The soundness and completeness of SLD-resolution is proven in detail. Readers familiar with resolution from earlier courses in logic will appreciate the discussion of 'proof trees" in this chapter. Chapter 4 takes up the very controversial notion of negation in logic programming, and its connection with the 'closed world assumption', the latter of which allows one to derive negative conclusions based on the absence of positive information. The authors discuss various approaches to the justification of negative conclusions from general programs, and they explain the role of 'program completion" in capturing the notion of negation as finite failure. Those readers who already have exposure will appreciate more the discussion in chapter 5, which deals with the 'cut' pruning strategy for traversing of SLD-trees, along with 'built-in arithmetic'. The effects of the cut operation are explained in detail, including its ability to destroy completeness of definite programs and soundness of general programs, and if negation is involved, give incorrect answers. The authors also show how the
ThriftBooks sells millions of used books at the lowest everyday prices. We personally assess every book's quality and offer rare, out-of-print treasures. We deliver the joy of reading in recyclable packaging with free standard shipping on US orders over $15. ThriftBooks.com. Read more. Spend less.