Transformations of CCP programs

We introduce a transformation system for concurrent constraint programming (CCP). We define suitable applicability conditions for the transformations that guarantee the input/output CCP semantics is also preserved when distinguishing deadlocked computations from successful ones and when considering intermediate results of (possibly) nonterminating computations.The system allows us to optimize CCP programs while preserving their intended meaning: In addition to the usual benefits for sequential declarative languages, the transformation of concurrent programs can also lead to the elimination of communication channels and of synchronization points, to the transformation of nondeterministic computations into deterministic ones, and to the crucial saving of computational space. Furthermore, since the transformation system preserves the deadlock behavior of programs, it can be used for proving deadlock-freeness of a given program with respect to a class of queries. To this aim, it is sometimes sufficient to apply our transformations and to specialize the resulting program with respect to the given queries in such a way that the obtained program is trivially deadlock-free.

[1]  J. W. Lloyd,et al.  Foundations of logic programming; (2nd extended ed.) , 1987 .

[2]  Dana S. Scott,et al.  Concurrent constraint programming languages , 1989 .

[3]  Michael J. Maher A Tranformation System for Deductive Databases Modules with Perfect Model Semantics , 1993, Theor. Comput. Sci..

[4]  John Wylie Lloyd,et al.  Foundations of Logic Programming , 1987, Symbolic Computation.

[5]  K. Clark,et al.  Predicate logic: a calculus for deriving programs , 1977, IJCAI 1977.

[6]  Gert Smolka The Oz Programming Model , 1996 .

[7]  Gert Smolka,et al.  The Oz Programming Model , 1996, Computer Science Today.

[8]  Akinori Yonezawa,et al.  Partial Evaluation Scheme for Concurrent Languages and Its Correctness , 1996, Euro-Par, Vol. I.

[9]  Antonella Santone,et al.  Unfold/Fold Transformations of Concurrent Processes , 1996, PLILP.

[10]  Prakash Panangaden,et al.  The semantic foundations of concurrent constraint programming , 1991, POPL '91.

[11]  Jan Komorowski,et al.  Partial evaluation as a means for inferencing data structures in an applicative language: a theory and implementation in the case of prolog , 1982, POPL '82.

[12]  Frank S. de Boer,et al.  On the Semantics of Concurrent Constraint Programming , 1992, ALPUK.

[13]  도경구,et al.  Partial Evaluation , 1998, Lecture Notes in Computer Science.

[14]  Kazunori Ueda,et al.  Transformation Rules for GHC Programs , 1988, FGCS.

[15]  Kim Marriott,et al.  Suspension analyses for concurrent logic programs , 1994, TOPL.

[16]  Sandro Etalle,et al.  Unfold/Fold Transformations of CCP Programs , 1998, CONCUR.

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

[18]  Frank S. de Boer,et al.  A Fully Abstract Model for Concurrent Constraint Programming , 1991, TAPSOFT, Vol.1.

[19]  Matthieu Martel,et al.  Self-applicable partial evaluation for the pi-calculus , 1997, PEPM.

[20]  Tadashi Kanamori,et al.  Preservation of Stronger Equivalence in Unfold/Fold Logic Program Transformation , 1990, Theor. Comput. Sci..

[21]  Alberto Pettorossi,et al.  Transformation of Logic Programs: Foundations and Techniques , 1994, J. Log. Program..

[22]  Sandro Etalle,et al.  Transformations of CLP Modules , 1996, Theor. Comput. Sci..

[23]  Christopher J. Hogger,et al.  Derivation of Logic Programs , 1981, JACM.

[24]  Kim Marriott,et al.  Some Global Compile-Time Optimizations for CLP(R) , 1991, ISLP.

[25]  Matthieu Martel,et al.  Self-applicable partial evaluation for the pi-calculus , 1997 .

[26]  John C. Shepherdson,et al.  Unfold/fold transformations of logic programs , 1992, Mathematical Structures in Computer Science.

[27]  Sandro Etalle,et al.  Partial evaluation of concurrent constraint languages , 1998, CSUR.

[28]  Irène Guessarian,et al.  Transforming Constraint Logic Programs , 1994, STACS.

[29]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[30]  Benjamin Goldberg,et al.  Partial-evaluation techniques for concurrent programs , 1997 .

[31]  Benjamin Goldberg,et al.  Partial-evaluation techniques for concurrent programs , 1997, PEPM.

[32]  Maurizio Gabbrielli,et al.  Proving concurrent constraint programs correct , 1997, TOPL.

[33]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[34]  Michael J. Maher,et al.  Constraint Logic Programming: A Survey , 1994, J. Log. Program..

[35]  Kazunori Ueda,et al.  Guarded Horn Clauses , 1986, LP.

[36]  J. Lloyd Foundations of Logic Programming , 1984, Symbolic Computation.