Concepts for a Modular and Distributed Prolog Language

The paper introduces new language concepts for building modular and distributed Prolog programs. The language concepts are synthesized from the analysis of the language concept of Distributed Processes and in parts from the concepts of Object Oriented Programming, while Prolog serves also as an implementation language. In this concept, a Prolog program is solved by a number of communicating Prolog objects. Each object can have an own initial goal. Objects communicate by remote predicate calls. A remote predicate call results in an additional Prolog thread at the target object to prove the goal. Consequently, objects execute multiple Prolog programs in an interleaved manner. A general form of Prolog data base operations is proposed for communication of concurrently evaluating Prolog programs in the internal scope of an object. Non-determinism arising from concurrency is handled by help of an adapted form of the Guarded Commands concept of Dijkstra. A program under execution consists of concurrently acting nested objects while the description of the behaviour of objects is achieved in a modular way.