Skip to main content Accessibility help
×
Home

An overview of Ciao and its design philosophy

  • M. V. HERMENEGILDO (a1), F. BUENO (a2), M. CARRO (a2), P. LÓPEZ-GARCÍA (a3), E. MERA (a4), J. F. MORALES (a5) and G. PUEBLA (a6)...

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.

Copyright

References

Hide All
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.
Albert, E., Puebla, G. and Hermenegildo, M. 2008. Abstraction-carrying dode: A model for mobile code safety. New Generation Computing 26, 2, 171204.
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.
Bruynooghe, M. 1991. A practical framework for the abstract interpretation of logic programs. Journal of Logic Programming 10, 91124.
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.org
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Chen, W. and Warren, D. S. January 1996. Tabled evaluation with delaying for general logic programs. Journal of the ACM 43, 1, 2074.
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.
Costa, V. S., Damas, L., Reis, R. and Azevedo, R. 2002. YAP User's Manual. http://www.dcc.fc.up.pt/~vsc/Yap
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.
Debray, S. K. and Lin, N. W. November 1993. Cost analysis of logic programs. ACM Transactions on Programming Languages and Systems 15, 5, 826875.
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.
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.
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.
Frühwirth, T. 2009. Constraint Handling Rules. Cambridge University Press, Cambridge UK.
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.
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.
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.
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.
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.html
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.
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.
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.
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.
Hermenegildo, M. and Greene, K. 1991. The &-Prolog system: Exploiting independent and-parallelism. New Generation Computing 9, 3–4, 233257.
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.
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.
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.
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.pdf
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.
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.
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.
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.
Holzbaur, C. 1994. SICStus 2.1/DMCAI Clp 2.1.1 User's Manual. University of Vienna, Vienna, Austria.
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.
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.
Karp, A. and Babb, R. 1988. A comparison of 12 parallel fortran dialects. IEEE Software, 5, 5267.
Lamport, L. and Paulson, L. C. May 1999. Should your specification language be typed? ACM Transactions on Programming Languages and Systems 21, 3, 502526.
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.
Logozzo, F. and Fahndrich, M. 2010. Clousot [online]. Accessed 15 March 2010, URL: http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx
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.
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.
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.
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.
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.
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.
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.
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.
Mozilla, . 2008. Tamarin Project [online]. 15 March 2010, URL: http://www.mozilla.org/projects/tamarin/
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.
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.
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.
Muthukumar, K. and Hermenegildo, M. July 1992. Compile-time derivation of variable dependency using abstract interpretation. Journal of Logic Programming 13, 2–3, 315347.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
Schulte, C. and Stuckey, P. J. December 2008. Efficient constraint propagation engines. ACM Transactions on Programming Languages and Systems 31, 1, 2:12:43.
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.
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/
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.
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.
Van Hentenryck, P. and Michael, L. 2005. Constraint-Based Local Search. MIT Press, Cambridge, MA.
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.
Warren, D. 1993. Logic programming languages, parallel implementations, and the andorra model. In Proc. of the International Conference on Logic Programming (ICLP '93).
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.
Wolfram, D. 1992. A Semantics for λ Prolog. Technical Report prg-tr-8-92. University of Oxford, Oxford, UK.

Keywords

An overview of Ciao and its design philosophy

  • M. V. HERMENEGILDO (a1), F. BUENO (a2), M. CARRO (a2), P. LÓPEZ-GARCÍA (a3), E. MERA (a4), J. F. MORALES (a5) and G. PUEBLA (a6)...

Metrics

Full text views

Total number of HTML views: 0
Total number of PDF views: 0 *
Loading metrics...

Abstract views

Total abstract views: 0 *
Loading metrics...

* Views captured on Cambridge Core between <date>. This data will be updated every 24 hours.

Usage data cannot currently be displayed