Results 1  10
of
16
The Computational Power and Complexity of Constraint Handling Rules
 In Second Workshop on Constraint Handling Rules, at ICLP05
, 2005
"... Constraint Handling Rules (CHR) is a highlevel rulebased programming language which is increasingly used for general purposes. We introduce the CHR machine, a model of computation based on the operational semantics of CHR. Its computational power and time complexity properties are compared to thos ..."
Abstract

Cited by 52 (21 self)
 Add to MetaCart
(Show Context)
Constraint Handling Rules (CHR) is a highlevel rulebased programming language which is increasingly used for general purposes. We introduce the CHR machine, a model of computation based on the operational semantics of CHR. Its computational power and time complexity properties are compared to those of the wellunderstood Turing machine and Random Access Memory machine. This allows us to prove the interesting result that every algorithm can be implemented in CHR with the best known time and space complexity. We also investigate the practical relevance of this result and the constant factors involved. Finally we expand the scope of the discussion to other (declarative) programming languages.
As time goes by: Constraint handling rules  A survey of CHR research between 1998 and 2007
, 2009
"... Constraint Handling Rules (CHR) is a highlevel programming language based on multiheaded multiset rewrite rules. Originally designed for writing userdefined constraint solvers, it is now recognized as an elegant general purpose language. CHRrelated research has surged during the decade following ..."
Abstract

Cited by 16 (11 self)
 Add to MetaCart
Constraint Handling Rules (CHR) is a highlevel programming language based on multiheaded multiset rewrite rules. Originally designed for writing userdefined constraint solvers, it is now recognized as an elegant general purpose language. CHRrelated research has surged during the decade following the previous survey by Frühwirth (1998). Covering more than 180 publications, this new survey provides an overview of recent results in a wide range of research areas, from semantics and analysis to systems, extensions and applications.
Extending CHR with negation as absence
 Dept. of Computer Science
, 2006
"... In this exploratory paper, we introduce CHR ¬ , an extension of the CHR language with negation as absence, and we illustrate how the added expressiveness allows CHR programmers to write more declarative and concise rules. We show the difficulties of integrating negation with the conventional executi ..."
Abstract

Cited by 14 (10 self)
 Add to MetaCart
(Show Context)
In this exploratory paper, we introduce CHR ¬ , an extension of the CHR language with negation as absence, and we illustrate how the added expressiveness allows CHR programmers to write more declarative and concise rules. We show the difficulties of integrating negation with the conventional execution mechanism of CHR. A formal operational semantics for CHR ¬ is presented, and its theoretical and practical implications are evaluated critically. We introduce a sourcetosource transformation from CHR ¬ to regular CHR.
Modular CHR with ask and tell
 In Schrijvers et al
"... Abstract. In this paper, 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. Unlik ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
(Show Context)
Abstract. In this paper, 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. 1
CHR for imperative host languages
 Issue of LNAI on Constraint Handling Rules
, 2008
"... Abstract. In this paper, we address the different conceptual and technical difficulties encountered when embedding CHR into an imperative host language. We argue that a tight, natural integration leads to a powerful programming language extension, intuitive to both CHR and imperative programmers. We ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
Abstract. In this paper, we address the different conceptual and technical difficulties encountered when embedding CHR into an imperative host language. We argue that a tight, natural integration leads to a powerful programming language extension, intuitive to both CHR and imperative programmers. We show how to compile CHR to highly optimized imperative code. To this end, we first review the wellestablished CHR compilation scheme, and survey the large body of possible optimizations. We then show that this scheme, when used for compilation to imperative target languages, leads to stack overflows. We therefore introduce new optimizations that considerably improve the performance of recursive CHR programs. Rules written using tail calls are even guaranteed to run in constant space. We implemented systems for both Java and C, following the language design principles and compilation scheme presented in this paper, and show that our implementations outperform other stateoftheart CHR compilers by several orders of magnitude. 1
Compiling CHR to parallel hardware
 PROCEEDINGS OF THE 14TH INTERNATIONAL ACM SIGPLAN SYMPOSIUM ON PRINCIPLES AND PRACTICES OF DECLARATIVE PROGRAMMING, ACM
, 2012
"... This paper investigates the compilation of a committedchoice rulebased language, Constraint Handling Rules (CHR), to specialized hardware circuits. The developed hardware is able to turn the intrinsic concurrency of the language into parallelism. Rules are applied by a custom executor that handles ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
(Show Context)
This paper investigates the compilation of a committedchoice rulebased language, Constraint Handling Rules (CHR), to specialized hardware circuits. The developed hardware is able to turn the intrinsic concurrency of the language into parallelism. Rules are applied by a custom executor that handles constraints according to the best degree of parallelism the implemented CHR specification can offer. Our framework deploys the target digital circuits through the Field Programmable Gate Array (FPGA) technology, by first compiling the CHR code fragment into a low level hardware description language. We also discuss the realization of a hybrid CHR interpreter, consisting of a software component running on a general purpose processor, coupled with a hardware accelerator. The latter unburdens the processor by executing in parallel the most computational intensive CHR rules directly compiled in hardware. Finally the performance of a prototype system is evaluated by time efficiency measures.
Complete propagation rules for lexicographic order constraints over arbitrary domains
 IN RECENT ADVANCES IN CONSTRAINTS, CSCLP 2005, LNAI
, 2006
"... We give an efficiently executable specification of the global constraint of lexicographic order in the Constraint Handling Rules (CHR) language. In contrast to previous approaches, the implementation is short and concise without giving up on the best known worst case time complexity. It is increment ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
(Show Context)
We give an efficiently executable specification of the global constraint of lexicographic order in the Constraint Handling Rules (CHR) language. In contrast to previous approaches, the implementation is short and concise without giving up on the best known worst case time complexity. It is incremental and concurrent by nature of CHR. It is provably correct and confluent. It is independent of the underlying constraint system, and therefore not restricted to finite domains. We have found a direct recursive decomposition of the problem. We also show completeness of constraint propagation, i.e. that all possible logical consequences of the constraint are generated by the implementation. Finally, we report about some practical implementation experiments.
Theory of Finite or Infinite Trees Revisited
 UNDER CONSIDERATION FOR PUBLICATION IN THEORY AND PRACTICE OF LOGIC PROGRAMMING
, 2007
"... We present in this paper a firstorder axiomatization of an extended theory T of finite or infinite trees, built on a signature containing an infinite set of function symbols and a relation finite(t) which enables to distinguish between finite or infinite trees. We show that T has at least one model ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
We present in this paper a firstorder axiomatization of an extended theory T of finite or infinite trees, built on a signature containing an infinite set of function symbols and a relation finite(t) which enables to distinguish between finite or infinite trees. We show that T has at least one model and prove its completeness by giving not only a decision procedure, but a full firstorder constraint solver which gives clear and explicit solutions for any firstorder constraint satisfaction problem in T. The solver is given in the form of 16 rewriting rules which transform any firstorder constraint ϕ into an equivalent disjunction φ of simple formulas such that φ is either the formula true or the formula false or a formula having at least one free variable, being equivalent neither to true nor to false and where the solutions of the free variables are expressed in a clear and explicit way. The correctness of our rules implies the completeness of T. We also describe an implementation of our algorithm in CHR (Constraint Handling Rules) and compare the performance with an implementation in C++ and that of a recent decision procedure for decomposable theories.
Toward a FirstOrder Extension of Prolog’s Unification using CHR  A CHR FirstOrder Constraint Solver Over Finite or Infinite Trees
, 2007
"... Prolog, which stands for PROgramming in LOGic, is the most widely used language in the logic programming paradigm. One of its main concepts is unification. It represents the mechanism of binding the contents of variables and can be seen as solving conjunctions of equations over finite or infinite tr ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Prolog, which stands for PROgramming in LOGic, is the most widely used language in the logic programming paradigm. One of its main concepts is unification. It represents the mechanism of binding the contents of variables and can be seen as solving conjunctions of equations over finite or infinite trees. We present in this paper an idea of a firstorder extension of Prolog’s unification by giving a general algorithm for solving any firstorder constraint in the theory T of finite or infinite trees, extended by a relation which allows to distinguish between finite and infinite trees. The algorithm is given in the form of 16 rewriting rules which transform any firstorder formula ϕ into an equivalent disjunction φ of simple formulas in which the solutions of the free variables are expressed in a clear and explicit way. We end this paper describing a CHR implementation of our algorithm. CHR (Constraint Handling Rules) has originally been developed for writing constraint solvers, but the constraints here go much beyond implicitly quantified conjunctions of atomic constraints and are considered as arbitrary firstorder formulas built on the signature of T. We discuss how we implement nested local constraint stores and what programming patterns and language features we found useful in the CHR implementation of our algorithm.