orcas constraint handling rules may, 2005 jairson vitorino and marcos aurélio orcas orcas
Post on 20-Dec-2015
220 views
TRANSCRIPT
Orcas
Constraint Handling Rules
May, 2005Jairson Vitorino and Marcos Aurélio
ORCAS
Orcas
Orcas
Contents
• CHR– Introduction – Syntax– Operational Semantics– Example
• CHR-– Introduction – Operational Semantics– Example
• References
Orcas
CHR
Constraint Handling Rules
Orcas
Introduction
• Constraint Logic Programming– Logic Programming + Constraint Solving
• CHR: Language for writing Constraint Solvers: – rule-based – Flexible to define new domains– Constraint resolution via rules (declarative)
Orcas
Introduction
• CHR– Rewrite rules (pattern matching + simplify
rules) – Plus propagation rules– Similiar to production rules (forward chaining),
but with a well defined semantics– CHR + disjunction is turing-complete, first-order
knowledge language and monotonic
Current CSP software packages have fixed domains and constraints, answer: CHR
Orcas
Syntax
• Constraints– User-defined
• Ex: noattack(Q1,Q2), connected(X,Y,3)
– Built-In• Ex: A>B, A=B, ground(A)
Orcas
Syntax: typical rule
H1,...,Hn <=>G1,...Gn | B1,...,Bn
MultipleHeads
Guards Body
Commited choice: When the engine picks a rulethere will not be any backtracking, so in CHR order matters!
(Only user-defined)(Only built-in) Both constraint
categories
Orcas
Syntax
• Rules– Simplification
• H1,...,Hn <=> G1,...Gn | B1,...,Bn
– Propagation• H1,...,Hn =>G1,...Gn | B1,...,Bn
– Simpagation• H1,...,Hn / Hn1,...Hnn<=>G1,...Gn |
B1,...,Bn
Orcas
Operational Semantics
State
Goal or query
User defined Constraints Store (UDCS)
Built-in Constraint Store (BICS)
CHR ENGINE
Logical meaning: y Goal UDCS BICS
CHR ProgramOr Base Rule
Final State: true or false
Orcas
Operational Semantics
• Transitions– Solve and Introduce– Propagate– Simplify
• Commited-choice and Confluence“The confluence property of a program
guarantees that any computation starting from an arbitrary given initial state, i.e. any possible order of rule applications, results in the same final state.”
Orcas
Operational Semantics
• Transitions (Solve)
X=Y, G1, G2Goal
U1, ..., UnUDCS
B1, ..., BnBICS
Solve:
G1, G2Goal
U1, ..., UnUDCS
B1, ..., Bn, X=YBICS
Built-in
Orcas
Operational Semantics
• Transitions (Introduce)
C(a,b), G1, ..., GnGoal
U1, ..., UnUDCS
B1, ..., BnBICS
Solve:
G1, G2Goal
C(a,b), U1, ..., UnUDCS
B1, ..., BnBICS
User-defined
Orcas
Operational Semantics
• Transitions (Simplify)U1,U2 B1| U3,U4
U5..., UnGoal
U1, U2 ,V1, ..., VnUDCS
B1, ..., BnBICS
Simplify:
U5,..., UnGoal
U3, U4, V1, ..., VnUDCS
B1, ..., BnBICS
Rule in CHR program
Orcas
Operational Semantics
• Transitions (Propagate)U1,U2 B1| U3,U4
UnGoal
U1, U2, ..., UnUDCS
B1, ..., BnBICS
Propagate:
U1, U2,..., UnGoal
U3, U4, U1, U2, ..., UnUDCS
B1, ..., BnBICS
Rule in CHR program
Orcas
Operational Semantics
• Transitions (Simpagate)U1,U2 / U5B1| U3,U4
U4,..., Un
GoalU1, U2,U5, ..., Un
UDCSB1, ..., Bn
BICS
Simpagate:
U6, ..., Un
GoalU3,U4, U1,U2 ..., Un
UDCSB1, ..., Bn
BICS
Rule in CHR program
Orcas
Example
CHR ProgramX=<Y <=> X=Y | true. X=<Y,Y=<X <=> X=Y. X=<Y,Y=<Z ==> X=<Z.
Initial state:
A<=B, C<=A, B<=CGoal
trueUDCS
trueBICS
Orcas
ExampleIntroduce:
C<=A, B<=CGoal
A<=BUDCS
trueBICS
Introduce:
B<=CGoal
C<=A, A<=BUDCS
trueBICS
Orcas
ExampleIntroduce:
trueGoal
C<=A, A<=B, B<=C
UDCStrue
BICS
Propagate: X<=Y,Y<=Z ==> X<=Z.
trueGoal
C<=B, C<=A, A<=B, B<=C
UDCStrue
BICS
Orcas
ExampleIntroduce:
trueGoal
C<=A, A<=BB<=C, C<=B
UDCStrue
BICS
Simplify: X<=Y,Y<=X <=> X=Y.
trueGoal
C<=A, A<=BUDCS
B=CBICS
Orcas
ExampleSolve:
trueGoal
C<=A, A<=BUDCS
B=CBICS
Simplify: X<=Y,Y<=X <=> X=Y.
Goaltrue
UDCSB=C, A=B
BICS
(Logo: C<=A equivale a B<=A)
true
Orcas
ExampleSolve:
trueGoal
trueUDCS
B=C, A=BBICS
Final State
Orcas
CHR-
Constraint Handling Rules with Disjunctions
Orcas
Introduction
• Allows disjunctions in the bodies of rules and in goals
• It can be used as a general-purpose logic programming language
Orcas
Operational Semantics
• State– Minimal set of subgoals
• Ex: a (b (c d)) e
– Logical meaning: y A– Initial State– Final State
• Successful• Failed
Orcas
Operational Semantics
• Transitions (Solve)
Solve:
a (b c) (b d) eGoal
a (b (c d)) eGoal
Orcas
Operational Semantics
• Solve– “To normalize the predefined means
to produce a new state G’ that is (according to the logical theory T0) logically equivalent to the state G”
Orcas
Operational Semantics
• Transitions (Simplify)– b c f g
Simplify:
a (f g) (b d) eGoal
a (b c) (b d) eGoal
Orcas
Operational Semantics
• Transitions (Split)
Simplify:
(b (a d e f)) (c (a d e f))Goal
(b c) (a d e f)Goal
Orcas
Example
bird albatross penguin.penguin flies false.
Initial state:
bird flies
Goal
Orcas
ExampleSimplify: bird albatross penguin.
(albatross penguin) flies
Goal
Split:
(albatross flies) (penguin flies)Goal
Orcas
Example
Propagate: penguin flies false.
(albatross flies) falseGoal
Final State (no derivation step can be applied)
Orcas
Example: K-coloring map
main() <=> true | color(X1), color(X2), color(X3), color(X4), connected(X1,X2), connected(X1,X3), connected(X3,X4), connected(X2,X4).
connected(X1,X2) <=> ground(X1), ground(X2), X1=X2 |false.color(X) ==> true | (X=1 ; X=2 ; X=3).
Orcas
Example: 4-Queens
main() <=> true | c(X1), c(X2), c(X3), c(X4), // rainhas na(X1,X2,1), na(X1,X3,2), na(X1,X4,3), na(X2,X3,1), na(X2,X4,2), na(X3,X4,1), sol(X1,X2,X3,X4).
na(X,Y,D) <=> ground(X), ground(Y) | P=Y+D, M=Y~D, ne(X,Y), ne(X,P),ne(X,M).c(X) <=> true | (X=1 ; X=2 ; X=3 ; X=4).sol(X1,X2,X3,X4) <=> ground(X1), ground(X2), ground(X3), ground(X4) | write(X1), write(X2), write(X3), writeLn(X4).
Orcas
Reference
• Theory and practice of Constraint Handling Rules (http://www.pst.informatik.uni-muenchen.de/personen/fruehwir/jlp-chr1/jlp-chr1.html)
• A languagem for experimenting with Declarative Paradigms (http://citeseer.ist.psu.edu/611754.html)
Orcas
Reference
• XSB Prolog– http://xsb.sf.net
• The ECLiPSe Constraint Logic Programming System– http://www.icparc.ic.ac.uk/eclipse/
• WebCHR– http://bach.informatik.uni-ulm.de/~webchr/
• JACK – Java Constraint Kit– http://www.pms.ifi.lmu.de/software/jack/