Applied logic: its use and implementation as a programming tool
View/ Open
Date
1978Author
Warren, David H. D.
Metadata
Abstract
The first Part of the thesis explains from first principles the
concept of "logic programming" and its practical application in the
programming language Prolog. Prolog is a simple but powerful language
which encourages rapid, error-free programming and clear, readable,
concise programs. The basic computational mechanism is a pattern
matching process ("unification") operating on general record
structures ("terms" of logic).
IThe ideas are illustrated by describing in detail one sizable
Prolog program which implements a simple compiler. The advantages and
practicability of using Prolog for "real" compiler implementation are
discussed.
The second Part of the thesis describes techniques for
implementing Prolog efficiently. In particular it is shown how to
compile the patterns involved in the matching process into
instructions of a low-level language. This idea has actually been
implemented in a compiler (written in Prolog) from Prolog to
DECsystem-10 assembly language. However the principles involved are
explained more abstractly in terms of a "Prolog Machine". The code
generated is comparable in speed with that produced by existing DEC10
Lisp compilers. Comparison is possible since pure Lisp can be viewed
as a (rather restricted) subset of Prolog.
It is argued that structured data objects, such as lists and
trees, can be manipulated by pattern matching using a "structure
'sharing" representation as efficiently as by conventional selector and constructor functions operating on linked records in "heap" storage.
Moreover the pattern matching formulation actually helps the
implementor to produce a better implementation.