Qu-Prolog Home Page

Qu-Prolog is an extended Prolog designed primarily as a prototyping language and tactic language for interactive theorem provers. It is the implementation language for the Ergo theorem prover. 

Qu-Prolog provides support for symbolic computation on notations which appear in mathematics and in specification languages such as Z. Highlights include support for arbitrary quantifiers with parallel bindings and optional typing information, and support for higher-order notations such as function-valued expressions. The unification algorithm is correspondingly extended to support these features.

Qu-Prolog is multi-threaded and provided high-level communication between threads, processes and machines.Together, these features provide a simple, yet powerful mechanism for agent programming.

Distinctive features of Qu-Prolog include:


Qu-Prolog Terms

Assuming all and lambda has been declared as a quantifier (e.g. op(500, quant, all)) and x and y have been declared as object variable prefixes (e.g. obvar_prefix([x,y]) ) then the following are valid Qu-Prolog terms.


Delayed Goals

Any goal can be delayed using delay_until/2 and Qu-Prolog can generate both unification delays and not-free-in delays during unification. Users can access the delays with get_delays/1.


Threads

A thread is created with the goal thread_fork(ThreadID, ThreadGoal)  that starts executing the goal ThreadGoal in a new thread named ThreadID. Threads are controlled with calls to predicates such as thread_yield, thread_sleep, thread_wait_on_goal and thread_kill.


Communication

Qu-Prolog uses the Pedro subscription/notification server for interprocess communication. Qu-Prolog threads can subscribe to messages of a particular pattern and send notifications.

Pedro also provides peer-to-peer messages and so Qu-Prolog threads can communicate using symbolic addresses that are similar to email addresses. The following are examples of the use of symbolic peer-to-peer communication.

There is also a message_choice predicate that provides powerful message buffer searching.


Examples


Manuals


Downloads

Qu-Prolog is provided free for any non-comercial use and runs on Unix and Linux machines. The release comes with the above manuals and example programs.


New Release: Qu-Prolog 9.1 Date:23/08/11

Download Qu-Prolog 9.1: Qu-Prolog 9.1 (1Mbytes)
Download Qu-Prolog for Windows installer: QuProlog9.1_setup.exe


Release: Qu-Prolog 9.0 Date:14/07/11

Download Qu-Prolog 9.0: Qu-Prolog 9.0 (1Mbytes)
Download Qu-Prolog for Windows installer: QuProlog_setup.exe


Release: Qu-Prolog 8.12 Date:24/11/10
Thanks again to Paulo Moura for various suggestions and bug reports.

Download Qu-Prolog 8.12: Qu-Prolog 8.12 (1Mbytes)


Release: Qu-Prolog 8.11 Date:18/06/10
NOTE:Qu-Prolog 8.11 requires Pedro 1.5 or greater for communications because of the change of connection protocol.
Thanks to Paulo Moura for various suggestions and bug reports.

Download Qu-Prolog 8.11: Qu-Prolog 8.11 (1Mbytes)


Release: Qu-Prolog 8.10 Date:01/12/09

(Thanks to Rhys Weatherley for suggestions for the 64 bit port and to Ulrich Neumerkel for help with setup_call_cleanup and other suggestions.)

Download Qu-Prolog 8.10: Qu-Prolog 8.10 (1Mbytes)


Release: Qu-Prolog 8.9


Download Qu-Prolog 8.9: Qu-Prolog 8.9 (1Mbytes)


Release: Qu-Prolog 8.8


Download Qu-Prolog 8.8: Qu-Prolog 8.8 (1Mbytes)


Release: Qu-Prolog 8.7


Download Qu-Prolog 8.7: Qu-Prolog 8.7 (1Mbytes)


Release: Qu-Prolog 8.6


Download Qu-Prolog 8.6: Qu-Prolog 8.6 (1Mbytes)


Release: Qu-Prolog 8.5


Download Qu-Prolog 8.5: Qu-Prolog 8.5 (1Mbytes)


Release: Qu-Prolog 8.3


Download Qu-Prolog 8.3: Qu-Prolog 8.3 (1Mbytes)


Release: Qu-Prolog 8.2


Download Qu-Prolog 8.2: Qu-Prolog 8.2 (1Mbytes)


Release: Qu-Prolog 8.1

New features:

Download Qu-Prolog 8.1: Qu-Prolog 8.1 (1Mbytes)


Release: Qu-Prolog 8.0

New features:

Download Qu-Prolog 8.0: Qu-Prolog 8.0 (1Mbytes)


Release: Qu-Prolog 7.4

New features:

Download Qu-Prolog 7.4: Qu-Prolog 7.4 (1Mbytes)


Release: Qu-Prolog 7.2

New features:

Download Qu-Prolog 7.2: Qu-Prolog 7.2 (1Mbytes)


Release: Qu-Prolog 7.1

New features:

Download Qu-Prolog 7.1: Qu-Prolog 7.1 (1Mbytes)


Release: Qu-Prolog 7.0

New features:

Download Qu-Prolog 7.0: Qu-Prolog 7.0 (1Mbytes)


Release: Qu-Prolog 6.7

New features:

Download Qu-Prolog 6.7: Qu-Prolog 6.7 (1Mbytes)

Release: Qu-Prolog 6.5

New features:

Download Qu-Prolog 6.5: Qu-Prolog 6.5 (1Mbytes)

Release: Qu-Prolog 6.4

New features:
(Thanks to Paulo Moura for suggestions and bug reports.)

Download Qu-Prolog 6.4: Qu-Prolog 6.4 (1Mbytes)

Release: Qu-Prolog 6.3

New features:
Download Qu-Prolog 6.3: Qu-Prolog 6.3 (1Mbytes)


Release: Qu-Prolog 6.2

New features:
Apart from the modified Tcl/Tk interpreter, Qu-Prolog 6.2 will run on MacOSX - see the INSTALL file for details.

Download Qu-Prolog 6.2: Qu-Prolog 6.2 (1Mbytes)


For more information about Qu-Prolog, contact the Peter Robinson at: pjr@itee.uq.edu.au.

Feedback on any aspect is also welcome.