This seminar will present a concurrent OO logic programming language implemented on top of the multi-threading and inter-thread communication facilities of Qu-Prolog. The language is highly suited to the implementation of logic based agents and DAI applications. The state of an object, an instance of a class, can be represented as a mixture of asserted clauses for a set of dynamic predicates and values for a set of state variables. The 'methods' of an object are a set of Prolog clauses which define the static predicates for its class. These access
and manipulate the object state, and invoke the methods of other objects using remote queries. Objects can be queried about the predicates they
support. The invocation of a method of another object is a remote query because each object is active and run as a separate
Qu-Prolog thread. This thread may or may not be executing in the same Qu-Prolog application, or on the same host machine. The invocation of a method in another object is transparent to its location. In addition, objects can be given public names such as:
expert1:email@example.com. This facilitates the setting up of distributed applications. The inter-thread
communication system uses the store and forward symbolic message transport system developed by Imperial College and Fujitsu. This is
being proposed as a FIPA standard. It supports communication through firewalls (where allowed), interrupted connection and mobile objects. A
network of publically named course grained objects can be used to implement co-operative expert systems. Special initial action and
timeout methods allow the concurrently executing objects to exhibit pro-active behaviour - to be truly active objects.
The key features of the language will be introduced through a series of example programs.