Hostname: page-component-586b7cd67f-vdxz6 Total loading time: 0 Render date: 2024-11-23T19:14:45.412Z Has data issue: false hasContentIssue false

An overview of Ciao and its design philosophy

Published online by Cambridge University Press:  30 December 2011

M. V. HERMENEGILDO
Affiliation:
Universidad Politécnica de Madrid (UPM), Fac. Informática, Campus de Montegancedo - UPM, 28660 Boadilla del Monte, Madrid, Spain and Madrid Institute of Advanced Studies in Software Development Technology (IMDEA Software), Campus de Montegancedo - UPM, 28660 Boadilla del Monte, Madrid, Spain (e-mail: [email protected])
F. BUENO
Affiliation:
Universidad Politécnica de Madrid (UPM), Fac. Informática, Campus de Montegancedo - UPM, 28660 Boadilla del Monte, Madrid, Spain (e-mail: [email protected], [email protected])
M. CARRO
Affiliation:
Universidad Politécnica de Madrid (UPM), Fac. Informática, Campus de Montegancedo - UPM, 28660 Boadilla del Monte, Madrid, Spain (e-mail: [email protected], [email protected])
P. LÓPEZ-GARCÍA
Affiliation:
Madrid Institute of Advanced Studies in Software Development Technology (IMDEA Software), Campus de Montegancedo - UPM, 28660 Boadilla del Monte, Madrid, Spain and Spanish Research Council, Serrano, 117, 28006 Madrid, Spain (e-mail: [email protected])
E. MERA
Affiliation:
Universidad Complutense de Madrid (UCM), Fac. Informática, Universidad Complutense de Madrid, C/ Prof. José García Santesmases, s/n., 28040 Madrid, Spain (e-mail: [email protected])
J. F. MORALES
Affiliation:
Madrid Institute of Advanced Studies in Software Development Technology (IMDEA Software), Campus de Montegancedo - UPM, 28660 Boadilla del Monte, Madrid, Spain (e-mail: [email protected])
G. PUEBLA
Affiliation:
Universidad Politécnica de Madrid (UPM), Fac. Informática, Campus de Montegancedo - UPM, 28660 Boadilla del Monte, Madrid, Spain (e-mail: [email protected])

Abstract

We provide an overall description of the Ciao multiparadigm programming system emphasizing some of the novel aspects and motivations behind its design and implementation. An important aspect of Ciao is that, in addition to supporting logic programming (and, in particular, Prolog), it provides the programmer with a large number of useful features from different programming paradigms and styles and that the use of each of these features (including those of Prolog) can be turned on and off at will for each program module. Thus, a given module may be using, e.g., higher order functions and constraints, while another module may be using assignment, predicates, Prolog meta-programming, and concurrency. Furthermore, the language is designed to be extensible in a simple and modular way. Another important aspect of Ciao is its programming environment, which provides a powerful preprocessor (with an associated assertion language) capable of statically finding non-trivial bugs, verifying that programs comply with specifications, and performing many types of optimizations (including automatic parallelization). Such optimizations produce code that is highly competitive with other dynamic languages or, with the (experimental) optimizing compiler, even that of static languages, all while retaining the flexibility and interactive development of a dynamic language. This compilation architecture supports modularity and separate compilation throughout. The environment also includes a powerful autodocumenter and a unit testing framework, both closely integrated with the assertion system. The paper provides an informal overview of the language and program development environment. It aims at illustrating the design philosophy rather than at being exhaustive, which would be impossible in a single journal paper, pointing instead to previous Ciao literature.

Type
Regular Papers
Copyright
Copyright © Cambridge University Press 2012

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

Aït-Kaci, H. 1993. An introduction to LIFE—Programming with logic, inheritance, functions and equations. In Proc. of the 1993 International Symposium on Logic Programming, Miller, D., Ed. MIT Press, Cambridge, MA, 5268.Google Scholar
Albert, E., Puebla, G. and Hermenegildo, M. 2008. Abstraction-carrying dode: A model for mobile code safety. New Generation Computing 26, 2, 171204.CrossRefGoogle Scholar
Ancona, D., Ancona, M., Cuni, A. and Matsakis, N. D. 2007. RPython: A step towards reconciling dynamically and statically typed OO languages. In Proc. of the 2007 Symposium on Dynamic languages (DLS '07). ACM, New York, NY, 5364.CrossRefGoogle Scholar
Bruynooghe, M. 1991. A practical framework for the abstract interpretation of logic programs. Journal of Logic Programming 10, 91124.CrossRefGoogle Scholar
Bueno, F., Cabeza, D., Carro, M., Hermenegildo, M., López-García, P. and Puebla, G. (Eds.), 2009. The Ciao System. Ref. Manual (v1.13). Technical Report. School of Computer Science, T.U. of Madrid (UPM). URL: http://www.ciaohome.orgGoogle Scholar
Bueno, F., Deransart, P., Drabent, W., Ferrand, G., Hermenegildo, M., Maluszynski, J. and Puebla, G. 1997. On the role of semantic approximations in validation and diagnosis of constraint logic programs. In Proc. of the 3rd International WS on Automated Debugging (AADEBUG). U. Linköping Press, Linköping, Sweden, 155170.Google Scholar
Bueno, F., García de la Banda, M. and Hermenegildo, M. March 1999. Effectiveness of abstract interpretation in automatic parallelization: A case study in logic programming. ACM Transactions on Programming Languages and Systems 21, 2, 189238.CrossRefGoogle Scholar
Bueno, F., López-García, P. and Hermenegildo, M. 2004. Multivariant non-failure analysis via standard abstract interpretation. In Proc. of the International Symposium on Functional and Logic Programming (FLOPS '04). Lecture Notes in Computer Science, vol. 2998. Springer-Verlag, Heidelberg, Germany, 100116.CrossRefGoogle Scholar
Cabeza, D. and Hermenegildo, M. 1994. Extracting non-strict independent and-parallelism using sharing and freeness information. In Proc. of the International Static Analysis Symposium (SAS '94). Lecture Notes in Computer Science, vol. 864. Springer-Verlag, Heidelberg, Germany, 297313.Google Scholar
Cabeza, D. and Hermenegildo, M. 1995. Distributed concurrent constraint execution in the CIAO system. In Proc. of the COMPULOG-NET Workshop on Parallelism and Implementation Technologies (COMPULOG-NET '95). U. Utrecht/T.U. Madrid, Utrecht, NL.Google Scholar
Cabeza, D. and Hermenegildo, M. 2000a. A new module system for Prolog. In Proc. of the International Conference on Computational Logic (CL '00). Lecture Notes in Artificial Intelligence, vol. 1861. Springer-Verlag, Heidelberg, Germany, 131148.Google Scholar
Cabeza, D. and Hermenegildo, M. 2000b. The Ciao modular, standalone compiler and its generic program processing library. In Special Issue on Parallelism and Implementation of (C)LP Systems. Electronic Notes in Theoretical Computer Science, vol. 30(3). Elsevier, North Holland.Google Scholar
Cabeza, D. and Hermenegildo, M. May 2001. Distributed WWW programming using (Ciao) Prolog and the PiLLoW Library. Theory and Practice of Logic Programming 1, 3, 251282.CrossRefGoogle Scholar
Carro, M., Gómez, L. and Hermenegildo, M. 1993. Some paradigms for visualizing parallel execution of logic programs. In Proc. of the International Conference on Logic Programming (ICLP '93). MIT Press, Cambridge, MA, 184201.Google Scholar
Carro, M. and Hermenegildo, M. 1999. Concurrency in Prolog using threads and a shared database. In Proc. of the 1999 International Conference on Logic Programming. MIT Press, Cambridge, MA, USA, 320334.Google Scholar
Carro, M., Morales, J., Muller, H., Puebla, G. and Hermenegildo, M. 2006. High-level languages for small devices: A case study. In Compilers, Architecture, and Synthesis for Embedded Systems, Flautner, K. and Kim, T., Eds. ACM/Sheridan, 271281.Google Scholar
Cartwright, R. and Fagan, M. 1991. Soft typing. In Proc. of the ACM SIGPLAN Conference on Programming Language Design and ImplementationPLDI'91. SIGPLAN. ACM, New York, NY, 278292.Google Scholar
Casas, A., Cabeza, D. and Hermenegildo, M. 2006. A syntactic approach to combining functional notation, lazy evaluation and higher-order in LP systems. In Proc. of the International Symposium on Functional and Logic Programming (FLOPS '06), 142–162.Google Scholar
Casas, A., Carro, M. and Hermenegildo, M. 2007. Annotation algorithms for unrestricted independent and-parallelism in logic programs. In Proc. of the International Symposium on Logic-Based Program Synthesis and Transformation (LOPSTR '07). Lecture Notes in Computer Science, vol. 4915. Springer-Verlag, Heidelberg, Germany, 138153.Google Scholar
Casas, A., Carro, M. and Hermenegildo, M. 2008. A high-level implementation of non-deterministic, unrestricted, independent and-parallelism. In Proc. of the 24th International Conference on Logic Programming (ICLP'08), de la Banda, M. García and Pontelli, E., Eds. Lecture Notes in Computer Science, vol. 5366. Springer-Verlag, Heidelberg, Germany, 651666.Google Scholar
Chen, W. and Warren, D. S. January 1996. Tabled evaluation with delaying for general logic programs. Journal of the ACM 43, 1, 2074.CrossRefGoogle Scholar
Correas, J., Gomez, J. M., Carro, M., Cabeza, D. and Hermenegildo, M. 2004. A generic persistence model for CLP systems (and two useful implementations). In Proc. of the International Symposium on Practical Aspects of Declarative Languages (PADL '04). Lecture Notes in Computer Science, vol. 3057. Springer-Verlag, Heidelberg, Germany, 104119.CrossRefGoogle Scholar
Costa, V. S., Damas, L., Reis, R. and Azevedo, R. 2002. YAP User's Manual. http://www.dcc.fc.up.pt/~vsc/YapGoogle Scholar
Cousot, P. and Cousot, R. 1977. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proc. of the Symposium on Principles of Programming Languages (POPL '77). ACM, New York, NY, 238252.Google Scholar
Debray, S. K. and Lin, N. W. November 1993. Cost analysis of logic programs. ACM Transactions on Programming Languages and Systems 15, 5, 826875.CrossRefGoogle Scholar
Debray, S. K., Lin, N.-W. and Hermenegildo, M. 1990. Task granularity analysis in logic programs. In Proc. of the ACM Conference on Programming Language Design and Implementation (PLDI '90). ACM, New York, NY, 174188.Google Scholar
Debray, S. K., López-García, P., Hermenegildo, M. and Lin, N.-W. 1997. Lower bound cost estimation for logic programs. In Proc. of the International Symposium on Logic Programming (ILPS '97). MIT Press, Cambridge, MA.Google Scholar
El-Khatib, O., Pontelli, E. and Son, T. C. 2005. Integrating an answer set solver into Prolog: ASP-PROLOG. In Proc. of the International Conference on Logic Programming and Nonmonotonic Reasoning (LPNMR), 399>–404.–404.>Google Scholar
Frühwirth, T. 2009. Constraint Handling Rules. Cambridge University Press, Cambridge UK.CrossRefGoogle Scholar
García de laBanda, M. Banda, M., Bueno, F. and Hermenegildo, M. 1996. Towards independent and-parallelism in CLP. In Proc. of the Symposium on Programming Languages: Implementations, Logics, and Programs (PLILP '96). Lecture Notes in Computer Science, vol. 1140. Springer-Verlag, Heidelberg, Germany, 7791.Google Scholar
García de la Banda, M., Hermenegildo, M. and Marriott, K. March 2000. Independence in CLP languages. ACM Transactions on Programming Languages and Systems 22, 2, 269339.CrossRefGoogle Scholar
Gómez-Zamalloa, M., Albert, E. and Puebla, G. 2008. On the generation of test data for Prolog by partial evaluation. In Proc. of the Workshop on Logic-based methods in Programming Environments (WLPE '08), 26–43. Report number: WLPE/2008/06.Google Scholar
Gupta, G., Pontelli, E., Ali, K., Carlsson, M. and Hermenegildo, M. July 2001. Parallel execution of Prolog programs: A survey. ACM Transactions on Programming Languages and Systems 23, 4, 472602.CrossRefGoogle Scholar
Hanus, M., Antoy, S., Brassel, B., Kuchen, H.López-Fraguas, F. J., Lux, W., Moreno-Navarro, J. J., and Steiner, F. 2003. Curry: An integrated functional logic language. URL: http://www.informatik.uni-kiel.de/~mh/curry/report.htmlGoogle Scholar
Hermenegildo, M. 1986. An abstract machine for restricted AND-parallel execution of logic programs. In Proc. of the International Conference on Logic Programming (ICLP '86). Lecture Notes in Computer Science, vol. 225. Springer-Verlag, Heidelberg, Germany, 2540.Google Scholar
Hermenegildo, M. 1997. Automatic parallelization of irregular and pointer-based computations: Perspectives from logic and constraint programming. In Proc. of the European Conference on Parallel Processing (EURO-PAR '97). Lecture Notes in Computer Science, vol. 1300. Springer-Verlag, Heidelberg, Germany, 3146.CrossRefGoogle Scholar
Hermenegildo, M. 2000. A documentation generator for (C)LP systems. In International Conference on Computational Logic (CL '00). Lecture Notes in Artificial Intelligence, vol. 1861. Springer-Verlag, Heidelberg, Germany, 13451361.Google Scholar
Hermenegildo, M., Albert, E., López-García, P. and Puebla, G. 2004. Some techniques for automated, resource-aware distributed and mobile domputing in a multi-paradigm programming system. In Proc. of the European Conference on Parallel Processing (EURO-PAR '04). Lecture Notes in Computer Science, vol. 3149. Springer-Verlag, Heidelberg, Germany, 2137.Google Scholar
Hermenegildo, M. and Greene, K. 1991. The &-Prolog system: Exploiting independent and-parallelism. New Generation Computing 9, 3–4, 233257.CrossRefGoogle Scholar
Hermenegildo, M., Puebla, G. and Bueno, F. 1999a. Using global analysis, partial specifications, and an extensible assertion language for program validation and debugging. In The Logic Programming Paradigm: A 25—Year Perspective. Springer-Verlag, Heidelberg, Germany, 161192.CrossRefGoogle Scholar
Hermenegildo, M., Puebla, G., Bueno, F. and García, P. L. 2005. Integrated program debugging, verification, and optimization using abstract interpretation (and the Ciao system preprocessor). Science of Computer Programming 58, 12.CrossRefGoogle Scholar
Hermenegildo, M. and Rossi, F. 1995. Strict and non-strict independent and-parallelism in logic programs: Correctness, efficiency, and compile-time conditions. Journal of Logic Programming 22, 1, 145.CrossRefGoogle Scholar
Hermenegildo, M. and The Ciao Development Team. 2006. -Why Ciao?—An overview of the Ciao System's Design Philosophy. Technical Report CLIP7/2006.0. UPM. URL: http://cliplab.org/papers/ciao-philosophy-note-tr.pdfGoogle Scholar
Hermenegildo, M., Warren, R. and Debray, S. K. August 1992. Global flow analysis as a practical compilation tool. Journal of Logic Programming 13, 4, 349367.CrossRefGoogle Scholar
Hermenegildo, M. et al. 1994. Some methodological issues in the design of CIAO—A generic, parallel, concurrent constraint system. In Principles and Practice of Constraint Programming. Lecture Notes in Computer Science, vol. 874. Springer-Verlag, Heidelberg, Germany, 123133.CrossRefGoogle Scholar
Hermenegildo, M., Bueno, F., Cabeza, D., Carro, M., García de la Banda, M., López-García, P. and Puebla, G. 1999b. The CIAO multi-dialect compiler and system: An experimentation workbench for future (C)LP systems. In Parallelism and Implementation of Logic and Constraint Logic Programming. Nova Science, Hauppauge NY, 6585.Google Scholar
Holzbaur, C. 1992. Metastructures vs. attributed variables in the context of extensible unification. In Proc. of the Symposium on Programming Languages: Implementations, Logics, and Programs (PLILP '92). Lecture Notes in Computer Science, vol. 631. Springer Verlag, Heidelberg, Germany, 260268.CrossRefGoogle Scholar
Holzbaur, C. 1994. SICStus 2.1/DMCAI Clp 2.1.1 User's Manual. University of Vienna, Vienna, Austria.Google Scholar
Hudak, P., Peyton-Jones, S., Wadler, P., Boutel, B., Fairbairn, J., Fasel, J., Guzman, M. M., Hammond, K., Hughes, J., Johnsson, T., Kieburtz, D., Nikhil, R., Partain, W. and Peterson, J. 1992. Report on the programming language haskell. Haskell Special Issue, ACM Sigplan Notices 27, 5, 1164.Google Scholar
Jim, T., Morrisett, J. G., Grossman, D., Hicks, M. W., Cheney, J. and Wang, Y. 2002. Cyclone: A safe dialect of c. In Proc. of the USENIX Annual Technical Conference, General Track, Ellis, C. S., Ed. USENIX, 275288.Google Scholar
Karp, A. and Babb, R. 1988. A comparison of 12 parallel fortran dialects. IEEE Software, 5, 5267.CrossRefGoogle Scholar
Lamport, L. and Paulson, L. C. May 1999. Should your specification language be typed? ACM Transactions on Programming Languages and Systems 21, 3, 502526.CrossRefGoogle Scholar
Leavens, G. T., Leino, K. R. M. and Müller, P. 2007. Specification and verification challenges for sequential object-oriented programs. Formal Aspects of Computing 19, 2, 159189.CrossRefGoogle Scholar
Logozzo, F. and Fahndrich, M. 2010. Clousot [online]. Accessed 15 March 2010, URL: http://msdn.microsoft.com/en-us/devlabs/dd491992.aspxGoogle Scholar
López-García, P., Bueno, F. and Hermenegildo, M. 2010a. Automatic inference of determinacy and mutual exclusion for logic programs using mode and type information. New Generation Computing 28, 2, 117206.CrossRefGoogle Scholar
López-García, P., Darmawan, L. and Bueno, F. 2010b. A framework for verification and debugging of resource usage properties. In Proc. of the Technical Communications of the International Conference on Logic Programming (ICLP), Leibniz International Proceedings in Informatics, vol. 7. Schloss Dagstuhl, 104113.Google Scholar
López-García, P., Hermenegildo, M. and Debray, S. K. 1996. A methodology for granularity based control of parallelism in logic programs. Journal of Symbolic Computation, Special Issue on Parallel Symbolic Computation 21, 715734.Google Scholar
Mera, E., López-García, P., Carro, M. and Hermenegildo, M. 2008. Towards execution time estimation in abstract machine-based languages. In Proc. of the Symposium on Principles and Practice of Declarative Programming (PPDP '08). ACM, New York, NY, 174184.Google Scholar
Mera, E., López-García, P. and Hermenegildo, M. 2009. Integrating software testing and run-time checking in an assertion verification framework. In Proc. of the International Conference on Logic Programming (ICLP '09). Lecture Notes in Computer Science, vol. 5649. Springer-Verlag, Heidelberg, Germany, 281295.Google Scholar
Morales, J., Carro, M. and Hermenegildo, M. 2004. Improving the compilation of Prolog to C using moded types and determinism information. In Proc. of the International Symposium on Practical Aspects of Declarative Languages (PADL '04). Lecture Notes in Computer Science, vol. 3057. Springer-Verlag, Heidelberg, Germany, 86103.CrossRefGoogle Scholar
Morales, J., Carro, M. and Hermenegildo, M. 2008. Comparing tag scheme variations using an abstract machine generator. In Proc. of the Symposium on Principles and Practice of Declarative Programming (PPDP '08). ACM, New York, NY, 3243.Google Scholar
Morales, J., Carro, M. and Hermenegildo, M. October 2009. Description and optimization of abstract machines in a dialect of Prolog. Technical Report CLIP4/2009.0. School of Computer Science, Technical University of Madrid.Google Scholar
Mozilla, . 2008. Tamarin Project [online]. 15 March 2010, URL: http://www.mozilla.org/projects/tamarin/Google Scholar
Muthukumar, K., Bueno, F., de la Banda, M. G. and Hermenegildo, M. February 1999. Automatic compile-time parallelization of logic programs for restricted, goal-level, independent and-parallelism. Journal of Logic Programming 38, 2, 165218.CrossRefGoogle Scholar
Muthukumar, K. and Hermenegildo, M. 1990. The CDG, UDG, and MEL methods for automatic compile-time parallelization of logic programs for independent and-parallelism. In Proc. of the International Conference on Logic Programming (ICLP '90). MIT Press, Cambridge, MA, 221237.Google Scholar
Muthukumar, K. and Hermenegildo, M. 1991. Combined determination of sharing and freeness of program variables through abstract interpretation. In Proc. of the International Conference on Logic Programming (ICLP '91). MIT Press, Cambridge, MA, 4963.Google Scholar
Muthukumar, K. and Hermenegildo, M. July 1992. Compile-time derivation of variable dependency using abstract interpretation. Journal of Logic Programming 13, 2–3, 315347.CrossRefGoogle Scholar
Naish, L., Dart, P. W. and Zobel, J. 1989. The NU-Prolog debugging environment. In Proc. of the International Conference on Logic Programming (ICLP '89), Porto, A., Ed. MIT Press, Cambridge, MA, 521536.Google Scholar
Navas, J., Mera, E., López-García, P. and Hermenegildo, M. 2007. User-definable resource bounds analysis for logic programs. In Proc. of the International Conference on Logic Programming (ICLP '07). Lecture Notes in Computer Science, vol. 4670, 348–363.Google Scholar
Necula, G. C., Condit, J., Harren, M., McPeak, S. and Weimer, W. 2005. Ccured: Type-safe retrofitting of legacy software. ACM Transactions on Programming Languages and Systems 27, 3, 477526.CrossRefGoogle Scholar
Olmedilla, M., Bueno, F. and Hermenegildo, M. 1993. Automatic exploitation of non-determinate independent and-parallelism in the basic andorra model. In Proc. of the Workshop on Logic Program Synthesis and Transformation (LOPSTR '93). Workshops in Computing. Springer-Verlag, Heidelberg, Germany, 177195.Google Scholar
Pietrzak, P., Correas, J., Puebla, G. and Hermenegildo, M. 2006. Context-sensitive multivariant assertion checking in modular programs. In Proc. of the Conference on Logic for Programming Artificial Intelligence and Reasoning (LPAR '06). Lecture Notes in Computer Science, vol. 4246. Springer-Verlag, Heidelberg, Germany, 392406.CrossRefGoogle Scholar
Pietrzak, P., Correas, J., Puebla, G. and Hermenegildo, M. 2008. A practical type analysis for verification of modular Prolog programs. In Proc. of the Symposium on Partial Evaluation and Semantics- Based Program Manipulation (PEPM '08). ACM, New York, NY, 6170.Google Scholar
Pineda, A. and Bueno, F. 2002. The O'Ciao approach to object oriented Logic programming. In Proc. of the Colloquium on Implementation of. Constraint and LOgic Programming Systems (CICLOPS '02).Google Scholar
Puebla, G., Albert, E. and Hermenegildo, M. 2006. Abstract interpretation with specialized definitions. In Proc. of the International Static Analysis Symposium (SAS '06). Lecture Notes in Computer Science, vol. 4134. Springer-Verlag, Heidelberg, Germany, 107126.Google Scholar
Puebla, G., Bueno, F. and Hermenegildo, M. 2000a. A generic preprocessor for program validation and debugging. In Proc. of the Analysis and Visualization Tools for Constraint Programming. Lecture Notes in Computer Science, vol. 1870. Springer-Verlag, Heidelberg, Germany, 63107.CrossRefGoogle Scholar
Puebla, G., Bueno, F. and Hermenegildo, M. 2000b. An assertion language for constraint logic programs. In Proc. of the Analysis and Visualization Tools for Constraint Programming. Lecture Notes in Computer Science, vol. 1870. Springer-Verlag, Heidelberg, Germany, 2361.CrossRefGoogle Scholar
Puebla, G., García de la Banda, M., Marriott, K. and Stuckey, P. 1997. Optimization of logic programs with dynamic scheduling. In Proc. of the International Conference on Logic Programming (ICLP '97). MIT Press, Cambridge, MA, 93107.Google Scholar
Puebla, G. and Hermenegildo, M. 1995. Implementation of multiple specialization in logic programs. In Proc. of the Symposium on Partial Evaluation and Semantics-Based Program Manipulation (PEPM '95). ACM, New York, NY, 7787.Google Scholar
Saglam, H. and Gallagher, J. 1995. Approximating Constraint Logic Programs Using Polymorphic Types and Regular Descriptions. Technical Report CSTR-95-17. Dep. of Computer Science, U. of Bristol, Bristol BS8 1TR.Google Scholar
Schrijvers, T., Costa, V. S., Wielemaker, J. and Demoen, B. 2008. Towards typed Prolog. In Proc. of the International Conference on Logic Programming (ICLP '08). Lecture Notes in Computer Science, vol. 5366. Springer, 693697.Google Scholar
Schulte, C. and Stuckey, P. J. December 2008. Efficient constraint propagation engines. ACM Transactions on Programming Languages and Systems 31, 1, 2:12:43.CrossRefGoogle Scholar
Somogyi, Z., Henderson, F. and Conway, T. October 1996. The execution algorithm of mercury: An efficient purely declarative logic programming language. Journal of Logic Programming 29, 1–3, 1764.CrossRefGoogle Scholar
Swedish Institute for Computer Science 2009. SICStus Prolog User's Manual, 4.1.1 ed. Swedish Institute for Computer Science, Kista, Sweden. URL: http://www.sics.se/sicstus/Google Scholar
Szabó, P. and Szeredi, P. 2006. Improving the ISO prolog standard by analyzing compliance test results. In Proc. of the International Conference on Logic Programming (ICLP '06), 257–269.Google Scholar
Tobin-Hochstadt, S. and Felleisen, M. 2008. The design and implementation of typed scheme. In Proc. of the Principles of Programming Languages (POPL). ACM, New York, NY, 395406.Google Scholar
Van Hentenryck, P. and Michael, L. 2005. Constraint-Based Local Search. MIT Press, Cambridge, MA.Google Scholar
Vaucheret, C. and Bueno, F. 2002. More precise yet efficient type inference for logic programs. In Proc. of the International Static Analysis Symposium (SAS '02). Lecture Notes in Computer Science, vol. 2477. Springer-Verlag, Heidelberg, Germany, 102116.Google Scholar
Warren, D. 1993. Logic programming languages, parallel implementations, and the andorra model. In Proc. of the International Conference on Logic Programming (ICLP '93).Google Scholar
Warren, R., Hermenegildo, M. and Debray, S. K. 1988. On the practicality of global flow analysis of logic programs. In Proc. of the International Conference on Logic Programming (ICLP '88). MIT Press, Cambridge, MA, 684699.Google Scholar
Wolfram, D. 1992. A Semantics for λ Prolog. Technical Report prg-tr-8-92. University of Oxford, Oxford, UK.Google Scholar