This page contains code examples, tips, known bugs and work-arounds,
and similar information which may not be available in the regular
documentation. All code examples may be freely downloaded.
For information that do not apply to the latest version of SICStus
Prolog 4, please see the separate pages for earlier releases of SICStus Prolog 4 and
for SICStus Prolog 3.
Entries are marked with SP3/SP4 to indicate that they apply to both
SICStus Prolog 3 and SICStus Prolog 4. Unmarked entries only apply to
SICStus Prolog 4.
Download Password Does Not Work (SP3/SP4)
The password for downloading the SICStus Prolog installers changes
frequently. Contact SICStus
Request if the password you received with your license information
no longer works.
Using SICStus Prolog from Microsoft Visual C++
Examples on building foreign resources and run-time systems under
Windows, with and without
examples use both C and C++. The same techniques can be used under
UNIX, for instance if you want to use the C compiler directly instead
Browse the SICStus 4 source or Download the SICStus 4 version
Mac OS X Prerequisites
If you want to use the tools
you need to install the Xcode development tools available, for free,
How to Re-Enter License Information under Windows (SP3/SP4)
The SICStus development system
spwin.exe) will prompt for license information if the
license entered during installation was invalid or has expired.
Note: On Windows Vista, and later, you need to use
"Run as administrator" to start
spwin.exe if you intend
to enter or change the license information. Otherwise it will be saved
in a location where
sicstus.exe will not find it.
Managing Extended Runtime License Information
Read More >>>.
Starting SICStus in Emacs on Windows
The following steps creates a Windows shortcut that, when clicked,
starts SICStus Prolog in an Emacs with Unicode enabled.
- Install SICStus Prolog 4.3.2. The following steps assumes it
is installed in
C:\Program Files\SICStus Prolog 4.3.2\.
- Download and install the latest version of
ntemacs from ntemacs.sourceforge.net.
- Right click on your windows desktop. Select "New shortcut".
- In the shortcut creation wizard, under "Type the location of the
item", use the Browse button to navigate to
- Type a name for the shortcut, e.g. "Emacs SICStus". Press the
- Now right click on the "Emacs SICStus" shortcut that you created and left
click on "Properties" on the pop-up menu.
- In the "Target:" field change from
C:\NTEmacs\bin\runemacs.exe to the following, all as one line:
C:\NTEmacs\bin\runemacs.exe --load "C:\Program Files\SICStus Prolog 4.3.2\emacs\sicstus_emacs_init.el" --funcall run-prolog --name "Emacs SICStus"
- You may wish to change the "Start in:" field to some folder where
you store your Prolog files.
- Click the "Apply" button.
- Now double click the shortcut "Emacs SICStus" on your desktop. It
should start Emacs and automatically start SICStus Prolog within
Emacs. (There may be a warning from Emacs about it being alpha
software, click it to make it go away).
- To verify that Unicode works, try the following at the SICStus top-level prompt:
atom_codes(A, [0x666E, 0x901A, 0x8BDD]).
It should say something like:
Known Bugs and Some Provisional Fixes
During compilation with the debugger switched on, it would spuriously stop at some
Documentation incorrectly mentioned non-ISO float syntax
Error handling of
mod/2 and friends.
Attributed variables that have been deterministically bound were not garbage collected.
Compiler warnings referring to variable names were ugly.
use_module/2 et al. with empty import list no longer generate
a message about “module ... imported into ...”.
Efficiency bug in
SP_query() and friends.
Decompiled code sometimes missed
Efficiency bug affecting
findall/3 and friends, and I/O.
Minor issue when writing terms if
'$VAR' has been declared as operators.
SP_put_float() will now fail if the argument is not finite (i.e. if the argument is ±inf or NaN).
Error handling of
library(atts): documentation and error handling.
wgraphs:transitive_closure/2: wrong answer for cyclic graphs.
left a choicepoint behind for same cases when an argument was a partial list.
ugraph:random_ugraph/3 would loop if its output argument failed to unify with the resulting graph.
ordsets:ord_intersection/4 left a choicepoint behind.
Finite but very large domains could crash.
Some propagators could access uninitialized data.