Technical Reports

The ICICS/CS Reading Room

UBC CS TR-84-18 Summary

The Design of a Distributed Interpreter for Concurrent Prolog, November 1984 Chun Man Tam

Prolog is a programming language based on predicate logic. Its successor, Concurrent Prolog, was designed to meet the needs of a multiprocessing environment to the extent that it may be desirable as a succinct language for writing operating systems. Here, we demonstrate the feasibllity of implementing a distributed interpreter for Concurrent Prolog using traditional programming tools under a multiprocess structuring methodology. We will discuss the considerations that must be made in a distributed environment and how the constructs of the language may be implemented. In particular, several subtle pitfalls associated with the implementation of read-only variables and the propagation of new bindings will be illustrated. In addition, a modification to Shapiro's treatment of read-only variables is proposed in an attempt to ``clean up'' the semantics of the language.

(The discussion will centre around a primitive version of an interpreter for the language written in Zed (a language similar to C) on an Unix-like operating system, Verex. Although a brief introduction of Prolog and Concurrent Prolog will be given, it is assumed that the reader is familiar with the paper \underline{A Subset of Concurrent Prolog and Its Interpreter} by E.Y. Shapiro [Shapiro83].)

If you have any questions or comments regarding this page please send mail to