The first part of the thesis explains from first principles the concept of “logic programming” and it’s 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).
The ideas are illustrated by describing in detail one sizable prologue program which implements a simple compiler the advantages and practicability of using prologue for real compiler implementation are discussed. The second part of the thesis describes techniques for implementing prologue 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 “Prologue Machine”. The code generated is comparable in speed with that produced by existing DECsystem-10 lisp compilers. Comparison as possible since pure lisp can be viewed as a rather restricted subset of Prolog.