270 likes | 379 Views
Constraint Handling Rules. Pierangelo Dell’Acqua Dept. of Science and Technology Linköping University pier@itn.liu.se. Constraint programming 2001 November 13th 2001 http://www.ida.liu.se/labs/logpro/ulfni/cp2001/. Overview. Motivation Language CHR
E N D
Constraint Handling Rules Pierangelo Dell’Acqua Dept. of Science and Technology Linköping University pier@itn.liu.se Constraint programming 2001 November 13th 2001 http://www.ida.liu.se/labs/logpro/ulfni/cp2001/
Overview • Motivation • Language CHR • Declarative and operational semantics • Properties • Examples of CHR constraint solvers
Based on • Theory and Practice of Constraint Handling Rules Thom Frühwirth, J. Logic Programming 1994:19, 20:1-679 • Examples CHR constraint solvers available at: www.informatik.uni-muenchen.de/~fruehwir/chr/
Black-box vs Glass-box solvers • In most systems constraint solving is hard-wired in a built-in constraint solver in a low-level language: black-box approach • efficiency • non-extensible, unpredictable, hard to debug • Some systems facilitate defining new constraints and solvers: glass-box approach • improved control of propagation and search • examples CHR, HAL, ...
Constraint Handling Rules (CHR) • Declarative programming language for the specification and implementation of constraint solvers and programs Application • CHR-constraint solvers are open and flexible, can be maintained, debugged and analysed CHR-constraints CHR-solver built-in constraints Black-box Host language (Prolog, Lisp, … )
CHR by example The partial order relation X Y as a user-defined constraint: X=<Y <=> X=Y | true. reflexivity X=<Y Y=<X <=> X=Y. antisymmetry X=<Y Y=<Z ==> X=<Z. transitivity Computation: A=<B C=<A B=<C C=<A A=<B propagates C=<B by transitivity C=<B B=<C simplifies to B=C by antisymmetry A=<B C=<A simplifies to A=B by antisymmetry since B=C A=B B=C
CHR syntax Head H conjunction of CHR-constraints Guard G conjunction of built-in constraints Body B conjunction of built-in and CHR-constraints A CHR-program is a finite set of CHR-rules. There are three kinds of CHR-rules: Simplification H <=> G | B PropagationH ==> G | B SimpagationH1 \ H2 <=> G | B
Declarative semantics Simplification rule H <=> G | B h (g (G) ( H b ( B ) ) ) Propagation rule H ==> G | B h (g (G) ( H b ( B ) ) ) Simpagation rule H1 \ H2 <=> G | B h1h2 (g (G) (H1H2 b (H1B)))
Declarative semantics (2) Declarative semantics of a CHR-program P: Sem(P) = LP, CT where LP is the logical reading of the CHR-rules in P and CT is a theory for built-in constraints
Operational semantics A state is a tuple F,E,D where: F is a conjunction of CHR- and built-in constraints (goal store) E is a conjunction of CHR-constraints (CHR-store) D is a conjunction of built-in constraints (built-in constraints store)
CHR transitions Solve CF, E, D F, E, D2 if C is a built-in constraint and CT|= (CD) D2 Introduce HF, E, D F, HE, D if H is a CHR-constraint Simplify F, H2E, D BF, E, H=H2D if (H <=> G | B) in P and CT|= D h (H=H2 G)
CHR transitions (2) Propagate F, H2E, D BF, H2E, H=H2D if (H ==> G | B) in P and CT|= D h (H=H2 G)
Initial and final states An initial state consists of a goal G and empty constraint stores: G,true,true A final state is either of the form: (i) F,E,false failedfinal state or of the form: (ii) true,E,D successfulfinal state where no transition is applicable and D false
CHR computations A computation of a goal G is a sequence S0, S1, … of states with Si Si+1 beginning with the initial state S0 = G,true,true and ending with a final state or diverging An answer of a goal G is the final state of a computation for G The logical meaning of a state F,E,D, which occurs in a computation for G, is x (FED), where x are the variables in F,E,D but not in G
Example CHR calculus X=<Y <=> X=Y | true. reflexivity X=<Y Y=<X <=> X=Y. antisymmetry X=<Y Y=<Z ==> X=<Z. transitivity A=<BC=<AB=<C, true, true Introduce3 true, A=<BC=<A B=<C, true Propagate C=<B, A=<B C=<A B=<C, true Introduce true, A=<B C=<A B=<CC=<B, true Simplify B=C, A=<B C=<A, true Solve true, A=<BC=<A, B=C Simplify A=B, true, B=C Solve true, true, A=B B=C
Logical equivalence of states CHR transitions preserve the logical meaning of states: Lemma Let P be a CHR program and G a goal. If C is the logical meaning of a state in a computation of G, then LP, CT|= ( G C) There is no distinction between successful and failed computations
Correspondence between semantics Theorem (Soundness) Let P be a CHR program and G a goal. If G has a computation with answer C, then LP, CT|= ( C G) Theorem (Completeness) Let P be a CHR program and G a goal with at least one finite computation. Let C be a conjunction of constraints. If LP, CT|= (GC), then G has a computation with answer C2 such that LP, CT|= ( C C2)
Example: completeness The completeness theorem does not hold if G has no finite computations: Let P be { p <=> p } and G the goal p. Since LP is {pp}, it holds that LP,CT|= pp, but G has only an infinite computation
Example: failed computations The completeness theorem is weak for failed computations: { p <=> q, p <=> false } Let P be: We have that LP, CT|= q, but q has no failed computation. It has a successful derivation with answer q.
Confluence Confluence: The answer of a goal G is always the same, no matter which of the applicable rules are applied { p <=> q, p <=> false, q <=> false} is confluent { p <=> q, p <=> false } is not confluent
Soundness and Completeness revisited • Theorem (Strong Soundness and Completeness) • Let P be a terminating and confluent CHR program, G a goal and C a conjunction of constraints. • Then the following are equivalent: • LP, CT|= (CG) • G has a computation with answer C2 such that: • LP, CT|= (CC2) • Every computation of G has an answer C2 such that: • LP, CT|= (CC2)
CLP + CHR Any CLP language can be extended with CHR Idea: - Allow clauses for CHR constraints: introduce choices - Regard a predicate as a constraint and add CHR rules for it Don’t know and don’t care nondeterminism combined in a declarative way
CLP+CHR language A CLP+CHR program is a finite set of : (i) CLP clauses for predicates and CHR constraints, and (ii) CHR rules for CHR constraints. A CLP clause is of the form: H :- B1,…,Bk (k 0) conjunction of atoms, CHR constraints and built-in constraints an atom or a CHR constraint not a built-in constraint
CLP+CHR language (2) The logical meaning of a CLP clause is given by Clark’s completion Backward compatibility Labelling declarations (see def. 6.1 of JLP paper) are dropped, easily simulated H :- B label-with H if G lw, H <=> G | H2, lw H2 :- B new CHR constraint CHR constraint new predicate
CLP+CHR transitions Unfold (revisited) H2F, E, D BF, E, H=H2D if (H:-B) in P, H2 is a predicate and CT|= Dh (H=H2) Label (revisited) F, H2E, D BF, E, H=H2D if (H:-B) in P, H2 is a CHR constraint and CT|= Dh (H=H2)
Examples of CHR solvers Several constraint solvers have been written in CHR, including new constraint domains such as terminological and temporal reasoning bool.pl boolean constraints arc.pl arc-consistency over finite domains interval.pl interval domains over integers and reals list.pl equality constraints over concatenation of lists
Sicstus Prolog + CHR A CHR rule in SicstusProlog+CHR is of the form: H <=> G | B H ==> G | B H1 \ H2 <=> G | B where: H is a conjunction of CHR-constraints G is a conjunction of atoms and built-in constraints B is a conjunction of atoms, built-in and CHR-constraints A CHR rule can be fired if its guard G is true Note that during the proof of the guard G no new binding can be generated for variables that occur also in H