Abstract
-------------------
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:objects@everest.csee.uq.au.edu. 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.