SWI-Prolog is a Prolog compiler in the Edinburgh Prolog family. SWI-Prolog offers
SWI-Prolog's weakest point is the speed of compiled code. Its virtual machine is based on the WAM (Warren Abstract Machine), but not very strongly. Care has been taken to allow for fast compilation, decompilation and traceability of compiled code. SWI-Prolog has no interpreter.
Notably programs carefully designed to get the most out of professional compilers like Quintus and BIM run often slow on SWI-Prolog. SWI-Prolog however has fast database manipulation (assert/retract) and efficient implementations for various meta-call predicates.
SWI-Prolog is especially useful for studying Prolog and prototyping. It is not just a `toy' Prolog system. It is being used by various large research projects as well as for the implementation of commercial applications.
SWI-Prolog itself has no graphical capabilities. The XPCE package may be connected to SWI-Prolog to create a powerful GUI development environment. A demo of XPCE for Windows-NT and '95 is available from
ftp://swi.psy.uva.nl/pub/xpce/Windows/bin/
A full version for PC/Linux from:
ftp://swi.psy.uva.nl/pub/xpce/linux/
SWI-Prolog is designed and implemented by Jan Wielemaker while employed at the University of Amsterdam, department of Social Science Informatics (SWI). E-mail: jan@swi.psy.uva.nl.
The primary ftp-site for SWI-Prolog is swi.psy.uva.nl (145.18.114.17).
The most useful files are listed below. Please check the actual contents of the directory, as I'm regulary forgetting to update this file after installing new public versions.
There is a mailing list for SWI-Prolog specific issues. I use this list for announcing new releases, ports, etc. Users may use this forum to discuss porting problems and SWI-Prolog specific questions. Please use other media for general Prolog questions.
To apply, E-mail to prolog-request.
The primary platform for SWI-Prolog is Unix. The author both uses SunOs 4.1.3, Solaris 2.5 and Linux (1.0 and later). SWI-Prolog is configured for a specific target machine and operating system using GNU autoconf (2.7). SWI-Prolog is written in ANSI C and should configure for most Unix machines having an ANSI C compiler and 32-bit wide integers and pointers.
It is generally advised to use the GNU gcc compiler. Using gcc increases the chance that the system configures and compiles correctly and the implementation of the SWI-Prolog virtual machine interpreter exploits GCC language extensions to improve performance.
If you are using a PC running Linux and plan to use the foreign language interface, you must install SWI-Prolog as an ELF binary. The ELF version can load ELF shared objects files (`.so files').
The reference manual for SWI-Prolog is available on-line. The relevant commands are:
An HTML version of the reference manual is here.
A PostScript version of the full reference manual is available can be obtained by ftp from ftp://swi.psy.uva.nl/pub/SWI-Prolog/refman/. Finally, the source archive contains the LaTeX sources for the manual.
SWI-Prolog may be freely copied, modified and used for non-commercial use. This implies you may use the system for your own education and fun. Universities and other non-profit organisations may use the system to achieve their goals. Commercial institutions may use SWI-Prolog for research purposes only. It is not allowed to embed SWI-Prolog in a commercial application without written permission from the author.
The conditions for a commercial licence can be requested here.
As with all free software products, their is absolutely no warranty for SWI-Prolog. Any use of SWI-Prolog is completely at your own risk.