The family of concurrent logic programming languages
ACM Computing Surveys (CSUR)
Programming by multiset transformation
Communications of the ACM
Embedding as a tool for language comparison
Information and Computation
From logic programming to Prolog
From logic programming to Prolog
Coordination languages and their significance
Communications of the ACM
Expressive Results for Process Algebras
Proceedings of the REX Workshop on Sematics: Foundations and Applications
On the incomparability of Gamma and Linda
On the incomparability of Gamma and Linda
Comparing the expressive power of the synchronous and asynchronous $pi$-calculi
Mathematical Structures in Computer Science
Computation: finite and infinite machines
Computation: finite and infinite machines
Tutorial on separation results in process calculi via leader election problems
Theoretical Computer Science
Electronic Notes in Theoretical Computer Science (ENTCS)
Turing-Complete Subclasses of CHR
ICLP '08 Proceedings of the 24th International Conference on Logic Programming
Expressiveness of Multiple Heads in CHR
SOFSEM '09 Proceedings of the 35th Conference on Current Trends in Theory and Practice of Computer Science
CLP projection for constraint handling rules
Proceedings of the 13th international ACM SIGPLAN symposium on Principles and practices of declarative programming
Revisiting glue expressiveness in component-based systems
COORDINATION'11 Proceedings of the 13th international conference on Coordination models and languages
The expressive power of CHR with priorities
Information and Computation
Hi-index | 0.00 |
Constraint Handling Rules (CHR) is a committed-choice declarative language that has been originally designed for writing constraint solvers and is nowadays a general purpose language. CHR programs consist of multiheaded guarded rules which allow to rewrite constraints into simpler ones until a solved form is reached. Many empirical evidences suggest that multiple heads augment the expressive power of the language, however no formal result in this direction has been proved, so far. In the first part of this article we analyze the Turing completeness of CHR with respect to the underlying constraint theory. We prove that if the constraint theory is powerful enough then restricting to single head rules does not affect the Turing completeness of the language. On the other hand, differently from the case of the multiheaded language, the single head CHR language is not Turing powerful when the underlying signature (for the constraint theory) does not contain function symbols. In the second part we prove that, no matter which constraint theory is considered, under some reasonable assumptions it is not possible to encode the CHR language (with multi-headed rules) into a single headed language while preserving the semantics of the programs. We also show that, under some stronger assumptions, considering an increasing number of atoms in the head of a rule augments the expressive power of the language. These results provide a formal proof for the claim that multiple heads augment the expressive power of the CHR language.