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.