For many reasons it is a pleasure for me to recommend this book. I am especially pleased, in particular, because it relieves me of the temptation to write a revised edition of my own book, Logic for Problem Solving. Similarly to my own book, this book aims to introduce the reader to a number of topics -- logic, Artificial Intelligence and computer programming -- that are usually treated as distinct subjects elsewhere. Not only does this book succeed in its aim, but it goes further than my own book by showing how to implement the theory in runnable Prolog programs. Both the theory and the programs are presented incrementally in a style which is both pedagogically sound and, perhaps even more importantly, teaches the reader by example how new ideas and their implementations can be developed by means of successive refinement.
The latter parts of the book present a number of recent extensions of Logic Programming, most of which have been accessible previously only in conference proceedings and journal articles. As with the earlier parts of the book, this part shows how these extensions can be implemented effectively in Prolog. These extensions include abduction (the generation of explanations), default reasoning and Inductive Logic Programming. The Prolog implementations build upon the technique of metalogic programming, which is introduced earlier in the book, and which is one of the most powerful and characteristic techniques of Logic Programming.
The field of Logic Programming is fortunate in being well served by many excellent books covering virtually every aspect of the subject, including its theory, applications and programming. This book by Peter Flach is an important addition to these books, filling a gap both by including new material on abduction and Inductive Logic Programming and by relating Logic Programming theory and Prolog programming practice in a sound and convincing manner.