The art of Prolog. Advanced programming techniques. (English) Zbl 0605.68002

MIT Press Series in Logic Programming. Cambridge, Mass.-London: The MIT Press. XX, 427 p. (1986).
It is true that in the last years appeared several books on Prolog and logic programming. Some stress the theoretical foundations, some represent introductory programming techniques. This book, expressing the authors’ high competence and experience in the field, represents a new step towards the professional logic and Prolog programming, explaining how specific advanced techniques are used to design and solve more serious applications. A valuable feature met throughout the book: the emphasis on the distinction between logic programming and Prolog programming.
The four parts of the book are organized as follows: Part I is a self- contained introduction to logic programming in terms of logical deduction (instead of more frequently met resolution background). Chapters 2 and 3 present, respectively, two basic styles of logic programming: database and recursive programming. Chapter 4 presents a full computaion model of logic programs: unification algoritm and example computations of logic programs are discussed. Chapter 5 briefly reviews results of more theoretical interest: semantics, correctness, complexity, search trees, and negation.
Part II represents an introduction to Prolog language features. Chapter 6 discusses the computational model of Prolog as opposed to logic programming, comparing also Prolog with conventional programming languages (like Pascal). Chapter 7 identifies the differences between composing Prolog programs and logic programs, illustrated by examples from basic programming techniques. Chapters 8 to 12 present the basic (built-in) Prolog predicates: arithmetical, structure inspection, meta- logical, cuts and negation, and extra-logical.
Part III describes (Chapters 14-19) advanced Prolog techniques: non- deterministic programming, incomplete data structures, parsing with definite clause grammars (DCGs), second-order programming, search techniques, meta-interpreters for expert systems and debugging.
The Part IV of the book is concerned with four larger applications: game- playing programs (Mastermind, Nim, Kalah), an equation solver, a credit evaluation expert system, and a compiler for a simple Pascal-type language.
The book successfully served for several courses on logic programming and Prolog in United States, Israel and Scotland. The exercises in the book range from very easy to very difficult ones, written mainly in Edinburg Prolog and run on Wisdom Prolog.
Reviewer: N.Curteanu


68-01 Introductory exposition (textbooks, tutorial papers, etc.) pertaining to computer science
68N01 General topics in the theory of software
68T15 Theorem proving (deduction, resolution, etc.) (MSC2010)
68T20 Problem solving in the context of artificial intelligence (heuristics, search strategies, etc.)