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 or ,
where E represents an event and T a term, the event pattern.
As an example, the compound parallel goal
[]
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.