Newsgroups: comp.constraints
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!news2.near.net!howland.reston.ans.net!Germany.EU.net!Munich.Germany.EU.net!ecrc!acrab60!thom
From: thom@ecrc.de (Thom Fruehwirth)
Subject: Re: Solving a conjunction of X <= Y clauses
Message-ID: <D2nG79.Dvq@ecrc.de>
Sender: news@ecrc.de
Reply-To: thom@ecrc.de
Organization: European Computer-Industry Research Centre GmbH.
References: <D2Lysz.3qn@eng_ser1.erg.cuhk.hk>
Date: Thu, 19 Jan 1995 11:06:44 GMT
Lines: 71

jlee@cs.cuhk.hk (Jimmy Ho Man Lee) wrote:
>Any papers or techreports describing CHRs and its solvers?  Thanx.

Here is the CHR announcement with the information you asked for:

ANNOUNCING CONSTRAINT HANDLING RULES

A LANGUAGE FOR CONSTRAINT SYSTEMS

Constraint handling rules (CHRs) are a high-level language extension
to implement constraint systems. CHRs support simplification and
propagation as well as incremental solving (satisfaction) of
constraints. Using constraint meta programming techniques, CHRs
provide relative simplification, incremental entailment (implication),
negation, disjunction and hierarchies of constraints. CHRs also
include a built-in labeling feature.

ANY FIRST-ORDER CONSTRAINT THEORY AND CONSISTENCY ALGORITHM
 
With CHRs, any first-order constraint theory and incremental
consistency algorithm can be implemented at a high level of
abstraction. The usual formalisms to describe a constraint theory,
i.e.  inference rules, rewrite rules, sequents, first-order axioms,
can be expressed as CHR programs in a straightforward way. Starting
from this executable specification, the rules then can be refined and
adapted to the specifics of the application.

HOW CHRs WORK

CHRs are essentially a committed-choice language consisting of guarded
rules. CHRs define simplification of, and propagation over,
constraints. Simplification rewrites constraints to simpler
constraints while preserving logical equivalence (e.g. X>Y,Y>X <=>
false). Propagation adds new constraints which are logically redundant
but may cause further simplification (e.g. X>Y,Y>Z ==> X>Z).
Repeatedly applying the rules incrementally solves constraints (e.g.
A>B,B>C,C>A leads to false). With multiple heads and propagation
rules, CHRs provide two features which are essential for non-trivial
constraint handling.

18 EXAMPLE CONSTRAINT SOLVERS

The CHR release currently includes 18 example constraint handlers,
many of them novel or with extended functionality over existing
implementations. There are handlers for lists, sets, trees, terms,
finite and infinite domains, booleans, linear polynomials over reals
and rationals, for incremental path consistency, for terminological
and temporal reasoning as well as for sound negation and conditional
control constructs. The average number of rules in a constraint
handler is as low as 24. Usually, speed is within an order of
magnitude of comparable hard-coded constraint solvers.

HOW TO GET CHRs

CHRs are available as a library of ECLiPSe, ECRC's advanced constraint
logic programming platform. The CHR release includes a full color demo
involving geometric constraints, a compiler (into ECLiPSe), two
debuggers, runtime system and the example constraint handlers. All
ECLiPSe documentation is available by anonymous ftp from ftp.ecrc.de,
directory /pub/eclipse/doc. CHRs are documented in the
extensions-manual. You can also ftp a technical report describing
constraint handling rules (file ECRC-92-18.ps.Z in directory
pub/ECRC_tech_reports/reports) and their application to temporal and
terminological reasoning (files ECRC-94-05.ps.Z and ECRC-94-06.ps.Z).
ECLiPSe 3.4 is available at a nominal fee of approx. $200 for
non-profit organizations from eclipse_request@ecrc.de . You can also
access all of the above information using WWW, http://www.ecrc.de .


Thom Fruehwirth (thom@ecrc.de), ECRC Munich, Germany

