Qulog/TeleoR Home Page
QuLog is a higher-order logic/functional/string processing language with an imperative rule language sitting on top, defining actions. QuLog's action rules are used to program multi-threaded communicating agent behaviour. Its declarative subset is used for the agent's belief store. The language is flexibly typed and allows a combination of compile time and run-time type checking.
It is a fully integrated in that function calls can appear as or inside arguments to relation calls, and relational queries can be used as guards of function rules. It has sets as a separate data type from lists with set <-> list convertors. Both can be created using Trm::Query comprehension expressions.
Sets are manipulated using union, intersection and difference operators. Lists are manipulated as in Prolog but also using non-deterministic pattern matching. Similar pattern matching is used for string processing as a precursor to DCG parsing. An 'in' primitive can be used to access elements of sets, lists and characters in strings.
QuLog supports type safe meta-level programming to complement its type safe higher order programming.
As mentioned above, using its action rules and action primitives multi-threaded message communicating agent applications can be created with the agents communicating using the companion Pedro publish/subscribe and destination addressed communications server. Such an agent application can also receive and send MQTT notifications routed via an MQTT publish/subscribe server.
Finally, the teleor extension allows program files to be consulted containing TeleoR procedures as well as QuLog rules. This extension includes a generic agent shell that can be launched to execute calls to TeleoR procedures as tasks. It can be configured by including specially named QuLog action procedures and relations in your program file, as explained in the toolsRM.pdf document in the tutorial directory.
To support use of TeleoR robotic agent programs with robots and simulations that use ROS, there is an example Python program in the ROS directory that will act as an interface between our Pedro inter-agent and inter-process communications server and an invocation of ROS. This program and information on how to modify it for a particular ROS architecture, are in the examples/ROS directory of the QuLog distrbution.
Note: The current implementation of Qulog is built on top of
Qu-Prolog which needs to be downloaded and installed before Qulog can be built and run.
The inter-process communication used by Qulog uses Pedro and so that also needs
to be downloaded and installed.
Qulog files have a .qlg extension but the examples below have a .txt so that they can be read in the browser.
Latest Beta Release: Date: 19/04/15
Download Qulog 0.4
This is a Beta release of Qulog - please report any problems to us.
- Reconsult added
- expression queries now use ! NEWLINE rather than . NEWLINE
If you download Qulog we would appreciate you emailing us at
and letting us know where you are from and what your interest is.
If you let us know we will send you a short email when the system is updated.
Beta Release: Date: 26/02/15
Download Qulog 0.3
For more information about Qulog, contact Peter Robinson at: firstname.lastname@example.org.
Feedback on any aspect is also welcome.