SICStus Prolog Homepage WELCOME TO
SICStus Prolog
Leading Prolog Technology
  SICStus Home > Don't panic! Download for Evaluation
Don't panic!

Don't panic!

Don't Panic!

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 spld/splfr. The 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 of spld and splfr.

Browse the SICStus 4 source or Download the SICStus 4 version

Mac OS X Prerequisites

If you want to use the tools spld and splfr you need to install the Xcode development tools available, for free, from Apple.

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
  • 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 C:\NTEmacs\bin\runemacs.exe
  • Type a name for the shortcut, e.g. "Emacs SICStus". Press the "Finish" button.
  • 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 structs predicates.
  • Documentation incorrectly mentioned non-ISO float syntax ±inf and ±nan.
  • 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 var/1 and nonvar/1 tests.
  • Efficiency bug affecting call_cleanup/2, findall/3 and friends, and I/O.
  • Minor issue when writing terms if '.' or '$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 bb_get/2, bb_put/2, bb_delete/2, bb_update/3.
  • library(atts): documentation and error handling.
  • ugraphs:transitive_closure/2 and wgraphs:transitive_closure/2: wrong answer for cyclic graphs.
  • lists:same_length/2, lists:same_length/3, lists:rotate_list/2 and lists:rotate_list/3 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.
  • CLPFD:
    • Finite but very large domains could crash.
    • Some propagators could access uninitialized data.

Valid HTML 4.01 Transitional