The SWI-Prolog executable plwin.exe can be started from the
StartMenu or by opening a .pl file holding Prolog 
program text from the Windows explorer.1The 
.PL file extension can be changed during installation. See section 
3.2. The installation folder (by default C:\Program Files\pl) 
contains a subfolder demo with the file likes.pl. 
This file can be opened in Prolog from the StartMenu, by opening likes.pl 
in the Windows explorer or using the following command in the Prolog 
application. Be sure to get the quotes right and terminate the command 
with a full-stop (.
?- [swi('demo/likes')].
If Prolog is started from the start menu it is passed the option
--win_app, which causes it to start in the local equivalent of
MyDocuments\Prolog. This folder is created if it does not 
exist.
After loading a program, one can ask Prolog queries about the program. The query below asks Prolog what food `sam' likes. The system responds with X = <value> if it can prove the goal for a certain X. The user can type the semi-colon (;)2On most installations, single-character commands are executed without waiting for the RETURN key. if (s)he wants another solution, or RETURN if (s)he is satisfied, after which Prolog will say Yes. If Prolog answers No, it indicates it cannot find any (more) answers to the query. Finally, Prolog can answer using an error message to indicate the query or program contains an error.
?- likes(sam, X). X = dahl ; X = tandoori ; ... X = chips ; No ?-
The SWI-Prolog console provided by plwin.exe has a menu for accessing the most commonly used commands. We assume not all menu entries need to be explained in details. We make some exceptions:
pl.ini that contains commonly 
used settings in comments.There are three options for editing. One is to run an editor of choice in a separate window and use the below described make/0 command to reload modified files. In addition to this option Prolog can be used to locate predicates, modules and loaded files by specifying the editor of choice for use with the edit/1 command described below. This is achieved by editing the personalisation file (see section 1.3) and follow the instructions in the comments.
Finally, you may wish to use the built-in editor called PceEmacs. 
This editor provides colourisation support based on real-time parsing 
and cross-reference analysis of the program. It is started using the 
command ?- emacs. or can be set as default editor in the 
personalisation file.
This section provides a very brief overview of important or commonly used SWI-Prolog predicates to control the environment.
\//.pl 
as well as the selected alternative) can be omitted. Here are some 
examples:
| ?- consult(likes). | Load likes.plfrom the current folder (see pwd/0). | 
| ?- ['C:/Program Files/pl/demo/likes'] | Load likes.plusing absolute path. | 
| ?- ['C: \\Program Files\\pl\\demo\\likes'] | Same using Windows-style path-name | 
.pl file in the explorer, 
edit this file. Also available from the menu.?- trace, run. and finally you can include it in 
your program to start tracing at a particular point or under a 
particular condition:
        ...,
        (var(X) -> trace ; true),
        ...,
Using MSVC or a compiler with compatible calling format you can write C or C++ code that can be loaded into SWI-Prolog and called as a predicate. You can also embed SWI-Prolog in C/C++ applications.
Details on how to interact with Prolog are in the
SWI-Prolog 
reference manual. The mailing list archives and TWiki web provide 
problems and solutions to the many problems that may occur. 
Documentation of the SWI-cpp.h C++ include file is 
available from the package 
documentation. This section only discusses some Windows specific 
issues.
First of all, add the include folder of the installation 
to the search-path for headers and the lib folder to the 
search-path for libraries. Both DLLs (extensions) or embedded 
executables should link to libpl.lib and, if appropriate, 
to msvcrt.lib, the multi-threaded DLL version of the MSVC 
runtime library.
To create extensions, simply use the Win32 DLL project template. To 
embed Prolog, care should be taken that Prolog can find the Prolog 
installation. For development, the simplest way to ensure this 
is by adding the installation bin folder to the %PATH% 
environment and call PL_initialise() as illustrated below.
PL_initialise() uses the path of the loaded libpl.dll 
module to find the Prolog installation folder.3When 
the C++ interface from SWI-cpp.h, these comments apply to 
the arguments for PlEngine().
  { static char *av[] = { "libpl.dll", NULL };
    if ( !PL_initialise(1, av) )
    { <error>
    }
  }
To create an executable that does not rely on Prolog one must create 
a saved-state of the required Prolog code and attach this to the 
executable. Creating saved-states is described with qsave_program/2 
in the reference manual. This can be attached to a state using the DOS 
command below to create final.exe from the executable 
produced by MSVC and the generated saved-state.
> copy /b file.exe+file.state final.exe
The plld.exe automates most of the above complications and 
provides compatibility for common tasks on many platforms supported by 
SWI-Prolog. To use it with MSVC, set the PATH, INCLUDE and LIB 
environment to find the DevStudio tools, headers and libraries as well 
as the Prolog ones described above. Now, an extension
myext.dll is created from the source myext.c 
using
> plld -shared -o myext myext.c
An embedded executable is created from C, C++ and Prolog files using
> plld -o myexe file.c ... file.pl ...
SWI-Prolog 5.5.x and later are UNICODE applications, requiring Windows NT or later (2000, XP, Vista). Although Microsoft provides a library that allows such program to run under Windows 95/98/ME, this library is licensed such that it cannot be used with Open Source software. Users of these old operating systems are forced to stick with version 5.4.7.
For 64-bit versions of Windows, such as Windows XP 64-bit edition and Windows vista 64-bit edition, we have two versions of SWI-Prolog. The w32pl* installers can be used to install the normal 32-bit version of Prolog. The w64pl* installers install a version for the AMD64 (= X64) architecture. There are no binaries for the IA64 architecture used in older 64-bit hardware. The reference manual has a section comparing these two versions.
By default, Prolog uses the .pl extension to indicate 
Prolog source-files. Unfortunately this extension conflicts with the 
Perl language. If you want to use both on the same Windows machine 
SWI-Prolog allows you to choose a different extension during the 
installation. The extension .pro is a commonly used 
alternative. If portability is an issue, it is advised to use the 
alternative extension only for the
load file, the source-file that loads the entire program and 
use the normal .pl extension for libraries and files loaded 
from other files.
The table below lists the installed components. Some components are marked (32-bits) or (64-bits). Most of this is because the 64-bits version is built using more recent tools and from more recent versions of required libraries using different naming conventions. This will probably be synchronised in the future.
| Programs | |
| bin\plwin.exe | Default Windows application for interactive use. | 
| bin\plcon.exe | Console-based version for scripting purposes. | 
| Utilities | |
| bin\plld.exe | Linker front-end to make single-file mixed Prolog/C/C++ executables. | 
| bin\plrc.exe | Manipulate Prolog resource files. | 
| Important directories | |
| bin | Executables and DLL files | 
| library | Prolog library | 
| boot | Sources for system predicates | 
| include | C/C++ header files for embedding or to create extensions | 
| xpce | XPCE graphics system | 
| xpce\prolog\lib | XPCE/Prolog library | 
| DLLs and other supporting files | |
| boot32.prc | Initial Prolog state (32-bits) | 
| boot64.prc | Initial Prolog state (64-bits) | 
| \bin\libpl.dll | The Prolog kernel | 
| \bin\plterm.dll | The window for plwin.exe | 
| \bin\pthreadVC.dll | POSIX thread runtime library (32-bits) | 
| \bin\pthreadVC2.dll | POSIX thread runtime library (64-bits) | 
| \bin\msvcr80.dll | Microsoft C runtime library (64-bits) | 
| Extension DLLs (plugins) | |
| \bin\cgi.dll | Gather CGI GET and POST arguments | 
| \bin\double_metaphone.dll | Soundex (sounds similar) | 
| \bin\memfile.dll | In-memory temporary `files' | 
| \bin\odbc4pl.dll | ODBC interface | 
| \bin\plregtry.dll | Windows registry interface | 
| \bin\porter_stem.dll | Porter stemming implementation | 
| \bin\random.dll | Portable random number generator | 
| \bin\rdf_db.dll | RDF database | 
| \bin\readutil.dll | Fast reading utility | 
| \bin\sgml2pl.dll | SGML/XML parser | 
| \bin\socket.dll | Prolog socket interface | 
| \bin\table.dll | Access structured files as tables | 
| \bin\time.dll | Timing and alarm library | 
| \bin\xpce2pl.dll | The XPCE graphics system | 
| \bin\zlib1.dll | Compression library (32-bit) | 
| \bin\zlibwapi.dll | Compression library (64-bit) | 
| \bin\zlib4pl.dll | Compression library interface | 
The filetype .pl or chosen alternative (see section 
3.2) is associated to plwin.exe. A chosen folder (default 
SWI-Prolog) is added to the start-menu holding shortcuts to Prolog and 
some related utilities. The following registry keys are in use. The 
64-bit version uses Prolog64 instead of Prolog as a 
key to accomodate installation of both versions on the same machine. 
Note that opening a
.pl file can be associated with one of the installed Prolog 
version only.
| HKEY_LOCAL_MACHINE \Software\SWI\Prolog | |
| fileExtension | Extension used for Prolog files | 
| group | Start-menu group | 
| home | Installation directory | 
| HKEY_CURRENT_USER \Software\SWI\Prolog | |
| localSize | Default local stack size (KB) | 
| globalSize | Default global stack size (KB) | 
| trailSize | Default trail stack size (KB) | 
| argumentSize | Default argument stack size (KB) | 
| HKEY_CURRENT_USER \Software\SWI\Plwin\Console | |
| Note: thread-windows store the same info in sub-keys | |
| Height | Height of window in character units | 
| Width | Width of window in character units | 
| X | Left-edge of window in pixel units | 
| Y | Top-edge of window in pixel units | 
| SaveLines | Number of lines available for scrollback | 
The installer asks for the admin execution level (Vista) 
to be able to write shortcuts and registry keys.
If you want a desktop entry for SWI-Prolog, right-drag
plwin.exe to the desktop and select `Create shortcut'. Then edit 
the properties and add --win_app to the commandline to make 
the application start in MyDocuments\Prolog.
The SWI-Prolog web-site is located at http://www.swi-prolog.org/. Part of the web is powered by TWiki, a wiki web that can be edited by any registered user and used to exchange ideas, problems and solutions. The web also provides access to the archive of the mailing list and allows to (de)register the mailing list. Finally, it incorporates Bugzilla, the Mozilla project bugtracking system, for reporting bugs and tracking issues.
The SWI-Prolog license allows it to be used in a wide variety of environments, including closed-source commercial applications. In practice, redistribution and embedding is allowed, as long as modifications to the SWI-Prolog source are published following the Free Software rules.
The SWI-Prolog kernel and foreign libraries are licensed under the Lesser General Public License (LGPL). The Prolog files are licensed under the normal General Public License GPL with an additional statement that allows for embedding in proprietary software:
As a special exception, if you link this library with other files, compiled with a Free Software compiler, to produce an executable, this library does not by itself cause the resulting executable to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the executable file might be covered by the GNU General Public License.
This exception is a proven construct used for libgcc, the GNU C-compiler runtime library.
There are several ways to support SWI-Prolog: