Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

161
Ontologi es Reasonin g Component s Agents Simulatio ns Constraint Handling Rules (CHR): Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Rule-Based Constraint Solving and Deduction Deduction Jacques Robin

description

Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction. Jacques Robin. Constraint Handling Rules (CHR) Key ideas Introductory example CHR constraint solver over real variables CHR with disjunction (CHR  ) CHR constraint solver over finite domain variables - PowerPoint PPT Presentation

Transcript of Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Page 1: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

OntologiesReasoningComponentsAgentsSimulations

Constraint Handling Rules (CHR):Constraint Handling Rules (CHR):Rule-Based Constraint Solving and Rule-Based Constraint Solving and

DeductionDeduction

Jacques Robin

Page 2: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

OutlineOutline

Constraint Handling Rules (CHR) Key ideas Introductory example CHR constraint solver over real

variables CHR with disjunction (CHR)

CHR constraint solver over finite domain variables

General purpose rule-based reasoning with CHR

A taxonomy of rule-based languages

Production rules and ECA rules in CHR

Conditional term rewrite rules in CHR

Prolog and CLP rules in CHR

Deduction with CHR

Propositional deduction as Boolean constraint solving in CHR

First-order Horn Logic forward chaining with CHR

First-order Horn Logic backward chaining with CHR

First-order logic refutation and resolution based entailment with CHR

Description logic reasoning with CHR

Page 3: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Constraint Handling Rules (CHR):Constraint Handling Rules (CHR):Key IdeasKey Ideas

Originally a logical rule-based language to declaratively program specialized constraint solvers on top of a host programming language (Prolog, Haskell, Java)

Since evolved in a general purpose first-order knowledge representation language and Turing-complete programming language

Fact base contains both extensional and intentional knowledge in the form of a conjunction of constraints

Rule base integrates and generalizes: Event-Condition-Action rules (themselves generalizing production

rules) for constraint propagation Conditional rewrite rules for constraint simplification

Relies on forward chaining and rule Left-Hand-Side (LHS) matching

Extended variant CHRV adds backtracking search and thus generalizes Prolog rules as well

Page 4: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example:Rule Base Defining Rule Base Defining in Terms of = in Terms of =

reflexivity@ X Y <=> X = Y | true. asymmetry@ X Y, Y X <=> X=Y. % Constraint simplification (or rewriting) rules% Syntax: <ruleName>@ <simplifiedHead> <=> <guard> | <body>% Logically: Xvars(head guard) % <guard> (<head> Yvars(body - (head guard)) <body>)% Operationally: substitute in constraint store (knowledge base) constraints that

match% the rule simplified head by those in rule body with their variables instantiated from% the match

transitivity@ X Y , Y Z ==> X Z.% Constraint propagation (or production) rule (in this case, unguarded)% Syntax: <ruleName>@ <propagatedHead> ==> guard | <body>% Logically: Xvars(head guard) % <guard> (<head> Yvars(body - (head guard)) <body>)% Operationally: if constraint store (knowledge base) contains constraints that match% the rule propagated head then add those in rule body to the store with their

variables% instantiated from the match

Page 5: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

idempotence@ X Y \ X Y <=> true.% Constraint simpagation rule (in this case, unguarded)% Syntax: <ruleName>@ <propagatedHead> \ <simplifiedHead> <=> guard | <body>% Logically: Xvars((head guard) <guard> (<propagatedhead> <simplifiedHead>% Yvars(body - (head guard)) <body> <propagatedhead>)% Operationally: if constraint store (knowledge base) contains constraints that match% the rule simplified head and the rule propagated head, then substitute in the store% those matching the simplified head by the rule body with their variables instantiated% from the match

query1: A B, C A, B C, A = 2 % Initial constraint store: a constraint conjunctionanswer1: A = 2, B = 2, C = 2, % Final constraint store = initial constraint store% simplified through repeated rule application until no rule neither simplifies nor% propagates any new constraint

query2: A B, B C, C Aanswer2: A = B, B = C

Page 6: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

A B, C A, B C A = 2

Matching Equations GuardBuilt-In Constraint StoreRule-Defined Constraint Store

Page 7: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Condition for firing a rule:1. Rule head matches active constraint in RDCS

Generates set of equations between variables and constants from the head and the constraint (inserted to MEG)

2. Every other head from the rule matches against some other (partner) constraint in the RDCS Generates another set of equations (inserted to MEG)

3. Rule r fires iff:X1,...,Xi vars(MEG BICS - r) BICS Y1,...,Yj vars(r) MEG

Rule RDCS BICS MEG

r? A B, C A, B C A = 2 X' = A, Y' = B, X' = Y'

Active Constraint

Page 8: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

r? A B, C A, B C A = 2 X' = A = Y' = B

Normalizing SimplificationActive Constraint

Page 9: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true. (A,B A = 2 X',Y' X' = A = Y' = B), eg, B = 3 2 = A

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

r? A B, C A, B C A = 2 X' = A = Y' = B

Active Constraint

Page 10: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true. a@ X Y, Y X <=> X=Yt@ X Y, Y Z ==> X Z.i@ X Y \ X Y <=> true.

Rule firing order depends on 3 heuristics, with the following priority:1. Rule-defined constraint ordering to become active2. Rule ordering to try matching and entailment check with active constraint3. Rule-defined constraint ordering to become partner constraints

Engine first tries matching and entailment check: All rules with current active constraint, before trying any rule with the next constraint

in the RDCS; For all elements of the RDCS as partner for the first multi-headed rule that matches

the active constraint, before trying the next rule that matches the active constraint;

Rule RDCS BICS MEG

a? A B, C A, B C A = 2 X' = A, Y' = B, Y' = C, X' = AActive

Constraint

PartnerConstrain

t

Page 11: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y ( A,B,C A = 2 X',Y' X' = A Y' = B = C), eg, B = 3 4 = C

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

a? A B, C A, B C A = 2 X' = A, Y' = B = CActive

Constraint

PartnerConstrain

t

Page 12: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

a? A B, C A, B C A = 2 X' = C, Y' = A, Y' = A, X' = BActive

Constraint

PartnerConstrain

t

Page 13: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y (A,B,C A = 2 X',Y' X' = B = C Y' = A), eg, B = 3 4 = C

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

a? A B, C A, B C A = 2 X' = B = C, Y' = AActive

Constraint

PartnerConstrain

t

Page 14: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

a? A B, C A, B C A = 2 X' = A, Y' = B, Y' = B, X' = CActive

Constraint

PartnerConstrain

t

Page 15: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y (A,B,C A = 2 X',Y' X' = A = C Y' = B), eg, C = 3 2 = A

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

a? A B, C A, B C A = 2 X' = A = C, Y' = BActive

Constraint

PartnerConstrain

t

Page 16: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

a? A B, C A, B C A = 2 X' = B, Y' = C, Y' = A, X' = BActive

Constraint

PartnerConstrain

t

Page 17: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y (A,B,C A = 2 X',Y' X' = B Y' = A = C), eg, C = 3 2 = A

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

a? A B, C A, B C A = 2 X' = B, Y' = A = CActive

Constraint

PartnerConstrain

t

Page 18: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t? A B, C A, B C A = 2 X' = A, Y' = B, Y' = C, Z' = AActive

Constraint

PartnerConstrain

t

Page 19: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z. (A,B,C A = 2 X',Y', Z' X' = Z' = A Y' = B = C), eg, B = 3 4 = C

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t? A B, C A, B C A = 2 X' = Z' = A, Y' = B = CActive

Constraint

PartnerConstrain

t

Page 20: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t? A B, C A, B C A = 2 X' = C, Y' = A, Y' = A, Z' = BActive

Constraint

PartnerConstrain

t

Page 21: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z. A,B,C A = 2 X',Y',Z' X' = C Y' = A Z' = B, e.g., X'=C,Y'=2,Z'=B

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t? A B, C A, B C A = 2 X' = C, Y' = A, Z' = BActive

Constraint

PartnerConstrain

t

Page 22: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

A B, C A, B C, C B

A = 2

Page 23: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

For a given active constraint: a matching multi-headed propagation rule is reapplied with all matching

partner constraints, before any other rule is tried; in contrast, a matching multi-headed simplification or simpagation rule is

applied only once with the first matching partner constraint, and then engine moves on to the next rule

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t? A B, C A, B C, C B

A = 2 X' = A, Y' = B, Y' = B, Z' = C

ActiveConstrain

t

PartnerConstrain

t

Page 24: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z. A,B,C A = 2 X',Y',Z' X' = A Y' = B Z' = B, e.g., X'=A,Y'=B, Z'=C

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t? A B, C A, B C, C B

A = 2 X' = A, Y' = B, Z' = C

ActiveConstrain

t

PartnerConstrain

t

Page 25: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

A B, C A, B C, C B, A C

A = 2

Page 26: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Attempt to reapply same propagation rule matching same pair of active and partner constraints with same head pair but swapped assignments: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

t? A B, C A, B C, C B, A C

A = 2 X' = B, Y' = C, Y' = A, Z' = B

ActiveConstrain

t

PartnerConstrain

t

Page 27: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z. (A,B,C A = 2 X',Y', Z' X' = Z' = B Y' = A = C), eg, A = 2 4 = C

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

t? A B, C A, B C, C B, A C

A = 2 X' = Z' = B, Y' = A = C

ActiveConstrain

t

PartnerConstrain

t

Page 28: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

t? A B, C A, B C, C B, A C

A = 2 X' = A, Y' = B, Y' = C, Z' = B

ActiveConstrain

t

PartnerConstrain

t

Page 29: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z. (A,B,C A = 2 X',Y', Z' X' = A Y' = Z' = B = C), eg, B = 3 4 = C

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

t? A B, C A, B C, C B, A C

A = 2 X' = A, Y' = Z' = B = C

ActiveConstrain

t

PartnerConstrain

t

Page 30: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

t? A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B, Y' = A, Z' = B

ActiveConstrain

t

PartnerConstrain

t

Page 31: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z. (A,B,C A = 2 X',Y', Z' X' = C Y' = Z' = A = B), eg, A = 2 3 = B

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

t? A B, C A, B C, C B, A C

A = 2 X' = C, Y' = Z' = A = B

ActiveConstrain

t

PartnerConstrain

t

Page 32: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

t? A B, C A, B C, C B, A C

A = 2 X' = A, Y' = B, Y' = A, Z' = C

ActiveConstrain

t

PartnerConstrain

t

Page 33: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z. (A,B,C A = 2 X',Y', Z' X' = Y' = A = B Z' = C ), eg, A = 2 3 = B

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

t? A B, C A, B C, C B, A C

A = 2 X' = Y' = A = B, Z' = C

ActiveConstrain

t

PartnerConstrain

t

Page 34: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

t? A B, C A, B C, C B, A C

A = 2 X' = A, Y' = C, Y' = A, Z' = B

ActiveConstrain

t

PartnerConstrain

t

Page 35: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z. (A,B,C A = 2 X',Y', Z' X' = Y' = A = C Z' = B ), eg, A = 2 4 = C

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

t? A B, C A, B C, C B, A C

A = 2 X' = Y' = A = C, Z' = B

ActiveConstrain

t

PartnerConstrain

t

Page 36: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = A, Y' = B, X' = C, Y' = A

ActiveConstrain

t

PartnerConstrain

t

Page 37: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true. (A,B,C A = 2 X',Y', Z' X' = Y' = Z' = A = B = C ), eg, A = 2 4 = C

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = Y' = A = B = C

ActiveConstrain

t

PartnerConstrain

t

Page 38: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = C, Y' = A, X' = A, Y' = B

ActiveConstrain

t

PartnerConstrain

t

Page 39: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true. (A,B,C A = 2 X',Y', Z' X' = Y' = Z' = A = B = C ), eg, A = 2 4 = C

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = Y' = A = B = C

ActiveConstrain

t

PartnerConstrain

t

Page 40: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = A, Y’ = B, X’ = B, Y’ = C

ActiveConstrain

t

PartnerConstrain

t

Page 41: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true. (A,B,C A = 2 X',Y‘ X' = Y' = A = B = C ), eg, A = 2 4 = C

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = A = B = Y’ = C

ActiveConstrain

t

PartnerConstrain

t

Page 42: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = B, Y' = C, X’ = A, Y’ = B

ActiveConstrain

t

PartnerConstrain

t

Page 43: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true. (A,B,C A = 2 X',Y' X' = Y' = A = B = C ), eg, A = 2 4 = C

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = Y' = A = B = C

ActiveConstrain

t

PartnerConstrain

t

Page 44: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = A, Y’ = B, X’ =C, Y’ = B

ActiveConstrain

t

PartnerConstrain

t

Page 45: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true. a@ X Y, Y X <=> X=Y t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true. (A,B,C A = 2 X',Y‘ X' = A = C, Y’ = B), eg, A = 2 4 = C

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = A = C, Y’ = B

ActiveConstrain

t

PartnerConstrain

t

Page 46: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B, X’ = A, Y’ = B

ActiveConstrain

t

PartnerConstrain

t

Page 47: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true. (A,B,C A = 2 X',Y' X' = A = C,Y’ = B ), eg, A = 2 4 = C

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = A = C, Y' = B

ActiveConstrain

t

PartnerConstrain

t

Page 48: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = A, Y’ = B, X’ =A, Y’ = C

ActiveConstrain

t

PartnerConstrain

t

Page 49: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true. a@ X Y, Y X <=> X=Y t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true. (A,B,C A = 2 X',Y‘ X' = A, Y’ = B = C), eg, B = 3 4 = C

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = A, Y’ = B = C

ActiveConstrain

t

PartnerConstrain

t

Page 50: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = A, Y' = C, X’ = A, Y’ = B

ActiveConstrain

t

PartnerConstrain

t

Page 51: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true. (A,B,C A = 2 X',Y' X' = A, Y’ = B = C), eg, B = 3 4 = C

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

i? A B, C A, B C, C B, A C

A = 2 X' = A, Y' = B = C

ActiveConstrain

t

PartnerConstrain

t

Page 52: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Heuristic to choose next active constraint after processing of active constraint A added to the store constraints N1, ... Nn

N1, ... , Nn in order

Constraints O1, ... , Om present in the store before processing A

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

r? A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B, X' = Y'

ActiveConstrain

t

Page 53: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true. (A,B,C A = 2 X',Y' X' = Y' = B = C ), eg, B = 3 4 = C

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

r? A B, C A, B C, C B, A C

A = 2 X' = Y' = B = C

ActiveConstrain

t

Page 54: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

a? A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B, Y' = A, X' = B,

PartnerConstrain

t

ActiveConstrain

t

Page 55: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y (A,B,C A = 2 X',Y' X' = Y' = A = B = C), eg, B = 3 4 = C

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

a? A B, C A, B C, C B, A C

A = 2 X' = Y' = A = C = B

PartnerConstrain

t

ActiveConstrain

t

Page 56: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

a? A B, C A, B C, C B, A C

A = 2 Y' = C, X' = B, X' = A, Y' = B

PartnerConstrain

t

ActiveConstrain

t

Page 57: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y (A,B,C A = 2 X',Y' X' = A = C Y' = B), eg, A = 2 4 = C

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

a? A B, C A, B C, C B, A C

A = 2 X' = A = C, Y' = B

PartnerConstrain

t

ActiveConstrain

t

Page 58: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

a? A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B, Y’ = C, X’ = A

PartnerConstrain

t

ActiveConstrain

t

Page 59: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y (A,B,C A = 2 X',Y' X' = Y' = A = B = C), eg, A = 2 4 = C

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

a? A B, C A, B C, C B, A C

A = 2 X' = Y’ = A, = B = C

PartnerConstrain

t

ActiveConstrain

t

Page 60: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

a? A B, C A, B C, C B, A C

A = 2 Y’ = C, X’ = B, X’ = C, Y’ = A

PartnerConstrain

t

ActiveConstrain

t

Page 61: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y (A,B,C A = 2 X',Y’ X' = Y' = A = B = C), eg, A = 2 4 = C

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

a? A B, C A, B C, C B, A C

A = 2 X’ = Y’ = A = B = C

PartnerConstrain

t

ActiveConstrain

t

Page 62: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

a? A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B, Y’ = B, X’ = C

PartnerConstrain

t

ActiveConstrain

t

Page 63: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y A,B,C A = 2 X',Y' X' = C’ Y’ = B), eg, A = 2, X’ = C, Y’ = B

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

a? A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B

PartnerConstrain

t

ActiveConstrain

t

Page 64: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y A,B,C A = 2 X',Y' X' = C’ Y’ = B), eg, A = 2, X’ = C, Y’ = B

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

a! A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B

A B, C A, A C A = 2, B = C

Page 65: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

r! A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B

r? A B, C A, A C A = 2, B = C X’ = A, Y’ = C, X’ = Y’Active

Constraint

Page 66: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true. (A,B,C A = 2, B = C X',Y’ X' = Y' = A = B = C), eg, A = 2 4 = C a@ X Y, Y X <=> X=Y t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

r! A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B

r? A B, C A, A C A = 2, B = C X’ = Y’ = A = CActive

Constraint

Page 67: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

r! A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B

a? A B, C A, A C A = 2, B = C X’ = A, Y’ = C, Y’ = A, X’ = BActive

Constraint

PartnerConstrain

t

Page 68: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y (A,B,C A = 2, B = C X',Y’ X' = Y' = A = B = C), eg, A = 2 4 = C

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

r! A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B

a? A B, C A, A C A = 2, B = C X’ = Y’ = A = B = CActive

Constraint

PartnerConstrain

t

Page 69: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

r! A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B

a? A B, C A, A C A = 2, B = C Y’ = A, X’ = C, X’ = A, Y’ = BActive

Constraint

PartnerConstrain

t

Page 70: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y (A,B,C A = 2, B = C X',Y’ X' = Y' = A = B = C), eg, A = 2 4 = C

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

r! A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B

a? A B, C A, A C A = 2, B = C X’ = Y’ = A = B = CActive

Constraint

PartnerConstrain

t

Page 71: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

r! A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B

a? A B, C A, A C A = 2, B = C X’ = A, Y’ = C, Y’ = C, X’ = AActive

Constraint

PartnerConstrain

t

Page 72: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y A,B,C A = 2, B = C X',Y’ X' = A Y’ = C), eg, X’ = 2, Y’ = C

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

r! A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B

a? A B, C A, A C A = 2, B = C X’ = Y’ = A = CActive

Constraint

PartnerConstrain

t

Page 73: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y A,B,C A = 2, B = C X',Y’ X' = A Y’ = C), eg, X’ = 2, Y’ = C

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

r! A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B

a! A B, C A, A C A = 2, B = C X’ = Y’ = A = C

A B A = 2, B = C, A = C

Page 74: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true.

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

r! A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B

a! A B, C A, A C A = 2, B = C X’ = Y’ = A = C

r? A B A = B = C = 2 X’ = A, Y’ = B, X’ = Y’Active

Constraint

Page 75: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true. A,B,C A = B = C = 2 X',Y’ X' = Y’ = A = B), eg, X’ = 2, Y’ = 2

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

r! A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B

a! A B, C A, A C A = 2, B = C X’ = Y’ = A = C

r? A B A = B = C = 2 X’ = Y’ = A = BActive

Constraint

Page 76: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =

r@ X Y <=> X = Y | true. A,B,C A = B = C = 2 X',Y’ X' = Y’ = A = B), eg, X’ = 2, Y’ = 2

a@ X Y, Y X <=> X=Y

t@ X Y, Y Z ==> X Z.

i@ X Y \ X Y <=> true.

Rule RDCS BICS MEG

t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B

t! A B, C A, B C, C B A = 2 X' = A, Y' = B, Z' = C

r! A B, C A, B C, C B, A C

A = 2 X' = C, Y' = B

a! A B, C A, A C A = 2, B = C X’ = Y’ = A = C

r! A B A = B = C = 2 X’ = Y’ = A = B

A = B = C = 2

Constraints Simplified Final Normalized Solved Form

Page 77: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Body:Rule-Defined and

Built-In Constraints

Guard:Built-In Constraints (from host language)

Head: Rule-Defined Constraints

• Simplification rule: sh1(X,a), sh2(b,Y) <=> g1(X,Y), g2(a,b,c) | b1(X,c), b2(Y,c).• Propagation rule: ph1(X,Y), ph2(d) ==> g3(X), g4(d,Y) | b3(X,d), b4(X,Y).• Simpagation rule: ph3(X), ph4(Y,Z) \ sh3(X,U), sh4(Y,V) <=> g5(X,Z), g6(Z,Y) | b5(X), b6(Y,Z).

• Simplification rules are conditional rewrite rules (condition is the guard)• Propagation rules are event-condition-action rules (event is the guard)• Simpagation rules heads are hybrid syntactic sugar, each can be replaced by a semantically equivalent simplification rule, ex, p, r \ s, t <=> g, h | b, c. is equivalent to p, r, s, t <=> g, h | p, r, b, c.

2..*And Formula

CHR: Syntax OverviewCHR: Syntax Overview

CHR Base

* CHR Rule

guard

simplified head

propagated head

body

LogicalFormula

0..1

0..1

0..1

Atomic Formula

SimpagationRule

SimplificationRule

PropagationRule

{non-overlapping, complete}

Built-InConstraint

Rule DefinedConstraint

Page 78: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR: Complete Abstract SyntaxCHR: Complete Abstract Syntax

SimpagationRule

SimplificationRule

PropagationRule

CHR Base

* CHR Rule

guard

simplified head

propagated head

body

LogicalFormula

0..1

0..1

0..12..*

{non-overlapping, complete}

Non-GroundTerm

GroundTerm

{non-overlapping, complete}

And Formula

Atomic Formulaarg

*

Term

ConstraintSymbol

FunctionalTerm

Non-FunctionalTerm

{non-overlapping, complete}

arg

*

FunctionSymbol

ConstraintDomain*

*

*

Built-InConstraint

Rule DefinedConstraint

true false

VariableConstantSymbol

Rule DefinedConstraint

Symbol

Built-InConstraint

Symbol

Page 79: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR: Derivation Data StructuresCHR: Derivation Data Structures

SimpagationRule

SimplificationRule

PropagationRule

CHR Base

* CHR Rule

guard

simplified head

propagated head

body

CHRLogicalFormula

Atomic Formula

Built-InConstraint

Rule DefinedConstraint

0..1

0..1

0..12..*

Term

And Formula

arg

*

*

**

{ordered}

Rule DefinedConstraint Store

Built-InConstraint Store

UsedRule

DerivationState

*

CHRDerivation

Page 80: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR: Declarative Semantics inCHR: Declarative Semantics inClassical First-Order Logic (CFOL)Classical First-Order Logic (CFOL)

Simplification rule: sh1, ... , shi <=> g1, ..., gj | b1, ..., bk.

where: {X1, ..., Xn} = vars(sh1 ... shi g1 ... gj) and {Y1, ... , Ym} = vars(b1 ... bk) \ {X1, ..., Xn}

X1, ..., Xn g1 ... gj (sh1 ... shi Y1, ... , Ym b1 ... bk)

Propagation rule: ph1, ... , phi ==> g1, ..., gj | b1, ..., bk.

where: {X1, ..., Xn} = vars(ph1 ... phi g1 ... gj) and {Y1, ... , Ym} = vars(b1 ... bk) \ {X1, ..., Xn}

X1, ..., Xn g1 ... gj (ph1 ... phi Y1, ... , Ym b1 ... bk)

Page 81: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR: Constraint and RuleCHR: Constraint and RulePriority HeuristicsPriority Heuristics

No standard, implementation dependent Active constraint priority heuristics:

Preferring constraints most recently inserted in store Left-to-right writing order in query

Rule priority heuristics: Preferring simplification rules over simpagation rules and

simpagation over propagation rules Preferring simplification and simpagation rules with highest

number of heads Preferring propagation rules with lowest number of heads Preferring rules whose head constraint have never be matched yet Top to bottom writing order

Partner constraint priority heuristics: Preferring constraints most recently inserted in store Left-to-right writing order in query

Page 82: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =

r1@ min(X,Y,Z) <=> X Y | Z = X

r2@ min(X,Y,Z) <=> Y X | Z = Y.

r3@ min(X,Y,Z) <=> Z < X | Y = Z.

r4@ min(X,Y,Z) <=> Z < Y | X = Z.

r5@ min(X,Y,Z) ==> Z X, Z Y.

Rule RDCS BICS MEG

min(1,2,M)

Page 83: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =

r1@ min(X,Y,Z) <=> X Y | Z = X M true |= X'=1,Y'=2,Z'=M X' = 1, Y' = 2, Z' = M, 1 2

r2@ min(X,Y,Z) <=> Y X | Z = Y.

r3@ min(X,Y,Z) <=> Z < X | Y = Z.

r4@ min(X,Y,Z) <=> Z < Y | Y = Z.

r5@ min(X,Y,Z) ==> Z X, Z Y.

Rule RDCS BICS MEG

r? min(1,2,M) true X' = 1, Y' = 2, Z' = M, X' Y'

Page 84: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =

r1@ min(X,Y,Z) <=> X Y | Z = X M true |= X'=1,Y'=2,Z'=M X' = 1, Y' = 2, Z' = M, X' = 1 2 = Y'

r2@ min(X,Y,Z) <=> Y X | Z = Y.

r3@ min(X,Y,Z) <=> Z < X | Y = Z.

r4@ min(X,Y,Z) <=> Z < Y | Y = Z.

r5@ min(X,Y,Z) ==> Z X, Z Y.

Rule RDCS BICS MEG

r! min(1,2,M) true X' = 1, Y' = 2, Z' = M, X' Y'

true M = Z' = X' = 1

Page 85: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =

r1@ min(X,Y,Z) <=> X Y | Z = X M true |= X'=1,Y'=2,Z'=M X' = 1, Y' = 2, Z' = M, X' = 1 2 = Y'

r2@ min(X,Y,Z) <=> Y X | Z = Y.

r3@ min(X,Y,Z) <=> Z < X | Y = Z.

r4@ min(X,Y,Z) <=> Z < Y | Y = Z.

r5@ min(X,Y,Z) ==> Z X, Z Y.

Rule RDCS BICS MEG

r! min(1,2,M) true X' = 1, Y' = 2, Z' = M, X' Y'

true M = 1

Projection(CS,vars(Query))

Page 86: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =

r1@ min(X,Y,Z) <=> X Y | Z = X

r2@ min(X,Y,Z) <=> Y X | Z = Y.

r3@ min(X,Y,Z) <=> Z < X | Y = Z.

r4@ min(X,Y,Z) <=> Z < Y | Y = Z.

r5@ min(X,Y,Z) ==> Z X, Z Y.

Rule RDCS BICS MEG

min(A,B,M) A B

Page 87: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =

r1@ min(X,Y,Z) <=> X Y | Z = X A,B,M A B |= X'=A,Y'=B,Z'=M X' = A, Y' = B, Z' = M, X' = A B = Y'

r2@ min(X,Y,Z) <=> Y X | Z = Y.

r3@ min(X,Y,Z) <=> Z < X | Y = Z.

r4@ min(X,Y,Z) <=> Z < Y | Y = Z.

r5@ min(X,Y,Z) ==> Z X, Z Y.

Rule RDCS BICS MEG

r1? min(A,B,M) A B X' = A, Y' = B, Z' = M, X' Y'

Page 88: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =

r1@ min(X,Y,Z) <=> X Y | Z = X A,B,M A B |= X'=A,Y'=B,Z'=M X' = A, Y' = B, Z' = M, X' = A B = Y'

r2@ min(X,Y,Z) <=> Y X | Z = Y.

r3@ min(X,Y,Z) <=> Z < X | Y = Z.

r4@ min(X,Y,Z) <=> Z < Y | Y = Z.

r5@ min(X,Y,Z) ==> Z X, Z Y.

Rule RDCS BICS MEG

r1! min(A,B,M) A B X' = A, Y' = B, Z' = M, X' Y'

true M = Z' = X' = A, A B

Page 89: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =

r1@ min(X,Y,Z) <=> X Y | Z = X A,B,M A B |= X'=A,Y'=B,Z'=M X' = A, Y' = B, Z' = M, X' = A B = Y'

r2@ min(X,Y,Z) <=> Y X | Z = Y.

r3@ min(X,Y,Z) <=> Z < X | Y = Z.

r4@ min(X,Y,Z) <=> Z < Y | Y = Z.

r5@ min(X,Y,Z) ==> Z X, Z Y.

Rule RDCS BICS MEG

r1! min(A,B,M) A B X' = A, Y' = B, Z' = M, X' Y'

true M = A, A B

Projection(CS,vars(Query))

Page 90: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Bases as ComponentCHR Bases as Component

Several solvers, each one implemented by a pair(CHR base, CHR engine)

can be assembled in a component-based architecture, with server solvers' CHR bases defining in their rule heads the constraints used as built-ins by client solvers' CHR bases

Page 91: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

<<Component>>HostPlatform

<<Interface>>Min

min(X:Real, Y:Real, Z:Real)

<<Component>>CHRDEngine

X Y X = Y | trueX Y Y X X = YX Y Y Z X ZX Y \ X Y true X X falseX Y Y Z X Y Y Z | X ZY Z X Y X Y Y Z | X Z X Y Y Z X Y Y Z | X Z

<<Component>>LoeStlCHRDBase

<<Interface>>LoeStl

(X:Real, Y:Real): Boolean(X:Real, Y:Real): Boolean

«uses»

min(X,Y,Z) X Y | Z = Xmin(X,Y,Z) Z Y | Z = Xmin(X,Y,Z) Y Z | Z = Ymin(X,Y,Z) Z X | Z = Ymin(X,Y,Z) Z X Z Y

<<Component>>MinCHRDBase

<<Interface>>CHRDEngine

derive()

«uses»

Example CHR Base Component Example CHR Base Component AssemblyAssembly

«uses» <<Interface>>EqNeq

= (X:Real, Y:Real): Boolean (X:Real, Y:Real): Boolean

Page 92: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C.

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.

Notation: ?P Constraint Domain Variable and CHR Variable C Constraint Domain Constant and CHR Variable == Constraint Domain Equality Predicate = CHR Equality Predicate 0,1,2, ... CHR and Host Programming Language Constants := Host Programming Language Variable Assignment Predicate,

always returns true, performs arithmetic computation as side-effect +, -, / Host Programming Language Arithmetic Function number Host Programming Language Type Checking Function

Rule RDCS BICS MEG

?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true

Page 93: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C ?Y, true |= ?P=?Y,C=2 ?P = ?Y, C = 2

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.

Rule RDCS BICS MEG

r1? ?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true ?P = ?Y, C = 2

Page 94: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.

Rule RDCS BICS MEG

r1! ?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true ?P = ?Y, C = 2

?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

?Y = 2

Page 95: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.

Rule RDCS BICS MEG

r1! ?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true ?P = ?Y, C = 2

r1? ?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

?Y = 2

Why r1 does not apply?

Page 96: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.

?X,?Y,?U,?V ?Y = 2 |= <?P,?Q,C,R> = <?X,2,3,1> ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.

Rule RDCS BICS MEG

r1! ?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true ?P = ?Y, C = 2

r2? ?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1

Page 97: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.

?X,?Y ?Y = 2 |= <?P,?Q,C,R> = <?X,2,3,1> ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.

Rule RDCS BICS MEG

r1! ?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true ?P = ?Y, C = 2

r2! ?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1

?Y = 2, ?X = 1

Page 98: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.

Rule RDCS BICS MEG

r1! ?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true ?P = ?Y, C = 2

r2! ?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1

r1? ?U - ?V == 2, ?U + ?V == 0

?Y = 2, ?X = 1

Page 99: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.

Rule RDCS BICS MEG

r1! ?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true ?P = ?Y, C = 2

r2! ?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1

r2? ?U - ?V == 2, ?U + ?V == 0

?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 2, ?Q.number

Page 100: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.

Rule RDCS BICS MEG

r1! ?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true ?P = ?Y, C = 2

r2! ?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1

r3? ?U - ?V == 2, ?U + ?V == 0

?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 2, ?P.number

Page 101: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.

Rule RDCS BICS MEG

r1! ?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true ?P = ?Y, C = 2

r2! ?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1

r4? ?U - ?V == 2, ?U + ?V == 0

?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 0, ?P = ?U, ?Q = ?V, D = 2, R = 1

Page 102: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R

?X,?Y,?U,?V ?X = 1, ?Y = 2 |= <?P,?Q,C,D,R> = <?U,?V,0,2,1> ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1

Rule RDCS BICS MEG

r1! ?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true ?P = ?Y, C = 2

r2! ?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1

r4? ?U - ?V == 2, ?U + ?V == 0

?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1

Page 103: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.

?X,?Y,?U,?V ?X = 1, ?Y = 2 |= <?P,?Q,C,D,R> = <?U,?V,0,2,1> ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1

Rule RDCS BICS MEG

r1! ?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true ?P = ?Y, C = 2

r2! ?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1

r4! ?U - ?V == 2, ?U + ?V == 0

?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1

?U + ?V == 0 ?Y = 2, ?X = 1, ?U = 1

Page 104: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.

Rule RDCS BICS MEG

r1! ?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true ?P = ?Y, C = 2

r2! ?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1

r4! ?U - ?V == 2, ?U + ?V == 0

?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1

r1? ?U + ?V == 0 ?Y = 2, ?X = 1, ?U = 1

Page 105: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.

Rule RDCS BICS MEG

r1! ?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true ?P = ?Y, C = 2

r2! ?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1

r4! ?U - ?V == 2, ?U + ?V == 0

?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1

r2? ?U + ?V == 0 ?Y = 2, ?X = 1, ?U = 1 ?P = ?U, ?Q = ?V, C = 0, ?Q.number

Page 106: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

?X,?Y,?U,?V ?X = 1, ?Y = 2, ?U = 1 |= <?P,?Q,C,R> = <1,?V,0,-1> ?P = ?U, ?Q = ?V, C = 0, ?P.number, R = -1

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.

Rule RDCS BICS MEG

r1! ?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true ?P = ?Y, C = 2

r2! ?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1

r4! ?U - ?V == 2, ?U + ?V == 0

?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1

r3? ?U + ?V == 0 ?Y = 2, ?X = 1, ?U = 1 ?P = ?U, ?Q = ?V, C = 0, ?P.number, R = -1

Page 107: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver

r1@ ?P == C <=> P = C

r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.

r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.

?X,?Y,?U,?V ?X = 1, ?Y = 2, ?U = 1 |= <?P,?Q,C,R> = <1,?V,0,-1> ?P = ?U, ?Q = ?V, C = 0, ?P.number, R = -1

r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.

Rule RDCS BICS MEG

r1! ?Y == 2,?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

true ?P = ?Y, C = 2

r2! ?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0

?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1

r4! ?U - ?V == 2, ?U + ?V == 0

?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1

r3! ?U + ?V == 2 ?Y = 2, ?X = 1, ?U = 1 ?P = ?U, ?Q = ?V, C = 0, ?P.number, R = -1

true ?Y = 2, ?X = 1, ?U = 1, ?V = -1

Page 108: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR : Abstract Syntax : Abstract Syntax

OrAnd Formula

connective: enum{or,and}

SimpagationRule

SimplificationRule

PropagationRule

CHR Base

* CHR Rule

guard

simplified head

propagated head

body

And Formula

Atomic Formula

Constraint

Built-InConstraint

Rule DefinedConstraint

2..*

true false

0..1

0..1

0..1

Built-InConstraint Store

Rule DefinedConstraint Store

*

FiredRule

DerivationState

*

CHRDerivation

*

{ordered} * *

TriedAlternative

Body

*

*

Page 109: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR: Declarative Semantics in: Declarative Semantics inClassical First-Order Logic (CFOL)Classical First-Order Logic (CFOL)

Simplification rule: sh1, ... , shi <=> g1, ..., gj | b11, ..., bk

p ; ... ; b11, ..., bl

q.

where: {X1, ..., Xn} = vars(sh1 ... shi g1 ... gj) and {Y1, ... , Ym} = vars(b1 ... bk) \ {X1, ..., Xn}

X1, ..., Xn g1 ... gj (sh1 ... shi Y1, ... , Ym ((b1

1 ... bk

p) ... (b11 ... bk

q))

Propagation rule: ph1, ... , phi ==> g1, ..., gj | b11, ..., bk

p ; ... ; b11, ..., bl

q.

where: {X1, ..., Xn} = vars(ph1 ... phi g1 ... gj) and {Y1, ... , Ym} = vars(b1 ... bk) \ {X1, ..., Xn}

X1, ..., Xn g1 ... gj (ph1 ... phi Y1, ... , Ym ((b1

1 ... bk

p) ... (b11 ... bk

q))

Page 110: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR: Operational Semantics: Operational Semantics

When rule R with disjunctive body B1 ; ... ; Bk is fired Update both constraint stores using B1

Start next matching-updating cycle

When BICS = false or when no rule matches the RDCS Backtrack to last alternative body Bi

Restore both constraint stores to their states prior to their update with Bi

Update both constraint stores using Bi+1

Start next matching-updating cycle

Exhaustively try all alternative bodies of all fired rules through backtracking

Page 111: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

d7@ d(r7,C) ==> (C = r ; C = b).

d4@ d(r4,C) ==> (C = r ; C = b).

d3@ d(r3,C) ==> (C = r ; C = b).

d2@ d(r2,C) ==> (C = b ; C = g).

d5@ d(r5,C) ==> (C = r ; C = g).

d6@ d(r6,C) ==> (C = r ; C = g; C = t).

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]). true

Page 112: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

...

d6@ d(r6,C) ==> (C = r ; C = g; C = t).

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m? m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]). true

Page 113: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

...

d6@ d(r6,C) ==> (C = r ; C = g; C = t).

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true

Page 114: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

...

d6@ d(r6,C) ==> (C = r ; C = g; C = t).

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2? l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

Page 115: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

...

d6@ d(r6,C) ==> (C = r ; C = g; C = t).

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true

Page 116: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

...

d6@ d(r6,C) ==> (C = r ; C = g; C = t).

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

n? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true

Page 117: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

...

d6@ d(r6,C) ==> (C = r ; C = g; C = t).

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

Page 118: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

...

d6@ d(r6,C) ==> (C = r ; C = g; C = t).

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r

Page 119: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

...

d6@ d(r6,C) ==> (C = r ; C = g; C = t).

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

n? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r

Page 120: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

...

d6@ d(r6,C) ==> (C = r ; C = g; C = t).

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

d1a? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r R = r1, C = C1

Already fired w/ same constraint. Not repeated to avoid trivial non-termination

Page 121: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

...

d6@ d(r6,C) ==> (C = r ; C = g; C = t).

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

l2? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]

Page 122: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

...

d6@ d(r6,C) ==> (C = r ; C = g; C = t).

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]

n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r

Page 123: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

d7@ d(r7,C) ==> (C = r ; C = b).

...

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false. C1,C7 Ri',Rj',Ci',Cj' C1=r | Ri=r1, Rj=r7, Ci=C1, Cj=C7, Ci=Cj

l1@ l([ ],[ ]) <=> true. eg., C1 = b r = C7

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]

n? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r Ri = r1, Rj = r7, Ci = C1, Cj = C7, Ci = Cj

Page 124: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

d7@ d(r7,C) ==> (C = r ; C = b).

...

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]

d7a? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r Ri = r7, C = C7

Page 125: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

d7@ d(r7,C) ==> (C = r ; C = b).

...

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]

d7a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r Ri = r7, C = C7

n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r,C7 = r

Page 126: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

d7@ d(r7,C) ==> (C = r ; C = b).

...

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]

d7a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r Ri = r7, C = C7

n? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r,C7 = r

Ri = r1, Rj = r7, Ci = r, Cj = r

Page 127: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

d7@ d(r7,C) ==> (C = r ; C = b).

...

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]

d7a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r Ri = r7, C = C7

n! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r,C7 = r

Ri = r1, Rj = r7, Ci = r, Cj = r

n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

false

Page 128: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

d7@ d(r7,C) ==> (C = r ; C = b).

...

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]

d7a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r Ri = r7, C = C7

n! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r,C7 = r

Ri = r1, Rj = r7, Ci = r, Cj = r

bt n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

false

Page 129: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

d7@ d(r7,C) ==> (C = r ; C = b).

...

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]

d7b? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r Ri = r7, C = C7

Page 130: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

d7@ d(r7,C) ==> (C = r ; C = b).

...

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]

d7b! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r Ri = r7, C = C7

n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r,C7 = b

Page 131: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

d7@ d(r7,C) ==> (C = r ; C = b).

...

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false. C1,C7 Ri',Rj',Ci',Cj' C1=r | Ri=r1, Rj=r7, Ci=C1, Cj=C7, Ci=Cj

l1@ l([ ],[ ]) <=> true. eg., Cj = b r = Ci

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]

d7b! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r Ri = r7, C = C7

n? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r,C7 = b

Ri = r1, Rj = r7, Ci = C1, Cj = C7, Ci = Cj

Page 132: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

d7@ d(r7,C) ==> (C = r ; C = b).

...

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]

d7b! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r Ri = r7, C = C7

l2? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r,C7 = b

R = r4, Rs = [r3,r2,r5,r6],C = C4, Cs = [C3,C2,C5,C6]

Page 133: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

d7@ d(r7,C) ==> (C = r ; C = b).

...

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]

d7b! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r Ri = r7, C = C7

l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), d(r4,C4), l([r3,r2,r5,r6],[C3,C2,C5,C6])

C1 = r,C7 = b

R = r4, Rs = [r3,r2,r5,r6],C = C4, Cs = [C3,C2,C5,C6]

Page 134: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

d7@ d(r7,C) ==> (C = r ; C = b).

...

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true

l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)

true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]

d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

true C = C1

l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])

C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]

d7b! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r Ri = r7, C = C7

l2? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), d(r4,C4), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])

C1 = r,C7 = b

Page 135: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

d7@ d(r7,C) ==> (C = r ; C = b).

d4@ d(r4,C) ==> (C = r ; C = b).

d3@ d(r3,C) ==> (C = r ; C = b).

d2@ d(r2,C) ==> (C = b ; C = g).

d5@ d(r5,C) ==> (C = r ; C = g).

d6@ d(r6,C) ==> (C = r ; C = g; C = t).

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Rule RDCS BICS MEG

m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]). true

n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r2,C2), d(r2,C2), d(r1,C3), d(r4,C4), d(r5,C5), d(r6,C6), d(r7,C7)

C1 = g,C2 = b,C3 = r,C4 = r,C5 = g,C6 = r,C7 = b

Page 136: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem

% More efficient version with forward checkingd1@ c(r1,r), c(r1,b), c(r1,g) ==> false.

d1@ d(r1,C), c(r1,r), c(r1,b) ==> C = g.

d1@ d(r1,C), c(r1,r), c(r1,g) ==> C = b.

d1@ d(r1,C), c(r1,b), c(r1,g) ==> C = r.

d1@ d(r1,C), c(r1,b) ==> (C = r ; C = g).

d1@ d(r1,C), c(r1,g) ==> (C = r ; C = b).

d1@ d(r1,C), c(r1,r) ==> (C = b ; C = g).

d1@ d(r1,C) ==> (C = r ; C = b ; C = g).

...

d6@ d(r6,C) ==> (C = r ; C = g; C = t).

m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).

fcr@ n(Ri,Rj), d(Rj,Cj) ==> c(Ri,Cj).

n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.

l1@ l([ ],[ ]) <=> true.

l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).

r2b g r6 r g t

r3

r b

r4

r b

r5

b g

r1

r b g

r7

r b

Page 137: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Implementing a Rewriting SystemImplementing a Rewriting Systemin CHRin CHR

Map each conditional rewrite system rule of the formCondition | LHS RHSonto a CHR simplification rule of the formLHS Condition | RHSi.e., map the rewrite rule condition onto the CHR guard the rewrite rule LHS onto the CHR head the rewrite rule RHS onto the CHR body

Replace each functional terms ti appearing in a Condition, LHS or RHS of the rewrite rule by: a new variable Vi, and

a new equational atom Vi = ti in the guard, head or body (respectively) of the CHR

For example: fib(suc(suc(N)) plus(fib(suc(N)),fib(N)), becomes fib(U,V) <=> U = suc(W), W = suc(N) |fib(N,Y), fib(W,X),

plus(X,Y,V).

Page 138: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Term RewritingExample Term Rewritingas as CHRCHR Solving:Solving:fibonaccifibonacci

a) plus(X,0) X

b) plus(X,suc(Y)) suc(plus(X,Y))

c) fib(0) suc(0)

d) fib(suc(0)) suc(0)e) fib(suc(suc(N))

plus(fib(suc(N)),fib(N))

a@ plus(X,U,V) <=> U = 0 | V = X.b@ plus(X,U,V) <=> U = suc(Y) | V = suc(W), plus(X,Y,W).c@ fib(U,V) <=> U = 0 | V = suc(0).d@ fib(U,V) <=> U = suc(0) | V = suc(0).e@ fib(U,V) <=> U = suc(W), W = suc(N) | fib(N,Y), fib(W,X), plus(X,Y,V).

Page 139: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Term RewritingExample Term Rewritingas as CHRCHR Solving Solving Solving: Solving: fibonacci(2) = fibonacci(2) =

??a@ p(X,U,V) <=> U = 0 | V = X.b@ p(X,U,V) <=> U = s(Y) | V = s(W), p(X,Y,W).c@ f(U,V) <=> U = 0 | V = s(0).d@ f(U,V) <=> U = s(0) | V = s(0).e@ f(U,V) <=> U = s(W), W = s(N) | f(N,Y), f(W,X), p(X,Y,V).

Rule RDCS BICS MEG

f(s(s(0)),R) true

Page 140: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Term RewritingExample Term Rewritingas as CHRCHR Solving Solving Solving: Solving: fibonacci(2) = fibonacci(2) =

??a@ p(X,U,V) <=> U = 0 | V = X.b@ p(X,U,V) <=> U = s(Y) | V = s(W), p(X,Y,W).c@ f(U,V) <=> U = 0 | V = s(0).d@ f(U,V) <=> U = s(0) | V = s(0).e@ f(U,V) <=> U = s(W), W = s(N) | f(N,Y), f(W,X), p(X,Y,V).

Guard Entailment Condition:R true N1,U1,V1,W1 U1=s(s(0)) V1=R U1=s(W1) W1=s(N1),

e.g., N1=0, U1=s(s(0)), V1=R, W1=s(0)

Rule RDCS BICS MEG

e? f(s(s(0)),R) true U1=s(s(0)), V1=R, U1=s(W1), W1=s(N1)

Page 141: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Term RewritingExample Term Rewritingas as CHRCHR Solving Solving Solving: Solving: fibonacci(2) = fibonacci(2) =

??a@ p(X,U,V) <=> U = 0 | V = X.b@ p(X,U,V) <=> U = s(Y) | V = s(W), p(X,Y,W).c@ f(U,V) <=> U = 0 | V = s(0).d@ f(U,V) <=> U = s(0) | V = s(0).e@ f(U,V) <=> U = s(W), W = s(N) | f(N,Y), f(W,X), p(X,Y,V).

Built-in First-Order Atom Syntactic Equality Solver (Unification): U1=s(s(0)) U1=s(W1) W1=s(0)

W1=s(0) W1=s(N1) N1=0

Rule RDCS BICS MEG

e! f(s(s(0)),R) true U1=s(s(0)), V1=R, U1=s(W1), W1=s(N1)

f(N1,Y1), f(W1,X1), p(X1,Y1,V1)

U1=s(s(0)), V1=R, U1=s(W1), W1=s(N1)

Page 142: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Term RewritingExample Term Rewritingas as CHRCHR Solving Solving Solving: Solving: fibonacci(2) = fibonacci(2) =

??a@ p(X,U,V) <=> U = 0 | V = X.b@ p(X,U,V) <=> U = s(Y) | V = s(W), p(X,Y,W).c@ f(U,V) <=> U = 0 | V = s(0).d@ f(U,V) <=> U = s(0) | V = s(0).e@ f(U,V) <=> U = s(W), W = s(N) | f(N,Y), f(W,X), p(X,Y,V).

Built-in First-Order Atom Syntactic Equality Solver (Unification): U1=s(s(0)) U1=s(W1) W1=s(0)

W1=s(0) W1=s(N1) N1=0

Rule RDCS BICS MEG

e! f(s(s(0)),R) true U1=s(s(0)), V1=R, U1=s(W1), W1=s(N1)

f(N1,Y1), f(W1,X1), p(X1,Y1,V1)

R=V1, N1=0, U1=s(s(0)), W1=s(0)

Page 143: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Term RewritingExample Term Rewritingas as CHRCHR Solving Solving Solving: Solving: fibonacci(2) = fibonacci(2) =

??a@ p(X,U,V) <=> U = 0 | V = X.b@ p(X,U,V) <=> U = s(Y) | V = s(W), p(X,Y,W).c@ f(U,V) <=> U = 0 | V = s(0).d@ f(U,V) <=> U = s(0) | V = s(0).e@ f(U,V) <=> U = s(W), W = s(N) | f(N,Y), f(W,X), p(X,Y,V).

Guard Entailment Condition:R,N1,U1,V1,Y1,W1 R=V1 N1=0 U1=s(s(0)) W1=s(0) U2,V2 U2=N1 V2=Y1 U2=0,e.g., U2=0, V2=Y1

Rule RDCS BICS MEG

e! f(s(s(0)),R) true U1=s(s(0)), V1=R, U1=s(W1), W1=s(N1)

c? f(N1,Y1), f(W1,X1), p(X1,Y1,V1)

R=V1, N1=0, U1=s(s(0)), W1=s(0) U2=N1, V2=Y1, U2=0

Page 144: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Term RewritingExample Term Rewritingas as CHRCHR Solving Solving Solving: Solving: fibonacci(2) = fibonacci(2) =

??a@ p(X,U,V) <=> U = 0 | V = X.b@ p(X,U,V) <=> U = s(Y) | V = s(W), p(X,Y,W).c@ f(U,V) <=> U = 0 | V = s(0).d@ f(U,V) <=> U = s(0) | V = s(0).e@ f(U,V) <=> U = s(W), W = s(N) | f(N,Y), f(W,X), p(X,Y,V).

Built-in First-Order Atom Syntactic Equality Solver (Unification):V2=Y1 V2=s(0) Y1=s(0)

Rule RDCS BICS MEG

e! f(s(s(0)),R) true U1=s(s(0)), V1=R, U1=s(W1), W1=s(N1)

c! f(N1,Y1), f(W1,X1), p(X1,Y1,V1)

R=V1, N1=0, U1=s(s(0)), W1=s(0) U2=N1, V2=Y1, U2=0

f(W1,X1), p(X1,Y1,V1)

R=V1, N1=0, U1=s(s(0)), W1=s(0), U2=N1, V2=Y1, U2=0, V2=s(0)

Page 145: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Term RewritingExample Term Rewritingas as CHRCHR Solving Solving Solving: Solving: fibonacci(2) = fibonacci(2) =

??a@ p(X,U,V) <=> U = 0 | V = X.b@ p(X,U,V) <=> U = s(Y) | V = s(W), p(X,Y,W).c@ f(U,V) <=> U = 0 | V = s(0).d@ f(U,V) <=> U = s(0) | V = s(0).e@ f(U,V) <=> U = s(W), W = s(N) | f(N,Y), f(W,X), p(X,Y,V).

Guard Entailment Condition: R,N1,U1,V1,Y1,W1,U2,V2 R=V1 N1=U2=0 U1=s(s(0)) W1=Y1=V2=s(0) U3,V3 U3=W1 V3=X1 U3=s(0) e.g., U3=s(0), V3=X1

Rule RDCS BICS MEG

e! f(s(s(0)),R) true U1=s(s(0)), V1=R, U1=s(W1), W1=s(N1)

c! f(N1,Y1), f(W1,X1), p(X1,Y1,V1)

R=V1, N1=0, U1=s(s(0)), W1=s(0) U2=N1, V2=Y1, U2=0

d? f(W1,X1), p(X1,Y1,V1)

R=V1, N1=U2=0, U1=s(s(0)), W1=Y1=V2=s(0) U3=W1, V3=X1, U3=s(0)

Page 146: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Term RewritingExample Term Rewritingas as CHRCHR Solving Solving Solving: Solving: fibonacci(2) = fibonacci(2) =

??a@ p(X,U,V) <=> U = 0 | V = X.b@ p(X,U,V) <=> U = s(Y) | V = s(W), p(X,Y,W).c@ f(U,V) <=> U = 0 | V = s(0).d@ f(U,V) <=> U = s(0) | V = s(0).e@ f(U,V) <=> U = s(W), W = s(N) | f(N,Y), f(W,X), p(X,Y,V).

Built-in First-Order Atom Syntactic Equality Solver (Unification):V3=X1 V3=s(0) X1=s(0)

Rule RDCS BICS MEG

e! f(s(s(0)),R) true U1=s(s(0)), V1=R, U1=s(W1), W1=s(N1)

c! f(N1,Y1), f(W1,X1), p(X1,Y1,V1)

R=V1, N1=0, U1=s(s(0)), W1=s(0) U2=N1, V2=Y1, U2=0

d! f(W1,X1), p(X1,Y1,V1) R=V1, N1=U2=0, U1=s(s(0)), W1=Y1=V2=s(0) U3=W1, V3=X1, U3=s(0)

p(X1,Y1,V1) R=V1, N1=U2=0, U1=s(s(0)), W1=X1=Y1=V2=U3=V3=s(0)

Page 147: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Term RewritingExample Term Rewritingas as CHRCHR Solving Solving Solving: Solving: fibonacci(2) = fibonacci(2) =

??a@ p(X,U,V) <=> U = 0 | V = X.b@ p(X,U,V) <=> U = s(Y) | V = s(W), p(X,Y,W).c@ f(U,V) <=> U = 0 | V = s(0).d@ f(U,V) <=> U = s(0) | V = s(0).e@ f(U,V) <=> U = s(W), W = s(N) | f(N,Y), f(W,X), p(X,Y,V).

Guard Entailment Condition: R,N1,U1,V1,X1,Y1,W1,U2,V2,U3,V3R=V1 N1=U2=0 U1=s(s(0)) W1=X1=Y1=V2=U3=V3=s(0) U4,V4,X4,Y4,W4 X4=X1 U4=Y1 V4=V1 U4=s(Y4)e.g., U4=s(0), V4=R, X4=s(0), Y4=0

Rule RDCS BICS MEG

e! f(s(s(0)),R) true U1=s(s(0)), V1=R, U1=s(W1), W1=s(N1)

c! f(N1,Y1), f(W1,X1), p(X1,Y1,V1)

R=V1, N1=0, U1=s(s(0)), W1=s(0) U2=N1, V2=Y1, U2=0

d! f(W1,X1), p(X1,Y1,V1) R=V1, N1=U2=0, U1=s(s(0)), W1=Y1=V2=s(0) U3=Z1, V3=X1, U3=s(0)

b? p(X1,Y1,V1) R=V1, N1=U2=0, U1=s(s(0)), W1=X1=Y1=V2=U3=V3=s(0)

X4=X1, U4=Y1, V4=V1, U4=s(Y4)

Page 148: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Term RewritingExample Term Rewritingas as CHRCHR Solving Solving Solving: Solving: fibonacci(2) = fibonacci(2) =

??a@ p(X,U,V) <=> U = 0 | V = X.b@ p(X,U,V) <=> U = s(Y) | V = s(W), p(X,Y,W).c@ f(U,V) <=> U = 0 | V = s(0).d@ f(U,V) <=> U = s(0) | V = s(0).e@ f(U,V) <=> U = s(W), W = s(N) | f(N,Y), f(W,X), p(X,Y,V).

Built-in First-Order Atom Syntactic Equality Solver (Unification):U4=Y1 Y1=s(0) U4=s(0)U4=s(0) U4=s(Y4) Y4=0X4=X1 X1=s(0) X4=s(0)

Rule RDCS BICS MEG

e! f(s(s(0)),R) true U1=s(s(0)), V1=R, U1=s(W1), W1=s(N1)

c! f(N1,Y1), f(W1,X1), p(X1,Y1,V1)

R=V1, N1=0, U1=s(s(0)), W1=s(0) U2=N1, V2=Y1, U2=0

d! f(W1,X1), p(X1,Y1,V1) R=V1, N1=U2=0, U1=s(s(0)), W1=Y1=V2=s(0) U3=Z1, V3=X1, U3=s(0)

b! p(X1,Y1,V1) R=V1, N1=U2=0, U1=s(s(0)), W1=X1=Y1=V2=U3=V3=s(0) X4=X1, U4=Y1, V4=V1, U4=s(Y4)

p(X4,Y4,W4) R=V1=V4=s(W4), N1=U2=Y4=0, U1=s(s(0)), W1=X1=Y1=V2=U3=V3=U4=X4=s(0)

Page 149: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Term RewritingExample Term Rewritingas as CHRCHR Solving Solving Solving: Solving: fibonacci(2) = fibonacci(2) =

??a@ p(X,U,V) <=> U = 0 | V = X.b@ p(X,U,V) <=> U = s(Y) | V = s(W), p(X,Y,W).c@ f(U,V) <=> U = 0 | V = s(0).d@ f(U,V) <=> U = s(0) | V = s(0).e@ f(U,V) <=> U = s(W), W = s(N) | f(N,Y), f(W,X), p(X,Y,V).

Guard Entailment Condition: R,N1,U1,V1,X1,Y1,W1,U2,V2,U3,V3,U4,V4,W4,X4,Y4,R=V1=V4=s(W4) N1=U2=Y4=0 ) U1=s(s(0)) ) W1=X1=Y1=V2=U3=V3=U4=X4=s(0) U5,V5,X5 X5=X4 U5=Y4 V5=W4 U5 = 0e.g., U5=0, V5=W4, X5=s(0)

Rule RDCS BICS MEG

e! f(s(s(0)),R) true U1=s(s(0)), V1=R, U1=s(W1), W1=s(N1)

c! f(N1,Y1), f(W1,X1), p(X1,Y1,V1)

R=V1, N1=0, U1=s(s(0)), W1=s(0) U2=N1, V2=Y1, U2=0

d! f(W1,X1), p(X1,Y1,V1) R=V1, N1=U2=0, U1=s(s(0)), W1=Y1=V2=s(0) U3=Z1, V3=X1, U3=s(0)

b! p(X1,Y1,V1) R=V1, N1=U2=0, U1=s(s(0)), W1=X1=Y1=V2=U3=V3=s(0) X4=X1, U4=Y1, V4=V1, U4=Y4

a? p(X4,Y4,W4) R=V1=V4=s(W4), N1=U2=Y4=0, U1=s(s(0)), W1=X1=Y1=V2=U3=V3=U4=X4=s(0)

X5=X4, U5=Y4, V5=W4, U5 = 0

Page 150: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Term RewritingExample Term Rewritingas as CHRCHR Solving Solving Solving: Solving: fibonacci(2) = fibonacci(2) =

??a@ p(X,U,V) <=> U = 0 | V = X.b@ p(X,U,V) <=> U = s(Y) | V = s(W), p(X,Y,W).c@ f(U,V) <=> U = 0 | V = s(0).d@ f(U,V) <=> U = s(0) | V = s(0).e@ f(U,V) <=> U = s(W), W = s(N) | f(N,Y), f(W,X), p(X,Y,V).

Built-in First-Order Atom Syntactic Equality Solver (Unification):X5=X4 X4=s(0) X5=s(0)X5=s(0) V5=X5 V5=s(0)V5=s(0) V5=W4 W4=s(0)W4=s(0) R=s(W4) R=s(s(0))

Rule RDCS BICS MEG

e! f(s(s(0)),R) true U1=s(s(0)), V1=R, U1=s(W1), W1=s(N1)

c! f(N1,Y1), f(W1,X1), p(X1,Y1,V1)

R=V1, N1=0, U1=s(s(0)), W1=s(0) U2=N1, V2=Y1, U2=0

d! f(W1,X1), p(X1,Y1,V1) R=V1, N1=U2=0, U1=s(s(0)), W1=Y1=V2=s(0) U3=Z1, V3=X1, U3=s(0)

b! p(X1,Y1,V1) R=V1, N1=U2=0, U1=s(s(0)), W1=X1=Y1=V2=U3=V3=s(0) X4=X1, U4=Y1, V4=V1, U4=Y4

a! p(X4,Y4,W4) R=V1=V4=s(W4), N1=U2=Y4=0, U1=s(s(0)), W1=X1=Y1=V2=U3=V3=U4=X4=s(0)

X5=X4, U5=Y4, V5=W4, U5 = 0

R=V1=V4=s(W4), N1=U2=Y4=U5=0, U1=s(s(0)), W1=X1=Y1=V2=U3=V3=U4=X4=X5=s(0), V5=W4, V5=X5

Page 151: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Term RewritingExample Term Rewritingas as CHRCHR Solving Solving Solving: Solving: fibonacci(2) = fibonacci(2) =

??a@ p(X,U,V) <=> U = 0 | V = X.b@ p(X,U,V) <=> U = s(Y) | V = s(W), p(X,Y,W).c@ f(U,V) <=> U = 0 | V = s(0).d@ f(U,V) <=> U = s(0) | V = s(0).e@ f(U,V) <=> U = s(W), W = s(N) | f(N,Y), f(W,X), p(X,Y,V).

Built-in First-Order Atom Syntactic Equality Solver (Unification):X5=X4 X4=s(0) X5=s(0)X5=s(0) V5=X5 V5=s(0)V5=s(0) V5=W4 W4=s(0)W4=s(0) R=s(W4) R=s(s(0))

Rule RDCS BICS MEG

e! f(s(s(0)),R) true U1=s(s(0)), V1=R, U1=s(W1), W1=s(N1)

c! f(N1,Y1), f(W1,X1), p(X1,Y1,V1)

R=V1, N1=0, U1=s(s(0)), W1=s(0) U2=N1, V2=Y1, U2=0

d! f(W1,X1), p(X1,Y1,V1) R=V1, N1=U2=0, U1=s(s(0)), W1=Y1=V2=s(0) U3=Z1, V3=X1, U3=s(0)

b! p(X1,Y1,V1) R=V1, N1=U2=0, U1=s(s(0)), W1=X1=Y1=V2=U3=V3=s(0) X4=X1, U4=Y1, V4=V1, U4=Y4

a! p(X4,Y4,W4) R=V1=V4=s(W4), N1=U2=Y4=0, U1=s(s(0)), W1=X1=Y1=V2=U3=V3=U4=X4=s(0)

X5=X4, U5=Y4, V5=W4, U5 = 0

R=V1=V4=s(s(0)), N1=U2=Y4=U5=0, U1=s(s(0))W1=X1=Y1=V2=U3=V3=U4=X4=W4=V5=X5=s(0)

Page 152: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Term RewritingExample Term Rewritingas as CHRCHR Solving Solving Solving: Solving: fibonacci(2) = fibonacci(2) =

??a@ p(X,U,V) <=> U = 0 | V = X.b@ p(X,U,V) <=> U = s(Y) | V = s(W), p(X,Y,W).c@ f(U,V) <=> U = 0 | V = s(0).d@ f(U,V) <=> U = s(0) | V = s(0).e@ f(U,V) <=> U = s(W), W = s(N) | f(N,Y), f(W,X), p(X,Y,V).

Built-in First-Order Atom Syntactic Equality Solver (Unification):X5=X4 X4=s(0) X5=s(0)X5=s(0) V5=X5 V5=s(0)V5=s(0) V5=W4 W4=s(0)W4=s(0) R=s(W4) R=s(s(0))

Rule RDCS BICS MEG

e! f(s(s(0)),R) true U1=s(s(0)), V1=R, U1=s(W1), W1=s(N1)

c! f(N1,Y1), f(W1,X1), p(X1,Y1,V1)

R=V1, N1=0, U1=s(s(0)), W1=s(0) U2=N1, V2=Y1, U2=0

d! f(W1,X1), p(X1,Y1,V1) R=V1, N1=U2=0, U1=s(s(0)), W1=Y1=V2=s(0) U3=Z1, V3=X1, U3=s(0)

b! p(X1,Y1,V1) R=V1, N1=U2=0, U1=s(s(0)), W1=X1=Y1=V2=U3=V3=s(0) X4=X1, U4=Y1, V4=V1, U4=Y4

a! p(X4,Y4,W4) R=V1=V4=s(W4), N1=U2=Y4=0, U1=s(s(0)), W1=X1=Y1=V2=U3=V3=U4=X4=s(0)

X5=X4, U5=Y4, V5=W4, U5 = 0

R=s(s(0))

Projection(BICS, vars(Query))

Page 153: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHRVV vs. Rewriting Systems vs. Rewriting Systems

CHRV: Matching applied to atomic formula

conjunctions Rule head is matched with constraint

store sub-set, which requires the head to be more general than the sub-set

Propagation rules provide further simplification opportunities

Rewriting Systems: Unification of LHS is applied

recursively down to sub-terms Rule LHS is unified with sub-term

which allows the sub-term to be more general than the LHS

All reasoning done through rewriting (no propagation rules)

Common characteristics: Forward chains rules Requires conflict resolution strategy to choose:

Which of several matching rules to fire Non-monotonic reasoning due to:

Constraint retraction in Rule-Defined Constraint Store Retraction of substituted sub-term

Tricky confluence and termination issues

Page 154: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Implementing a Production SystemImplementing a Production Systemin CHRin CHR

Map each production rule of the form:IF m1 AND ... AND ml THEN a1 AND ... AND an

where: {a1 ,..., an} = {add(n1) ,..., add(ni)} {delete(o1) ,..., delete(oj)} {hplOp1(p11,..., p1n) ,..., hplOpk(pk1,..., pkm)}

onto a CHR simpagation rule of the form:p1,..., pr \ o1 ,..., oj hplOp1(p11, ..., p1n) ,..., hplOpk(pk1,..., pkm) | n1 ,..., ni.where {p1,..., pr} = {m1,..., ml} \ {o1 ,..., oj}

Valid only when: {o1 , ... , oj} \ {m1, ... , ml} = , and

C{hplOp1(p11,..., p1n),...,hplOpk(pk1,..., pkm)}, O{o1,...,oj}, N{n1,...,ni} C occurs before O and N in a1 and ... and an

i.e., there no direct way in CHR to: delete facts (ground constraints) not matched in the rule head call host programming language operations after some matched facts have

been deleted or add to the fact base (constraint store) two possibilities allowed in production systems that make the resulting rule

base operational behavior hard to comprehend, verify and maintain

Page 155: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHRVV vs. Production Systems vs. Production Systems

CHRV: Constraint store contains arbitrary atoms

including functional, non-ground atoms Simplification rules allow straightforward

modeling for goal-driven reasoning, with rewriting simulating Prolog-like backward chaining

Disjunctive bodies Built-in backtracking search

Production Systems: Fact base only contains

ground Datalog atoms Cumbersome modeling to

implement goal-driven reasoning

No disjunctions in RHS No built-in search

Common characteristics: Forward chains rules Requires conflict resolution strategy to choose:

Which of several matching rules to fire Non-monotonic reasoning due to:

Constraint retraction in Rule-Defined Constraint Store Fact retraction in the RHS

Tricky confluence and termination issues

Page 156: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Implementing a Prolog Program in Implementing a Prolog Program in CHRCHR

Map Prolog fact base of the form {f1. ... fn.} onto a fact introduction CHR propagation rule: facts f1 ,..., fn.

Map each set of Prolog deductive rules of the form{p(t1

1,...,tn1) :- b1. ... p(t1

k,...,tnk) :- bk.}

that provide the intentional part of the definition for predicate p onto a CHR simplification rule of the form

p(X1,...,Xn) (X1=t11,..., Xn=tn

1, b1) ;...; (X1=t1k ,..., Xn=tn

k, bk).where {X1,...,Xn} is a set of fresh variablesnot occurring in {t1

1,...,tn1,b1, ... p(t1

k,...,tnk), bk}

Map each set of Prolog facts of the form{p(t'11,...,t'n1). ,..., p(t'1k,...,t'nk).}that provide the extensional part of the definition for predicate p onto a CHR world closure propagation rule of the form

p(X1,...,Xn) (X1=t'11,..., Xn=t'n1) ;...; (X1=t'1k ,..., Xn=t'nk).

Valid only for pure Prolog programs

Page 157: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

Example Prolog ProgramExample Prolog ProgramImplemented in CHRImplemented in CHR

Prolog Programfather(john,mary). father(john,peter).mother(jane,mary).

person(john,male). person(peter,male). person(jane,female). person(mary,female). person(paul, male).

parent(P,C) :- father(P,C).parent(P,C) :- mother(P,C).

sibling(C1,C2) :- not C1 = C2, parent(P,C1),

parent(P,C2).

CHR Translationfacts father(john,mary), father(john,peter), mother(jane,mary), person(john,male), person(peter,male), person(jane,female),

person(mary,female), person(paul, male).

parent(P,C) father(P,C) ; mother(P,C).

sibling(C1,C2) C1 C2 | parent(P,C1), parent(P,C2).

father(F,C) (F=john,C=mary) ; (F=john,C=peter).

mother(M,C) (M=jane,C=mary) .

person(P,G) (P=john, G=male) ; (P=peter, G=male) ;

(P=jane, G=male) ; (P=mary, G=male) ;

(P=paul, G=male).

Page 158: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHRVV vs. Prolog vs. Prolog

CFOL semantics of CHRV guardless, single head simplification rule, equivalent to CFOL semantics of pure Prolog clause set sharing same conclusion (Clark's completion) Simplification rule: sh <=> true | b1

1, ..., bkp ; ... ; b1

1, ..., blq.

where: {X1, ..., Xn} = vars(shi), and {Y1, ... , Ym} = vars(b1 ... bk) \ {X1, ..., Xn} X1, ..., Xn true (sh Y1, ... , Ym ((b1

1 ... bk

p) ... (b11 ... bk

q))

Equivalent Prolog clauses: {sh :- b1

1, ..., bkp. , ... , sh :- b1

1, ..., blq.}

Thus, using Clark's completion, any Prolog program can be reformulated into a semantically equivalent CHRV program

CHRV extends Prolog with: Conjunctions in the heads Guards Non-ground numerical constraints heads, guards and bodies Propagation rules

Page 159: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CLP with CHRCLP with CHR

CLP Engine CLP Application Rule Base

Prolog Engine

CHRHost

ProgrammingLanguage L

CHR EngineCHR Base for Domain D1 Solver

CHR Base for Domain Dk Solver

...

Prolog/L Bridge

Page 160: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CLP with CHRCLP with CHR

CLP Application Rule Base

CHR

HostProgrammingLanguage L

CHR EngineCHR Base for Domain D1 Solver

CHR Base for Domain Dk Solver

...

Page 161: Constraint Handling Rules (CHR): Rule-Based Constraint Solving and Deduction

CHRCHRVV: Practical Applications: Practical Applications

Declarative, easy to extend and compose constraint solvers and all their applications Scheduling, allocation, planning, optimization, recommendation,

configuration Deductive theorem proving (propositional and first-order) and all its

applications: CASE tools, declarative programs analysis, formal methods in hardware and

software design, Hypothetical abductive reasoning and all its applications:

Diagnosis and repair, observation explanation, sensor data integration Multi-agent reasoning Spatio-temporal reasoning and robotics Hybrid reasoning integrating:

Deduction, belief revision, abduction, constraint solving and optimization with open and closed world assumption

Heterogeneous knowledge integration Semantic web services Natural language processing