Originally published in 1981, this was the first textbook on programming in the Prolog language and is still the definitive introductory text on Prolog. Though many Prolog textbooks have been published since, this one has withstood the test of time because of its comprehensiveness, tutorial approach, and emphasis on general programming applications.
Prolog has continued to attract a great deal of interest in the computer science community, and has turned out to be the basis for an important new generation of programming languages and systems for Artificial Intelligence. Since the previous edition of Programming in Prolog, the language has been standardised by the International Organization for Standardization (ISO) and this book has been updated accordingly. The authors have also introduced some new material, clarified some explanations, corrected a number of minor errors, and removed appendices about Prolog systems that are now obsolete.
Author(s): Prof. William F. Clocksin, Dr. Christopher S. Mellish (auth.)
Edition: 5
Publisher: Springer-Verlag Berlin Heidelberg
Year: 2003
Language: English
Pages: 300
Cover
Copyright
Preface to the Fifth Edition
Table of Contents
1 Tutorial Introduction
1.1 Prolog
1.2 Objects and Relationships
1.3 Programming
1.4 Facts
1.5 Questions
1.6 Variables
1.7 Conjunctions
1.8 Rules
1.9 Summary and Exercises
2 A Closer Look
2.1 Syntax
2.1.1 Constants
2.1.2 Variables
2.1.3 Structures
2.2 Characters
2.3 Operators
2.4 Equality and Unification
2.5 Arithmetic
2.6 Summary of Satisfying Goals
2.6.1 Successful satisfaction of a conjunction of goals
2.6.2 Consideration of goals in backtracking
2.6.3 Unification
3 Using Data Structures
3.1 Structures and Trees
3.2 Lists
3.3 Recursive Search
3.4 Mapping
3.5 Recursive Comparison
3.6 Joining Structures Together
3.7 Accumulators
3.8 Difference Structures
4 Backtracking and the "Cut"
4.1 Generating Multiple Solutions
4.2 The "Cut"
4.3 Common Uses of the Cut
4.3.1 Confirming the Choice of a Rule
4.3.2 The "cut-fail" Combination
4.3.3 Terminating a "generate and test"
4.4 Problems with the Cut
5 Input and Output
5.1 Reading and Writing Terms
5.1.1 Reading Terms
5.1.2 Writing Terms
5.2 Reading and Writing Characters
5.2.1 Reading Characters
5.2.2 Writing Characters
5.3 Reading English Sentences
5.4 Reading and Writing Files
5.4.1 Opening and closing streams
5.4.2 Changing the current input and output
5.4.3 Consulting
5.5 Declaring Operators
6 Built-in Predicates
6.1 Entering New Clauses
6.2 Success and Failure
6.3 Classifying Terms
6.4 Treating Clauses as Terms
6.5 Constructing and Accessing Components of Structures
6.6 Affecting Backtracking
6.7 Constructing Compound Goals
6.8 Equality
6.9 Input and Output
6.10 Handling Files
6.11 Evaluating Arithmetic Expressions
6.12 Comparing Terms
6.13 Watching Prolog at Work
7 More Example Programs
7.1 A Sorted Tree Dictionary
7.2 Searching a Maze
7.3 The Towers of Hanoi
7.4 Parts Inventory
7.5 List Processing
7.6 Representing and Manipulating Sets
7.7 Sorting
7.8 Using the Database
7.8.1 Random
7.8.2 Gensym
7.8.3 Findall
7.9 Searching Graphs
7.10 Sift the Two's and Sift the Three's
7.11 Symbolic Differentiation
7.12 Mapping Structures and Transforming Trees
7.13 Manipulating Programs
7.14 Bibliographic Notes
8 Debugging Prolog Programs
8.1 Laying out Programs
8.2 Common Errors
8.3 The Tracing Model
8.4 Tracing and Spy Points
8.4.1 Examining the Goal
8.4.2 Examining the Ancestors
8.4.3 Altering the Degree of Tracing
8.4.4 Altering the Satisfaction of the Goal
8.4.5 Other Options
8.4.6 Summary
8.5 Fixing Bugs
9 Using Prolog Grammar Rules
9.1 The Parsing Problem
9.2 Representing the Parsing Problem in Prolog
9.3 The Grammar Rule Notation
9.4 Adding Extra Arguments
9.5 Adding Extra Tests
9.6 Summary
9.7 Translating Language into Logic
9.8 More General Use of Grammar Rules
10 The Relation of Prolog to Logic
10.1 Brief Introduction to Predicate Calculus
10.2 Clausal Form
10.3 A Notation for Clauses
10.4 Resolution and Proving Theorems
10.5 Horn Clauses
10.6 Prolog
10.7 Prolog and Logic Programming
11 Projects in Prolog
11.1 Easier Projects
11.2 Advanced Projects
A Answers to Selected Exercises
B Clausal Form Program Listings
C Writing Portable Standard Prolog Programs
C.1 Standard Prolog for Portability
C.2 Different Prolog Implementations
C.3 Issues to Look Out For
C.4 Definitions of some Standard Predicates
C.4.1 Character Processing
C.4.2 Directives
C.4.3 Stream Input/Output
C.4.4 Miscellaneous
D Code to Support DCGs
D.1 DCG Support Code
Index