The Design of a Distributed Interpreter for Concurrent Prolog

ID
TR-84-18
Authors
Chun Man Tam
Publishing date
November 1984
Abstract

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 A Subset of Concurrent Prolog and Its Interpreter by E.Y. Shapiro [Shapiro83].)