Section: New Results
Design and Implementation of SiLCC and CHRat Programming Languages
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. In the late 90's we developed the theory of this extension and we are now working on its implementation.
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 main step realized this year has been done in the framework of the well-known Constraint Handling Rules (CHR) language of Tom Fruhwirth which share many similarities with SiLCC. In  ,  , we introduce a modular version of the Constraint Handling Rules language CHR, called CHRat for modular CHR with ask and tell . Any constraint defined in a CHRat component can be reused both in rules and guards in another CHRat component to define new constraint solvers. Unlike previous work on modular CHR, our approach is completely general as it does not rely on an automatic derivation of conditions for checking entailment in guards, but on a programming discipline for defining both satisfiability ( tell ) and entailment ( ask ) checks by CHRat rules for each constraint. We define the operational and declarative semantics of CHRat, provide a transformation of CHRat components to flat CHR programs, and prove the preservation of the semantics. We then provide examples of the modularization of classical CHR constraint solvers.
In  , we show how default reasoning and negation as failure can be integrated in CHR with disjunction.