SICStus Prolog—The first 25 years

SICStus Prolog has evolved for nearly 25 years. This is an appropriate point in time for revisiting the main language and design decisions, and try to distill some lessons. SICStus Prolog was conceived in a context of multiple, conflicting Prolog dialect camps and a fledgling standardization effort. We reflect on the impact of this effort and role model implementations on our development. After summarizing the development history, we give a guided tour of the system anatomy, exposing some designs that were not published before. We give an overview of our new interactive development environment, and describe a sample of key applications. Finally, we try to identify key good and not so good design decisions.

[1]  Ulrich Neumerkel,et al.  A Novel Term Compression Scheme and Data Representation in the BinWAM , 1994, PLILP.

[2]  Bart Demoen,et al.  The K.U.Leuven CHR system: Implementation and application , 2004 .

[3]  Ralph Clarke Haygood Native Code Compilation in SICStus Prolog , 1994, ICLP.

[4]  Joachim Schimpf Logical Loops , 2002, ICLP.

[5]  V HermenegildoManuel,et al.  Parallel execution of prolog programs , 2001 .

[6]  Walter G. Wilson Use of Logic Programming for Complex Business Rules , 2005, ICLP.

[7]  Mats Carlsson,et al.  Variable Shunting for the WAM , 1991 .

[8]  Michael Brady,et al.  Open Prolog: a Structure-Sharing Prolog for the Macintosh , 2005 .

[9]  Pascal Van Hentenryck,et al.  Constraint processing in cc(fd) , 1992 .

[10]  M. Carlsson Boolean constraints in SICStus Prolog , 1991 .

[11]  HaridiSeif,et al.  Garbarge collection for Prolog based on WAM , 1988 .

[12]  G. Amdhal,et al.  Validity of the single processor approach to achieving large scale computing capabilities , 1967, AFIPS '67 (Spring).

[13]  K. L. Clark,et al.  Logic Programming , 1982 .

[14]  Michael M. Gorlick,et al.  Timing Prolog Programs without Clock , 1987, International Conference on Spoken Language Processing.

[15]  Donald Michie,et al.  Expert systems in the micro-electronic age , 1979 .

[16]  Mats Carlsson,et al.  Multiplex dispensation order generation for pyrosequencing , 2004 .

[17]  Peter Van Roy,et al.  High-performance logic programming with the Aquarius Prolog compiler , 1992, Computer.

[18]  John G. P. Barnes,et al.  High Integrity Software - The SPARK Approach to Safety and Security , 2003 .

[19]  Richard A. O'Keefe,et al.  Efficient Implementation of a Defensible Semantics for Dynamic PROLOG Code , 1987, International Conference on Logic Programming.

[20]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

[21]  Bart Demoen,et al.  Indexing Prolog Clauses , 1989, NACLP.

[22]  Andrew Taylor,et al.  High performance Prolog on a RISC , 1991, New Generation Computing.

[23]  Khayri A. M. Ali,et al.  The muse approach to Or-parallel prolog , 1990, International Journal of Parallel Programming.

[24]  Roberto Bagnara Foreign Language Interfaces for Prolog: A Terse Survey , 2002 .

[25]  Christoph Beierle,et al.  Logic Programming: Formal Methods and Practical Applications , 1994 .

[26]  Peter Schachte,et al.  Efficient Object-Oriented Programming in Prolog , 1995, Logic Programming: Formal Methods and Practical Applications.

[27]  Beth Ann Hockey,et al.  Putting Linguistics into Speech Recognition: The Regulus Grammar Compiler (Studies in Computational Linguistics (Stanford, Calif.).) , 2006 .

[28]  Mats Carlsson,et al.  Dispensation Order Generation for Pyrosequencing , 2004, APBC.

[29]  Mats Carlsson,et al.  SICStus MT - A Multithreaded Execution Environment for SICStus Prolog , 1998, PLILP/ALP.

[30]  C. Pollard,et al.  Center for the Study of Language and Information , 2022 .

[31]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[32]  Mats Carlsson,et al.  An Open-Ended Finite Domain Constraint Solver , 1997, PLILP.

[33]  Mats Carlsson,et al.  Freeze, Indexing, and Other Implementation Issues in the WAM , 1987, ICLP.

[34]  Mats Carlsson,et al.  Parallel execution of prolog programs: a survey , 2001, TOPL.

[35]  Anderson Faustino da Silva,et al.  Design, Implementation, and Evaluation of a Dynamic Compilation Framework for the YAP System , 2007, ICLP.

[36]  Péter Szeredi,et al.  MProlog: an Implementation Overview , 1993, ICLP-Workshops on Implementation of Logic Programming Systems.

[37]  Giancarlo Succi,et al.  Implementations of Logic Programming Systems , 2012, Springer US.

[38]  Khayri A. M. Ali,et al.  The Muse Or-Parallel Prolog Model and its Performance , 1990, NACLP.

[39]  Seif Haridi,et al.  The Aurora or-parallel Prolog system , 1990, New Generation Computing.

[40]  Soo-Mook Moon,et al.  Reducing sweep time for a nearly empty heap , 2000, POPL '00.

[41]  Nicolas Beldiceanu,et al.  Time Stamps Techniques for the Trailed Data in Constraint Logic Programming Systems , 1990, SPLT.

[42]  Christian Holzbaur,et al.  Metastructures versus Attributed Variables in the Context of Extensible Unification , 1992, PLILP.

[43]  Mats Carlsson,et al.  Instruction merging and specialization in the SICStus Prolog virtual machine , 2001, PPDP '01.

[44]  Mats Carlsson On the Efficiency of Optimising Shallow Backtracking in Compiled Prolog , 1989, ICLP.

[45]  Thomas Lindgren,et al.  A Simple and Efficient Copying Garbage Collector for Prolog , 1994, PLILP.

[46]  Chris J. Cheney A nonrecursive list compacting algorithm , 1970, Commun. ACM.