Article

On Completion of Constraint Handling Rules

Technische Universität München, München, Bavaria, Germany
Lecture Notes in Computer Science (Impact Factor: 0.51). 05/1998; DOI: 10.1007/3-540-49481-2_4
Source: CiteSeer

ABSTRACT

Constraint Handling Rules (CHR) is a high-level language for writing constraint solvers either from scratch or by modifying existing solvers. An important property of any constraint solver is confluence: The result of a computation should be independent from the order in which constraints arrive and in which rules are applied. In previous work [Abd97], a sufficient and necessary condition for the confluence of terminating CHR programs was given by adapting and extending results about conditional term rewriting systems. In this paper we investigate so-called completion methods that make a non-confluent CHR program confluent by adding new rules. As it turns out, completion can also exhibit inconsistency of a CHR program. Moreover, as shown in this paper, completion can be used to define new constraints in terms of already existing constraints and to derive constraint solvers for them.

Download full-text

Full-text

Available from: Slim Abdennadher, Feb 21, 2013
  • Source
    • "Related Analyses. Abdennadher and Frühwirth (1998) showed how to do completion of CHR programs. Completion is a technique to transform a non-confluent program into a confluent one by adding rules. "
    [Show abstract] [Hide abstract]
    ABSTRACT: Constraint Handling Rules (CHR) is a high-level programming language based on multi-headed multiset rewrite rules. Originally designed for writing user-defined constraint solvers, it is now recognized as an elegant general purpose language. CHR-related research has surged during the decade following the previous survey by Fruehwirth. 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. Comment: 49 pages. To appear in Theory and Practice of Logic Programming
    Full-text · Article · Jan 2010 · Theory and Practice of Logic Programming
  • Source
    • "To make this survey somewhat self-contained, we briefly introduce the syntax and informal semantics of Constraint Handling Rules. For a gentler introduction to CHR, we refer the reader to Frühwirth (1998), Frühwirth and Abdennadher (2003), Schrijvers (2005), Duck (2005), or Frühwirth (2008). CHR is embedded in a host language H that provides data types and a number of predefined constraints. "
    [Show abstract] [Hide abstract]
    ABSTRACT: Constraint Handling Rules (CHR) is a high-level programming language based on multiheaded multiset rewrite rules. Originally designed for writing user-defined constraint solvers, it is now recognized as an elegant general purpose language. Constraint Handling Rules related research has surged during the decade following the previous survey by Frühwirth (J. Logic Programming, Special Issue on Constraint Logic Programming, 1998, vol. 37, nos. 1–3, pp. 95–138). 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.
    Full-text · Article · Jan 2010 · Theory and Practice of Logic Programming
  • Source
    • "The demon method propagates the constraint by updating the bound of the other variable. The extension mechanism heavily depends on the specification of a filtering algorithm rather than a set of indexicals (e.g., clp(FD) [28]) or inference rules (e.g., CHR [39]) and therefore follows a far more "
    [Show abstract] [Hide abstract]
    ABSTRACT: This chapter addresses the integration of constraints and s earch into programming lan- guages from three different points of views. It first focuses on the use of constraints to model combinatorial optimization problem and to easily implement search procedures, then it considers the use of constraints for supporting conc urrent computations and finally turns to the use of constraints to enable open implementations of constraints solvers. The idea of approaching hard combinatorial optimization problems through a combi- nation of search and constraint solving appeared first in log ic programming. The genesis and growth of constraint programming within logic programming is not surprising as it catered to two fundamental needs: a declarative style and non-determinism. Despite the continued support of logic programming for constraint programmers, re- search efforts were initiated to import constraint technol ogies into other paradigms (in par- ticular procedural and object-oriented paradigms) to cate r to a broader audience and lever- age constraint-based techniques in novel areas. The first mo tivation behind a transition is a desire to ease the adoption of a successful technology. Moving constraints to a platform and paradigm widely accepted would facilitate their adoption within existing software systems by reducing resistance to the introduction of technologies and tools perceived as radically different. A second motivation is that constraints are vers atile abstractions equally well suited for modeling and supporting concurrency. In particular, concurrent computation can be seen as agents that communicate and coordinate through a shared constraint store. Third, constraint-based techniques can leverage the semantics of a target application do- main to design specialized constraints or search procedures that are more effective than off-the-shelves constraints. The ability, for domain spec ialists, to easily create, customize and extend both constraints solvers and search is therefore a necessity for adaptability. The continued success and growth of constraints depends on the availability of flexible, extensible, versatile and easy to use solvers. It is conting ent on retaining performance that
    Full-text · Chapter · Jan 2006
Show more