Distributed logic programming (DLP)
may be characterized by the pseudo-equation
[] DLP = LP + OO +
stating that distributed logic programming
combines logic programming (LP),
object oriented programming (OO) and
parallelism ().
The application area we have in mind for DLP encompasses
the implementation of knowledge-based systems,
including expert systems and systems for distributed problem solving.
Logic Programming,
because of its declarative nature,
has established itself as an important implementation method
for problems in Artificial Intelligence, knowledge based systems,
and in particular expert systems. C.f. [Bu83].
Its major representative is Prolog. See [CM81].
Object Oriented Programming
has recently become a paradigm for developing complex systems.
Objects integrate data and methods that operate on these data
in a protected way.
This allows to organize a program as a collection of objects,
representing the conceptual
structure of the problem.
Part of the popularity of object oriented languages
is due to the
facilities for code sharing as offered by
the inheritance mechanism. See [We87].
Parallelism
is somehow of independent interest.
Most of the developments in parallel logic programming
are based on exploiting the parallelism inherent in the
computation model of logic programming languages.
Parallelism in DLP is achieved by extending the notion of object
to that of a process,
in a similar fashion as the approach taken for POOL [Am87].
In developing the language DLP we have strived
for compatibility with the backtracking behavior of Prolog.
Our approach is in this respect distinct from
the efforts of extending concurrent logic programming languages
with object oriented features, since these support only the
so-called {\it don't care}, or committed choice, non-determinism inherited from
their base languages, instead of
the {\it don't know} non-determinism of Prolog.
In the next section we present the basic notions around
which DLP is built.
A summary of the contents of this thesis is given
in section \ref{des/intro/ov}.