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 user quide.

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 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.


Examples
Qulog files have a .qlg extension but the examples below have a .html so that they can be read in the browser and use the same syntax hightlighting as in emacs and the quled editor.


Documentation



Downloads


Full Release: Date: 17/09/21

Download Qulog 1.0 (1Mbytes)

NOTE: this release requires at least QuProlog 10.5.


Latest Beta Release: Date: 01/03/20

Download Qulog 0.7 (1Mbytes)
Download Windows installer qulog0.7_setup.exe

NOTE: this release requires at least QuProlog 10.5.

This is a Beta release of Qulog - please report any problems to us. We are currently finalizing a full release of Qulog that includes fixes to the type checker and minor improvements in the syntax and semantics. For this reason there are some minor inconsistencies in the manuals. Hopefully the supplied examples will help resolve problems with these inconsistencies.
If you download Qulog we would appreciate you emailing us at pjr@itee.uq.edu.au 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.

  • while and inhibit have been replaced by continue_while and commit_while - see example TR programs

Beta Release: Date: 05/06/19

Download Qulog 0.6 (1Mbytes)
This is a Beta release of Qulog - please report any problems to us. We are currently finalizing a full release of Qulog that includes fixes to the type checker and minor improvements in the syntax and semantics. For this reason there are some minor inconsistencies in the manuals. Hopefully the supplied examples will help resolve problems with these inconsistencies.
If you download Qulog we would appreciate you emailing us at pjr@itee.uq.edu.au 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: 19/04/15

Download Qulog 0.4 (1Mbytes)
  • Reconsult added
  • expression queries now use ! NEWLINE rather than . NEWLINE

Beta Release: Date: 26/02/15

Download Qulog 0.3 (1Mbytes)

For more information about Qulog, contact Peter Robinson at: pjr@itee.uq.edu.au.

Feedback on any aspect is also welcome.