Graph Rewriting for a Partial Ordering Semantics of Concurrent Constraint Programming

Abstract The concurrent constraint logic programming framework extends both logic programming and concurrent logic programming in that a program consists of the concurrent execution of agents which add (i.e., “tell”) and check (i.e., “ask”) constraints on a shared set of variables, and whose behaviour is described by a set of clauses. This formulation is very general and can be seen as a concurrent logic programming shell which is parametrized w.r.t. the underlying constraint system. Graphs and graph grammars can be conveniently used to describe such a framework, and the modelling is so elegant and expressive that they provide what we believe is the most natural abstract machine for concurrent constraint programming. In fact, basic notions like the possibility of asking or telling a constraint into the shared store are very easy to express in the algebraic approach to graph rewriting. More precisely, the shared store is represented as a (hyper)graph, where nodes are variables and arcs are constraints or agents. Then, both the entailment relation of the underlying constraint system and the local behaviour of agents is expressed by suitable sets of graph productions, which transform the current global state of the system into a new one. Finally, each computation is represented by a graph derivation. In our setting the shared store is not seen as one constraint, but as a set of constraints which possibly share variables. This is in contrast with all the operational and denotational semantics already proposed for the concurrent constraint paradigm, which treat the shared store as a monolith and, thus, are not useful for deriving any information about the causal dependencies among the agents or the maximal degree of parallelism. On the contrary, our approach can easily express such information in the form of a partial ordering associated to each graph derivation. This can be regarded as the first attempt to give a true-concurrency semantics to concurrent constraint programming and, more generally, to graph grammars.

[1]  Francesca Rossi,et al.  Logic Programming as Hypergraph Rewriting , 1991, TAPSOFT, Vol.1.

[2]  Francesca Rossi,et al.  Graph Grammars as Context-Dependent Rewriting Systems: A Partial Ordering Semantics , 1992, CAAP.

[3]  Wolfgang Reisig Petri Nets: An Introduction , 1985, EATCS Monographs on Theoretical Computer Science.

[4]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

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

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

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

[8]  Ugo Montanari,et al.  A model for distributed systems based on graph rewriting , 1987, JACM.

[9]  Joxan Jaffar,et al.  Constraint logic programming , 1987, POPL '87.

[10]  S. Lane Categories for the Working Mathematician , 1971 .

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

[12]  Hartmut Ehrig,et al.  Introduction to the Algebraic Theory of Graph Grammars (A Survey) , 1978, Graph-Grammars and Their Application to Computer Science and Biology.

[13]  Hartmut Ehrig,et al.  Graph Grammars and Logic Programming , 1990, Graph-Grammars and Their Application to Computer Science.

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

[15]  Amir Pnueli,et al.  Proving Partial Order Liveness Properties , 1990, ICALP.

[16]  Dana S. Scott,et al.  Some Domain Theory and Denotational Semantics in Coq , 2009, TPHOLs.

[17]  Francesca Rossi,et al.  Constraint Relaxation may be Perfect , 1991, Artif. Intell..

[18]  Francesca Rossi,et al.  True Concurrency in Concurrent Constraint Programming , 1991, ISLP.

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

[20]  Ehud Shapiro,et al.  The family of concurrent logic programming languages , 1989, CSUR.