The Ciao Module System: A New Module System for Prolog

Abstract It is now widely accepted that separating programs into modules has proven very useful in program development and maintenance. While many Prolog implementations include useful module systems, we feel that these systems can be improved in a number of ways, such as, for example, being more amenable to effective global analysis and transformation and allowing separate compilation or sensible creation of standalone executables. We discuss a number of issues related to the design of such an improved module system for Prolog. Based on this, we present the choices made in the Ciao module system, which has been designed to meet a number of objectives: allowing separate compilation, extensibility in features and in syntax, amenability to modular global analysis and transformation, etc.

[1]  Manuel V. Hermenegildo A documentation generator for logic programming systems , 2000 .

[2]  Manuel V. Hermenegildo,et al.  An assertion language for debugging of constraint logic programs , 1997 .

[3]  Victor W. Marek,et al.  The Logic Programming Paradigm: A 25-Year Perspective , 2011 .

[4]  Dr. Pierre Deransart,et al.  Prolog: The Standard , 1996, Springer Berlin Heidelberg.

[5]  Ehud Shapiro,et al.  Third International Conference on Logic Programming , 1986 .

[6]  Gert Smolka,et al.  A Feature-Based Constraint System for Logic Programming with Entailment , 1992, FGCS.

[7]  Manuel V. Hermenegildo,et al.  Using Global Analysis, Partial Specifications, and an Extensible Assertion Language for Program Validation and Debugging , 1999, The Logic Programming Paradigm.

[8]  Weidong Chen,et al.  A Theory of Modules Based on Second-Order Logic , 1987, SLP.

[9]  David Scott Warren,et al.  The XSB Programming System , 1993, Workshop on Programming with Logic Databases , ILPS.

[10]  Jan Maluszynski,et al.  Analysis and Visualization Tools for Constraint Programming , 2000, Lecture Notes in Computer Science.

[11]  Saumya K. Debray Flow Analysis of Dynamic Logic Programs , 1989, J. Log. Program..

[12]  Giorgio Levi,et al.  Proving Properties of Logic Programs by Abstract Diagnosis , 1996, LOMAPS.

[13]  Manuel V. Hermenegildo,et al.  Program Analysis, Debugging, and Optimization Using the Ciao System Preprocessor , 1999, ICLP.

[14]  Doug DeGroot,et al.  Logic programming - functions, relations and equations , 1986 .

[15]  Saumya K. Debray,et al.  On the Practicality of Global Flow Analysis of Logic Programs , 1988, ICLP/SLP.

[16]  José Meseguer,et al.  EQLOG: Equality, Types, and Generic Modules For Logic Programming , 1986, Logic Programming: Functions, Relations, and Equations.

[17]  Dale Miller,et al.  A Logical Analysis of Modules in Logic Programming , 1989, J. Log. Program..

[18]  Wlodzimierz Drabent,et al.  On the Role of Semantic Approximations on Validation and Diagnosis of Contraint Logic Programs , 1997, AADEBUG.

[19]  Richard A. O'Keefe,et al.  Towards an Algebra for Constructing Logic Programs , 1985, International Conference on Spoken Language Processing.

[20]  Luís Monteiro,et al.  Contextual Logic Programming , 1989, ICLP.

[21]  Jan Maluszy¿ski Programming with Global Analysis , 1997 .

[22]  Zoltan Somogyi,et al.  The Execution Algorithm of Mercury, an Efficient Purely Declarative Logic Programming Language , 1996, J. Log. Program..

[23]  Manuel V. Hermenegildo,et al.  Global Analysis of Standard Prolog Programs , 1996, ESOP.

[24]  Manuel V. Hermenegildo,et al.  Effectivness of abstract interpretation in automatic parallelization: a case study in logic programming , 1999, TOPL.

[25]  Mats Carlsson,et al.  SICStus Prolog User''s Manual , 1993 .

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

[27]  Bart Demoen,et al.  Improving the Execution Speed of Compiled Prolog with Modes, Clause Selection, and Determinism , 1987, TAPSOFT, Vol.2.

[28]  Manuel V. Hermenegildo,et al.  Some Issues in Analysis and Specialization of Modular Ciao-Prolog Programs , 1999, WOID@ICLP.