Concurrent Constraint Handling Rules (CCHR) Home Page
What is CCHR?
CCHR is an experimental concurrent implementation of Constraint Handling Rules, designed to exploit concurrency and parallelism explicitly. CCHR is implemented in Haskell, with software transactional memory to manage synchronization of multiple solver threads working on the same problem. Constraint Handling Rules (CHR) is a concurrent committed choice constraint logic programming language to describe transformations (rewritings) among multi-sets of constraints (atomic formulae). CHR naturally support concurrent programming. Conjunction of constraints can be regarded as interacting collections of multiple asynchronous agents or processes. Their interaction is specified via transformation rules which can be applied simultaneously if the transformation rules do not interfere. Hence, one would expect to run CHR faster by executing transformation rules in parallel on a multi-core machine architecture. CCHR exactly allows such concurrency while solving CHR problems and exhibits significant speed up in most problems when executed on multi-core systems.
News
- 20/03/07: Included the new version of CCHR prototype. This version allows logical variables and simpagation rules. However, it is still a prototype and does not have a compiler yet.
- 14/03/07: Note that current version of CCHR corresponds to the implementation detailed in our DAMP'07 paper (Propositional CHR). We will make the latest version (includes simpagation rules and logical variables) available shortly.
Implementation
Publications
Discussion
