Agents as Multi-threaded Logical Objects

Keith L. Clark and Peter Robinson


In this paper we describe a distributed object oriented logic programming language, which is an extension of the multi-threaded Qu-Prolog described in Programming internet distributed DAI applications in Qu-Prolog. An object is a collection of threads deductively accessing and updating a shared logic program. The key features of the language, such as static and dynamic object methods and multiple inheritance, are illustrated through a series of small examples. We show how we can implement object servers, allowing remote spawning of objects, which we can use as staging posts for mobile agents. We give as an example an information gathering mobile agent that can be queried about the information it has so far gathered whilst it is gathering new information. Finally we define a class of co-operative reasoning agents that can do resource bounded inference for full first order predicate logic, handling multiple queries and information updates concurrently. We believe that the combination of the concurrent OO and the LP programming paradigms produces a powerful tool for quickly implementing rational multi-agent applications on the internet.

Click here for a compressed PostScript version of the paper (, 145554 bytes).