SWI-Prolog Information Sheet


Jan Wielemaker

Table of Contents

1 What is SWI-Prolog?

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.

2 Graphical 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/

3 Author

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.

4 FTP Site

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.

5 Mailing list

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.

6 Platforms

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

7 Documentation

The reference manual for SWI-Prolog is available on-line. The relevant commands are:

?- help.
Explain the help-system briefly.
?- help(Topic).
Show help-page on topic.
?- apropos(String).
Show all topics holding `String' in their summary documentation.

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.

8 Copying policy

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.

9 Warranty

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.