# SICStus Prolog

SICStus Prolog is a proprietary, ISO-conforming implementation of the logic programming language Prolog. It is developed by the Swedish Institute of Computer Science since 1985 and puts a strong focus on performance and scalability.

## History

Around 1985, the Swedish Institute of Computer Science (SICS) was founded and Mats Carlsson joined SICS to develop a Prolog engine that would be a platform for research in or-parallelisation of Prolog. This work was performed in the context of the informal Gigalips project, involving David H.D. Warren at SRI International and researchers from Manchester and Argonne National Laboratory, as well as and-parallel efforts. This resulted in quite mature or-parallel Prologs, such as Aurora and MUSE. The objective of these Prologs was to achieve effective speedups through or-parallel execution transparently for the programmer while supporting full Prolog. This led to SICS distributing SICStus Prolog, which quickly became popular in the academic environment.
A preliminary specification of SICStus existed in 1986, drawing inspiration from DEC-10 Prolog as well as from Quintus. In addition to the open-source nature, powerful reasons for its popularity were the compatibility with the DEC-10 and Quintus Prolog de-facto standards, very good performance, and compact generated code. Execution profiling and native code compilation were also added later. At the end of the 80s, the Swedish Funding Agency and several companies funded the industrialization of SICStus, which eventually became a commercial product.
By 1995, SICStus was considered a de-facto reference the performance of Prolog implementations.
In 1998, SICS acquired Quintus Prolog and a number of its features made their way into newer SICStus Prolog versions. It also supports several constraint domains, including a powerful finite domain solver. The SICStus codebase is still actively maintained by SICS.

## Features

SICStus is an ISO-conforming Prolog implementation based on the Warren Abstract Machine, which has a strong focus on performance and stability. It also provides support for web-based applications. SICStus supports several constraint domains, incorporating an externally developed implementation of the constraint logic programming library CLP(R) based on attributed variables, for constraint solving over real and rational numbers, and a high-performance native implementation of CLP(FD) for constraint solving over integers. It features many essentials for constraint solvers, such as coroutines, attributed variables, and unbounded integers. The block coroutining declaration is particularly efficient. It also incorporates many of the characteristics, features, and library modules of Quintus Prolog. Since release 4.3, SICStus also contains a JIT (just-in-time) compiler to native code, but currently has no multithreading or tabling support.
SICStus includes a modified version of the plunit unit testing library originally developed for SWI-Prolog and a custom integrated development environment named SPIDER.

## Influence

SICStus is used in many commercial applications, and has also served as the basis for other logic programming systems. As part of the Gigalips project, SICStus was the basis for the original development of the and-parallel Prolog implementation &-Prolog, which later developed into the Ciao system. The reference implementation of the logic programming language Gödel, that first appeared around 1992, was built on top of SICStus Prolog, employing a different syntax style.