MultiLog
is a multi-tasking, object oriented Prolog
[Ka88].
It is intended to be used for prototyping concurrent, embedded systems.
MultiLog supports both passive and active objects,
instance variables, methods, classes and inheritance.
Active objects are large-grain sequential processes,
that may communicate with each other by a rendez-vous-like
method call.
To engage in such a rendez-vous an active object must
interrupt its activity by an Ada-like accept statement.
Once a rendez-vous is successfully completed, that is when an answer
has been delivered, all contact with the object to which
the call was addressed is broken off.
When the invoking process backtracks, no `hidden communication'
takes place to generate alternative solutions.
Instead, the logical variables that have been bound in evaluating
the method call simply become unbound.\ftn{
In [Da89] MultiLog is incorrectly classified among the languages
that support backtracking over the results of a communication.
}
MultiLog, however, does support local backtracking,
that may be needed to select the appropriate clauses for
answering a method call.
This design decision, for not supporting global
or distributed backtracking,
is motivated by the intended use of the language for
prototyping embedded systems:
an equivalent mechanism does not exist in target languages such
as Ada!
Currently, research is being done to improve the efficiency
of the MultiLog
system, and to provide a suitable user interface.