ObjVProlog-D is an experimental programming language which proposes ne
w ways to integrate object-oriented and distributed programming concep
ts with Prolog to obtain the benefits of logic programming while overc
oming its traditional limitations in areas such as high-level abstract
ion, structuring, modification of knowledge during execution and distr
ibuted computing. The basic entity in ObjVProlog-D is the concurrent l
ogic object which combines a Horn clauses database with a process. The
design of the language involves three main themes: the object-oriente
d model, the state change model and the distributed computing model. T
he object-oriented model includes not only classes and objects but als
o metaclasses as first-class entities; this allows metaprogramming as
well as reflexive definition of the language. To model state changes,
a concurrent logic object relies on dynamic clauses that can be added
or deleted during the computation using a version mechanism. Finally,
the distributed computing model implements large-grain AND-parallelism
whereby concurrent objects delegate sub-problems to other objects (re
mote logic queries) which can work on them in parallel. To ensure synt
actic and semantic compatibility with the usual Prolog predicate calls
, synchronization of remote queries is based on the concept of a futur
e logic variable. In contrast to most concurrent logic object proposal
s, ObjVProlog-D preserves Prolog's don't know non-determinism, the abi
lity to backtrack to find all possible solutions to a query. This is a
chieved through a distributed backtracking protocol using asynchronous
messages. Thus, ObjVProlog-D offers an original set of design choices
, allowing programmers to structure a complex application as a distrib
uted set of cooperating Prolog experts. ObjVProlog-D is implemented in
Quintus Prolog and applications have been run on a network of worksta
tions.