QuLog: A logic based language for engineering multi-agent applications
Speaker: Keith Clark,Emeritus Professor at Imperial College London
Title: QuLog: A logic based language for engineering multi-agent applications
QuLog is a higher order, flexibly typed logic+function rule language with an upper layer of action rules. It has evolved out of many years of teaching and using a multi-threaded Prolog system (Qu-Prolog) for multi-agent applications.
It is much more declarative and concise than Prolog. Certain implicit quantifications must be made explicit making QuLog syntax closer to that of predicate logic. Relation calls can have function call and set expression arguments, and function rules can query relations in their guards. The allowed call patterns - the modes of use - of relations must be declared, allowing compile time checks that calls to primitive and program defined relations conform to intended use.
- QuLog agent is a multi-threaded process with threads programmed using action rules - which comprise the behavioural knowledge of the agent. The threads query and atomically update facts that define a special class of dynamic relations. These updatable facts are the contingent beliefs of the agent. The beliefs are queried using the rule defined relations and functions - which comprise the declarative knowledge of the agent.
A key feature of the language for building multi-agent apps is its type and mode safe remote query mechanism. Embedded in any relation rule can be a conjunction of conditions to be evaluated against the beliefs of another agent process. This embedded query is type and mode checked as though it were a local query, and flagged at compile time as invalid if these tests fail. It is evaluated using the QuLog meta query action. This again checks for type and mode correctness.
This presentation of QuLog will be nearly all example driven. Step by step the language features will be introduced using small example programs. The final example will be a simple information agent that answers type and mode safe queries from other agents by forking light weight, time limited, auxiliary threads that may query other agents.
Keith Clark has first degrees in both Mathematics and Philosophy and a PhD in Computational Logic. His first CS lecturing position was at Queen Mary College, London in 1969. With a colleague, he developed a new course on automata theory more suited to CS students, based on a novel approach proposed by Dana Scott. The outcome was a text book, “Programs, Machines and Computation” published in 1975.
In 1975, he moved to Imperial College to join Robert Kowalski in setting up the Logic Programming group, which became the Logic and AI section of the Computing Department. He is now an Emeritus Professor at Imperial, an Honorary Professor at UQ Brisbane, UNSW Sydney and UC London. This year he is also a Visiting Researcher at Stanford University.
His research has covered: theoretical results in computational logic, design and implementation of new logic programming languages, including concurrent languages, rule languages for programming multi-tasking communicating software and robotic agents. With students he has explored AI, multi-agent and robotic control applications of these languages.
He has consulted for the Japanese Fifth Generation Project, Hewlett Packard, IBM, ICL, Fujitsu and two start-ups, one in Sweden and one in California. He is a co-founder of the Prolog software and consultancy company Logic Programming Associates (LPA).
He has taught computing courses at Stockholm and Uppsala Universities in Sweden, Syracuse, UC Santa Cruz and Stanford Universities in the US, University of Queensland, Makerere University in Uganda, and at the British University in Egypt. Many years ago he taught mathematics at a high school in Sierra Leone.