Closures and Modules Within Linear Logic Concurrent Constraint Programming

There are two somewhat contradictory ways of looking at modules in a given programming language. On the one hand, module systems are largely independent of the particulars of programming languages. On the other hand, the module constructs may interfere with the programming constructs, and may be redundant with the other scope mechanisms of a specific programming language, such as closures for instance. There is therefore a need to unify the programming concepts that are similar, and retain a minimum number of essential constructs to avoid arbitrary programming choices. In this paper, we realize this aim in the framework of linear logic concurrent constraint programming (LCC) languages. We first show how declarations and closures can be internalized as agents in a variant of LCC for which we provide precise operational and logical semantics in linear logic. Then, we show how a complete module system can be represented within LCC, and prove for it a general code protection property. Finally we study the instanciation of this scheme to the implementation of a safe module system for constraint logic programs, and conclude on the generality of this approach to programming languages with logical variables.

[1]  Xavier Leroy,et al.  A modular module system , 2000, J. Funct. Program..

[2]  Gert Smolka,et al.  A Higher-order Module Discipline with Separate Compilation, Dynamic Linking, and Pickling , 1998 .

[3]  Michael Winikoff,et al.  Programming in Lygon: An Overview , 1996, AMAST.

[4]  Patrick Lincoln,et al.  Linear logic , 1992, SIGA.

[5]  Christian Holzbaur Metastructures vs. Attributed Variables in the Context of Extensible Uniication | Applied for the Implementation of Clp Languages , 1992 .

[6]  Vijay Saraswat Xerox Higher-order , linear , concurrent constraint programming , 1992 .

[7]  Dale Miller,et al.  Logic programming in a fragment of intuitionistic linear logic , 1991, [1991] Proceedings Sixth Annual IEEE Symposium on Logic in Computer Science.

[8]  Thom W. Frühwirth,et al.  Theory and Practice of Constraint Handling Rules , 1998, J. Log. Program..

[9]  Rémy Haemmerlé SiLCC Is Linear Concurrent Constraint Programming , 2005, ICLP.

[10]  François Fages,et al.  Linear Concurrent Constraint Programming: Operational and Phase Semantics , 2001, Inf. Comput..

[11]  François Fages,et al.  Modules for Prolog Revisited , 2006, ICLP.

[12]  Lars Hallnäs,et al.  A Proof-Theoretic Approach to Logic Programming. I. Clauses as Rules , 1990, J. Log. Comput..

[13]  Peter Van Roy,et al.  Logic programming in the context of multiparadigm programming: the Oz experience , 2002, Theory and Practice of Logic Programming.

[14]  Björn Victor,et al.  On the Expressiveness of Linearity vs Persistence in the Asychronous Pi-Calculus , 2006, 21st Annual IEEE Symposium on Logic in Computer Science (LICS'06).

[15]  Lars Hallnäs,et al.  A Proof-Theoretic Approach to Logic Programming. II. Programs as Definitions , 1991, J. Log. Comput..

[16]  Rémy Haemmerlé ICLP 2005 doctoral consortium , 2005, ICLP 2005.

[17]  Krzysztof R. Apt,et al.  Logic Programming , 1990, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[18]  Vijay A. Saraswat,et al.  Concurrent constraint programming , 1989, POPL '90.

[19]  Jean-Marc Andreoli,et al.  Linear objects: Logical processes with built-in inheritance , 1990, New Generation Computing.

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

[21]  Mark E. Stickel A prolog Technology Theorem Prover: Implementation by an Extended Prolog Compiler , 1986, CADE.