Download Page
What is SWI-Prolog?
SWI-Prolog is a Prolog compiler, targeting primarily at research
and education. Its strongest points are
-
Very fast compilation.
-
Robust.
-
Small. Installed development compiler requires about
2 MB of your hard disk. For embedding, the SWI-Prolog kernel is about 350
KBytes. Can be in a shared object (DLL).
-
Scales well for large applications. Hash-tables are
automatically rehashed.
-
Comprehensive set of built-in predicates, covering
Edinburgh Prolog, and large parts of The ISO standard,
Quintus and SICStus Prolog.
-
Flexible and fast interface to the C- and
C++-Language. The interface allows for calling both-ways, handling
of non-determinism both ways and embedding of the SWI-Prolog kernel
in C/C++ projects.
-
The goodies: modules (upward compatible to Quintus
and SICStus), garbage-collection (transparent to C/C++-code),
last-call optimisation, Dynamic expansion of the runtime stacks, ISO
exception-handling (including C/C++ interface for catching and throwing
exceptions).
-
Execution profiling (time and call statistics). Unix
only.
-
Portable to many platforms, including almost all Unix
platforms, Win32 (Windows-95, 98 and NT) and some more obscure ports.
Both 32-bits and 64-bits machines are supported.
-
Machine-independent saved-states (save on one platform,
run using the virtual machine of another platform).
-
Distributed in source and binary on some
platforms. You can easily recompile it for a different environment. Sources
are plain ANSI-C, configured automatically using GNU autoconf.
The reference manual for SWI-Prolog is also 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.
On Unix installations, the manpages pl.1, plld.1 and
plrc.1 provide documentation on the command-line options of these
commands.
Related resources
-
Organizations
-
General Prolog resources on the WEB
-
Resources mentioned as SWI-Prolog compliant