Section: New Results
Linear Logic Concurrent Constraint Programming and Constraint Handling Rules
Participants : François Fages, Thierry Martinez, Sylvain Soliman.
We are developing SiLCC an imperative and concurrent constraint programming language based on a single paradigm: the one of Vijay Saraswat's concurrent constraint programming extended with constraint systems based on Jean-Yves Girard's Linear Logic. From a constraint programming point of view, the unique combination of constraint programming with imperative features opens many new possibilities, among which:
-
the capability of programming constraint solvers in the language, making them extensible by the user,
-
making a fully bootstrapped implementation of a constraint programming language (for the first time since Prolog)
-
combining constraint reasoning with state change;
-
embedding program declarations, modules and closures as agents;
-
proving program correctness using Linear Logic.
The Constraint Handling Rules (CHR) language of Thom Frühwirth shares many similarities with SiLCC. CHR (and its modular version CHRat [21] ) and SiLCC are based on the same model of concurrent computation, where agents communicate through a shared constraint store, with a synchronization mechanism based on constraint entailment. In particular, the Constraint Simplification Rules (CSR) subset of CHR and the flat subset of LCC, where agent nesting is restricted, are very close syntactically and semantically.
In [18] , we analyze these similarities by providing translations between CSR and flat-LCC,
on the one hand,
and a transformation from the full LCC language to flat-LCC, on the other hand.
This transformation is similar to -lifting
in functional languages. In conjunction with the equivalence between
CHR and CSR with respect to naive operational semantics, these results
lead to semantics-preserving translations from full LCC to CHR and
conversely. Immediate consequences of this work include new proofs for
CHR linear logic and phase semantics, relying on corresponding results
for LCC, plus an encoding of the
-calculus in CHR.