Hostname: page-component-8448b6f56d-c4f8m Total loading time: 0 Render date: 2024-04-23T11:32:48.292Z Has data issue: false hasContentIssue false

SICStus Prolog—The first 25 years

Published online by Cambridge University Press:  12 September 2011

MATS CARLSSON
Affiliation:
SICS, P.O. Box 1263, SE-164 29 Kista, Sweden (e-mail: matsc@sics.se)
PER MILDNER
Affiliation:
SICS, P.O. Box 1263, SE-164 29 Kista, Sweden (e-mail: matsc@sics.se)

Abstract

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.

Type
Regular Papers
Copyright
Copyright © Cambridge University Press 2011

Access options

Get access to the full version of this content by using one of the access options below. (Log in options will check for institutional or personal access. Content may require purchase if you do not have access.)

References

Aggoun, A. and Beldiceanu, N. 1990. Time stamps techniques for the trailed data in constraint logic programming systems. In Proc. of the 8ème Séminaire de Programmation en Logique (SPLT), Bourgault, S. and Dincbas, M., Eds, 487510.Google Scholar
Aho, A. V., Sethi, R. and Ullman, J. D. 1986. Compilers: Principles, Techniques, and Tools. Addison Wesley, Reading. ISBN 0-201-10088-6.Google Scholar
Ali, K. and Karlsson, R. 1990a. The Muse or-parallel Prolog model and its performance. In Proc. of the North American Conference on Logic Programming (NACLP '90). MIT Press, Cambridge, 757776.Google Scholar
Ali, K. and Karlsson, R. 1990b. The Muse approach to or-parallel Prolog. International Journal of Parallel Programming 19, 2, 129162, Springer.CrossRefGoogle Scholar
Amdahl, G. 1967. Validity of the single-processor approach to achieving large scale computing capabilities. In Proc. of the AFIPS Spring Joint Computer Conference (AFIPS '67), vol. 30. AFIPS Press, Arlington, 483485.Google Scholar
Appleby, K., Carlsson, M., Haridi, S. and Sahlin, D. June 1988. Garbage collection for Prolog based on WAM. Communications of the ACM 31, 6, 719740.CrossRefGoogle Scholar
Bagnara, R. and Carro, M. 2002. Foreign Language Interfaces for Prolog: A Terse Survey. Quaderno 283, Dipartimento di Matematica, Università di Parma, Italy.Google Scholar
Barnes, J. 2003. High Integrity Software: The SPARK Approach to Safety and Security. Addison Wesley, Reading. ISBN 0-321-13616-0.Google Scholar
Bevemyr, J. and Lindgren, T. 1994. A simple and efficient copying garbage collector for Prolog. In Proc. of the International Symposium on Programming Language Implementation and Logic Programming (PLILP '94), Hermenegildo, M. and Penjam, J., Eds. Lecture Notes in Computer Science, vol. 844. Springer, Berlin, 88101.CrossRefGoogle Scholar
Brady, M. 2005. Open Prolog: A Structure-Sharing Prolog for the Macintosh. Ph D Thesis. Trinity College Dublin, Dublin.Google Scholar
Carlsson, M. 1987. Freeze, indexing, and other implementation issues in the WAM. In Proc. of the International Conference on Logic Programming (ICLP '87), Melbourne, Lassez, J.-L., Ed. MIT Press Series in Logic Programming. MIT Press, Cambridge, 4058.Google Scholar
Carlsson, M. 1989. On the efficiency of optimising shallow backtracking in compiled Prolog. In Proc. of the International Conference on Logic Programming (ICLP '89), Lisbon, Levi, G. and Martelli, M., Eds. MIT Press Series in Logic Programming. MIT Press, Cambridge, 316.Google Scholar
Carlsson, M. 1991. Boolean Constraints in SICStus Prolog. SICS Research Report T91:09. Swedish Institute of Computer Science.Google Scholar
Carlsson, M. and Beldiceanu, N. 2004a. Dispensation order generation for pyrosequencing. In Proc. of the Asia Pacific Bioinformatics Conference (APBC '04), Chen, Y.-P. P., Ed. Conferences in Research and Practice in Information technology, vol. 29. Australian Computer Society, Dunedin, New Zealand.Google Scholar
Carlsson, M. and Beldiceanu, N. 2004b. Multiplex dispensation order generation for pyrosequencing. In Proc. of the Workshop on CSP Techniques with Immediate Application (CP '04).Google Scholar
Carlsson, M., Ottosson, G. and Carlson, B. 1997. An open-ended finite domain constraint solver. In Proc. of the International Symposium on Programming Language Implementation and Logic Programming (PLILP '97), Glaser, H., Hartel, P., and Kuchen, H., Eds. Lecture Notes in Computer Science, vol. 1292. Springer, Berlin, 191206.Google Scholar
Carlsson, M. and Sahlin, D. 1990. Variable shunting for the WAM. In Proc. of the NACLP Post-Conference Workshop on Logic Programming Architectures and Implementations (NACLP '90), Mills, J., Ed. Also available as SICS Research Report R91:07.Google Scholar
Cheney, C. 1970. A nonrecursive list compacting algorithm. Communications of the ACM 13, 11, 677678.CrossRefGoogle Scholar
Chung, Y., Moon, S.-M., Ebcioğlu, K. and Sahlin, D. 2000. Reducing sweep time for a nearly empty heap. In Proc. of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '00). ACM, New York, NY, USA, 378389.Google Scholar
Colmerauer, A. 1982. Prolog and infinite trees. In Logic Programming, Clark, K. and Tärnlund, S.-Å., Eds. Academic Press, London, 231251.Google Scholar
Colton, C. 1825. The Lacon, vol. 1. Longman, Hurst, Rees, Orme, Brown and Green. Paternoster-row, London.Google Scholar
da Silva, A. F. and Costa, V. S. 2007. Design, implementation, and evaluation of a dynamic compilation framework for the YAP system. In Proc. of the International Conference on Logic Programming (ICLP '07), Dahl, V. and Niemelä, I., Eds. Lecture Notes in Computer Science, vol. 4670. Springer, Berlin, 410424.Google Scholar
Demoen, B. 1989. A 20' Implementation of Catch and Throw in WAM. Report CW 96. Department of Computer Science, K. U. Leuven, Leuven, Belgium.Google Scholar
Demoen, B., Mariën, A. and Callebaut, A. 1989. Indexing Prolog clauses. In Proc. of the North American Conference on Logic Programming (NACLP '89), Lusk, E. and Overbeek, R., Eds. MIT Press, Cambridge, 10011012.Google Scholar
Eskilson, J. and Carlsson, M. 1998. SICStus MT—A multithreaded execution environment for SICStus Prolog. In Proc. of the International Symposium on Programming Language Implementation and Logic Programming (PLILP '98), Palamidessi, C., Glaser, H., and Meinke, K., Eds. Lecture Notes in Computer Science, vol. 1490. Springer, Berlin, 3653.Google Scholar
Farkas, Z., Köves, P. and Szeredi, P. 1994. MProlog: an implementation overview. In Implementations of Logic Programming Systems, Tick, E. and Succi, G., Eds. Kluwer Academic Publishers, Boston, 103117.CrossRefGoogle Scholar
Gorlick, M. and Kesselman, C. 1987. Timing Prolog programs without clocks. In Proc. of the Symposium on Logic Programming (SLP '87). IEEE Computer Society, Los Angeles, 426432.Google Scholar
Gupta, G., Pontelli, E., Ali, K., Carlsson, M. and Hermenegildo, M. 2001. Parallel execution of Prolog programs. ACM Transaction on Programming Languages and Systems 23, 4, 1131.CrossRefGoogle Scholar
Haygood, R. 1994. Native code compilation in SICStus Prolog. In Proc. of the International Conference on Logic Programming (ICLP '94). MIT Press, Cambridge, MA, USA, 190204.Google Scholar
Holzbaur, C. 1992. Metastructures versus attributed variables in the context of extensible unification. In Proc. of the International Symposium on Programming Language Implementation and Logic Programming (PLILP '92), Bruynooghe, M. and Wirsing, M., Eds. Lecture Notes in Computer Science, vol. 631. Springer, Berlin, 260268.CrossRefGoogle Scholar
Holzbaur, C. 1995. ÖFAI clp(q,r) Manual, 1.3.3 ed. Austrian Research Institute for Artificial Intelligence, Vienna. TR-95-09.Google Scholar
Lusk, E., Butler, R., Disz, T., Olson, R., Overbeek, R., Stevens, R., Warren, D., Calderwood, A., Szeredi, P., Brand, P., Carlsson, M., Ciepielewski, A. and Hausman, B. 1990. The Aurora or-parallel Prolog system. New Generation Computing 7, 2–3, 243271.CrossRefGoogle Scholar
Nässén, H., Carlsson, M. and Sagonas, K. 2001. Instruction merging and specializing in the SICStus Prolog virtual machine. In Proc. of the International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP '01). ACM, New York.Google Scholar
O'Keefe, R. and Lindholm, T. 1987. Efficient implementation of a defensible semantics for dynamic Prolog code. In Proc. of the International Conference on Logic Programming (ICLP '87). MIT Press, Cambridge, 2139.Google Scholar
Rayner, M., Hockey, B. A. and Bouillon, P. 2006. Putting Linguistics into Speech Recognition: The Regulus Grammar Compiler. CSLI studies in computational linguistics. Stanford University Center for the Study of language and information, Stanford, California.Google Scholar
Saab, G. and Schachte, P. 1995. Efficient object-oriented programming in Prolog. In Logic Programming: Formal Methods and Practical Applications. Studies in Computer Science and Artificial Intelligence, vol. 11. Elsevier Science, Amsterdam, 205243.Google Scholar
Schimpf, J. 2002. Logical loops. In Proc. of the International Conference on Logic Programming (ICLP' 02), Stuckey, P. J., Ed. Lecture Notes in Computer Science, vol. 2401. Springer, Berlin, 224238.Google Scholar
Schrijvers, T. and Demoen, B. 2004. The K.U. Leuven CHR system: Implementation and application. In Proc. First Workshop on CHR: Selected Contributions, Fruehwirth, T. and Meister, M., Eds. University of Ulm, Ulm, 15.Google Scholar
Tarau, P. and Neumerkel, U. 1994. A novel term compression scheme and data representation in the BinWAM. In Proc. of the International Symposium on Programming Language Implementation and Logic Programming (PLILP '94), Hermenegildo, M. V. and Penjam, J., Eds. Lecture Notes in Computer Science, vol. 844. Springer, Berlin, 7387.CrossRefGoogle Scholar
Taylor, A. 1991. High performance Prolog on a RISC. New Generation Comput. 9, 3–4, 221232.CrossRefGoogle Scholar
Van Hentenryck, P., Saraswat, V. and Deville, Y. 1991. Constraint processing in cc(FD). Technical report, Brown University, Providence.Google Scholar
Van Roy, P. and Despain, A. M. 1992. High-performance logic programming with the Aquarius Prolog compiler. IEEE Computer 25, 1, 5468.CrossRefGoogle Scholar
Warren, D. 1979. Prolog on the DECsystem-10. In Expert Systems in the Micro-Electronic Age, Mitchie, D., Ed. Edinburgh University Press, Edinburgh.Google Scholar
Warren, D. 1983. An Abstract Prolog Instruction Set. Technical note 309. Artificial Intelligence Center, SRI International, Palo Alto.Google Scholar
Wilson, W. G. 2005. Use of logic programming for complex business rules. In Proc. of the International Conference on Logic Programming (ICLP '05). Lecture Notes in Computer Science, vol. 3668. Springer, Berlin, 1420.Google Scholar