Professor Keith L. Clark

Department of Computing
Imperial College
180 Queen's Gate

Honorary Visiting Professor, Royal Holloway, University of London
Visiting Professor, University of Queensland                                                                                                                              
Communicating Agents Research Group


+44 20 8594 8284

+44 20 7594 8732
k.clark at


Research Interests

  • OO extensions of LP languages
  • multi-threaded symbolic programming languages
  • multi-agent systems and multi-threaded agent architectures
  • cognitive robotics
  • teleo-reactive procedures and plans
  • complex event processing
  • ambient intelligence


Old Papers that may still be of interest

·       Negation as Failure(1978)

·       Unpublished Draft Monograph (part of my PhD thesis): Predicate Logic as a Comptational Formalism(1980)

·       Chapter 3 of above giving a fixed point semantics for LP treating partially instantiated answers to queries (1979)

·       Logic Programming Schemes and their Implementations(1990)
(large pdf file, 3941368  bytes)

Selected Papers

·       April: Agent Process Interaction Language (1995)

·       Agents as Clonable Objects with Knowledge Base State (1996)

·       Intelligent Routing based on Active Patterns as the basis for the integration of distributed information systems (1997)

·       A Harness Language for Cooperative Information Systems (1997)

·       Content based routing as the basis for intra-agent communication (1998)

·       Distributed Object Oriented Logic Programming (1994)

·       Distributed Object Oriented Logic Programming as a Tool for Enterprise Modelling (1996)

·       Programming internet distributed DAI applications in Qu-Prolog (1998)

·       A Framework for Developing Reactive Information Agents with Heterogeneous Communication Capabilities (2000)

·       Concurrent programming on the web with Webstream (2000)

·       Multi-threading and Message communication in Qu-Prolog (2001)

·       Component based agent construction (2002)

·       Agents as Multi-threaded Logical Objects (2002)

·       Multi-threaded communicating agents in Qu-Prolog(2006)



·       Go! -- A Multi-paradigm Programming Language for Implementing Multi-threaded Agents(2003)

·       Go! for multi-threaded deliberative agents(2003)

·       Ontology schema for an agent belief store(2005)

·       Ontology Oriented Programming in Go! (2005)  

·       A multi-agent architecture for collaborative filtering(2003)

·       Distributed Logic Programming using Mobile Agents (2004)

·       A Hybrid, Teleo-Reactive Architecture for Robot Control(2006)

·       Ballroom etiquette: a case study for norm-governed multi-agent systems (2006)

·       ssContract Related Agents (2006)

·       SAGE: A Logical Agent-Based Environment Monitoring and Control System (2009)

·       Pedro: A publish/subscribe server using Prolog technology (2009)


Animation of Multi-tasking Teleo Reactive Agent controlling two simulated robotic arms in four tasks

The agent uses the arms to build towers of blocks distibuted over three tables. The demo has it building 4 towers concurrently using the arms in parallel whenever possible but in such a way that the tasks do not intefere with one another. Nor do the arms clash although both must occasionally be used to access a shared table. The control program for each task is an multi-tasking/multi-resource using extension of Nilsson's program controlling a single arm building a single tower of Teleo Reactive Block Tower Builder.

There is no planning or re-planning. The TR procedures are goal directed flexible universal 'plans' for building block towers from any initial configuration of blocks over the three tables. The program responds appropriately and rapidly to help or hindrance, as does Nilsson's program. In addition, because the agent must have beliefs about which tower building tasks it is engaged in so that if asked to do a new tower building task it can reject the new request if it would use a block already in use, the tasks can intentionally co-operate with one another when unpiling blocks. A task can check if a block is needed by another task and switch the table on which a block is placed that must be removed to uncover a block. This is demonstrated in the video. The intentional co-operation increases the parallel use of the arms.

The extension to Nilsson's TR procedures that is used has resource arguments in procedures, new forms of TR rules, and the concept of task atomic procedures. The last control the fair sharing of the robot arm and table resources between the tasks. The extensions are covered in a forthcoming book:

Programming Robotic Agents: A Multi-tasking Teleo-Reactive Approach, K. L. Clark and P. J. Robinson

Below is a pointer to a UTube video of the simulated robot arms with a voice over explanation of the behaviour

The video runs that arms quite slowly. Below the link you can download a zipped mp4 file that runs the arms much faster.

·       The two arm video with voice over partial explanation (33.6MB)

·       A zip file of fast arm video with a little more explanation (18.9MB)


Colleagues with related research interests

·       Robert Cunningham

·       Robert Kowalksi

·       Marek Sergot

·       Fariba Sadri

·       Krysia Broda

·       Alessandra Russo

·       Jiefei Ma

·       Peter Robinson