Engineering Agent Applications in QuLog

Engineering Agent Applications in QuLog

Presenter

  • Prof. Keith Clark - Imperial College, UK

Abstract

QuLog is an integrated higher order logic+functional+action rules programming language. It has evolved out of many years of teaching and using a multi-threaded Prolog system for multi-agent applications. It is a state-of-the-art flexibly typed logic based language for agent software engineering.

A QuLog agent is a multi-threaded process where each thread typically executes a non-terminating recursively defined action which queries a BeliefStore of dynamic facts using rule defined relations and functions, which are the declarative knowledge of the agent. Its action rules are its completely separate behavioural knowledge with a distinct syntax. This clean separation declarative and behavioural knowledge is a major difference between QuLog and Prolog.

QuLog relation rules also more declarative than those of Prolog and the ability to have function calls and set expressions as arguments of relation conditions . To aid comprehension of written programs, and to keep the syntax simple, there is no conditional, disjunction, lambda or let. The expressivity can be recovered by defining auxilairy relations and functions with names indicative of their semantics.

Qulog supports and requires type and mode safe meta-programming. Function call evaluation is strict. Communication between Qulog agent processes and processes in Python, Java or C/C++ processes, is via a high level publish/subscribe and addressed message router, Pedro, using email style identifiers for addressed communication. The publish/subscribe feature of Pedro provides some of the functionality of an agent match maker.

The presentation of QuLog will overview its key features emphasising the use of its action rules to program multi-tasking communicating agents each possible controlling robotic resources in a shared environment.