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 , 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
}