Delta Prolog

is a distributed logic programming language that extends Prolog to include and-parallelism and synchronous communication with two-way pattern matching. C.f.  [PN84],  [PM85]. Parallel processes may be created by using the operator || for the parallel composition of goals. Processes may synchronize and communicate with each other by means of so-called event goals, a construct based on the notion of event of the distributed logic described in  [Mo84]. Event goals are goals of the form T?E or T!E, where E represents an event and T a term, the event pattern. As an example, the compound parallel goal [] T1!E || T2?E succeeds if T1 and T2 unify. Delta Prolog supports fully distributed backtracking, that occurs when one of the components of a parallel goal does not succeed. The backtracking order is then just as in ordinary Prolog. \nop{ which implies that paralelism is effectively exploited only on "forward" execution. } Another occasion on which globally controlled backtracking occurs is when two compatible event goals fail to result in a communication. The advantage of Delta Prolog is, first of all, that it includes full Prolog as a subset, and secondly, that it supports backtracking on the results of a communication. As a disadvantage, we may note that it does not provide modular features that may be of help in program design. In comparison with the rendez-vous construct, communication via events is less general, since the suspension of attempts at communication is not supported. An implementation of Delta Prolog exists, as an extension to C-Prolog partly written in C and partly in Prolog, that allows to execute Delta Prolog programs on a network of processors.