DLP as a family of languages

\label{des/dlp/tab} For studying the semantic aspects of the language, it has appeared profitable to isolate a number of subsets of DLP. Due to the static nature of the inheritance mechanism we may ignore inheritance. \id{ For all the sub-languages DLP0 -- DLP2 (see below) we have provided both an operational and a denotational (continuation) semantics in chapter \ref{sem/com}. We have not included a semantic characterization of conditional acceptance since, despite the elegance of the construct, this seems rather complex. Features such as allocation are omitted since they are simply not interesting from a semantic point of view. Neither have we included a treatment of the cut, nor a treatment of assert and retract statements. } The reader not interested in semantic issues is advised to jump to the next chapter.

Backtracking and non-logical variables.

\paragraphindex{backtracking} We consider DLP0 to be the base language of DLP. It extends Prolog (without cut) with a construct to assign values to non-logical variables. .so DLP0 Moreover, in unification goals of the form t1 = t2, and in the right hand side of assignments, non-logical variables are replaced by their values and arithmetical expressions are simplified.

Communication over channels.

The sub-language DLP1 extends DLP0 by a construct to create active instances of objects. Also, communication over channels is introduced. .so DLP1 Communication over channels is relatively simple, since the backtracking that occurs during a communication is a local phenomenon, restricted to the process at the input side of the channel.

Communication by rendez-vous.

Our next extension is called DLP2. It extends DLP0 by constructs for synchronizing on method calls. .so DLP2 As a restriction for DLP2, which does not hold for DLP, we require that accept statements occur only in constructor processes. We have given an operational semantics of DLP2 in chapter \ref{sem/op}. The backtracking that may occur during a rendez-vous is global. We speak of global or distributed backtracking, since the process calling the method may force the answering process to backtrack over any remaining answers. \nop{

The language DLP

is simply the collection of all constructs introduced thus far. See table \ref{des/dlp:DLP}. It supports cuts, and the assert and retract statements as may be encountered in Prolog. Also inheritance is included. Clearly, some of the constructs introduced in the previous chapter may be regarded as abbreviations. .so DLP }