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.

SICStus Prolog
Original author(s)Mats Carlsson
Developer(s)RISE SICS
Initial release1986; 38 years ago (1986)
Stable release
4.9.0 / December 18, 2023; 3 months ago (2023-12-18)
Written inC, Prolog
Operating systemCross-platform
TypeLogic programming
LicenseProprietary
Websitesicstus.sics.se

History edit

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.[1]

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.[2]

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.[1]

Features edit

SICStus is an ISO-conforming Prolog implementation based on the Warren Abstract Machine, which has a strong focus on performance and stability.[1] 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,[3] for constraint solving over real and rational numbers, and a high-performance native implementation of CLP(FD) for constraint solving over integers.[4] 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.[1]

SICStus includes a modified version of the plunit unit testing library originally developed for SWI-Prolog and a custom integrated development environment named SPIDER.[1]

Influence edit

SICStus is used in many commercial applications, and has also served as the basis for other logic programming systems.[1] 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.[1] 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.[1]

See also edit

References edit

  1. ^ a b c d e f g h Körner, Philipp; Leuschel, Michael; Barbosa, João; Costa, Vítor Santos; Dahl, Verónica; Hermenegildo, Manuel V.; Morales, Jose F.; Wielemaker, Jan; Diaz, Daniel; Abreu, Salvador; Ciatto, Giovanni (2022). "Fifty Years of Prolog and Beyond". Theory and Practice of Logic Programming. 22 (6): 776–858. doi:10.1017/S1471068422000102. hdl:10174/33387. ISSN 1471-0684.
  2. ^ Codognet, Philippe; Diaz, Daniel (1995-06-16), "wamcc: Compiling Prolog to C", Logic Programming, The MIT Press, pp. 317–332, ISBN 978-0-262-29143-9, retrieved 2023-12-18
  3. ^ Holzbaur, Christian (1995). "OEFAI clp(q,r) Manual Revision 1.3.2,". ÖFAI Technical Reports Online (95–09).
  4. ^ Geleßus, David; Leuschel, Michael (2022). "Making ProB Compatible with SWI-Prolog". Theory and Practice of Logic Programming. 22 (5): 755–769. arXiv:2205.04373. doi:10.1017/S1471068422000230. ISSN 1471-0684.

Further reading edit

As of 16 Dec 2023, this article is derived in whole or in part from Fifty Years of Prolog and Beyond, authored by Philipp Körner, Michael Leuschel, Joao Barbosa, Vitor Santos Costa, Veronica Dahl, Manuel V. Hermenegildo, Jose F. Morales, Jan Wielemaker, Daniel Diaz, Salvador Abreu, Giovanni Ciatto. The copyright holder has licensed the content in a manner that permits reuse under CC BY-SA 3.0 and GFDL. All relevant terms must be followed.