Download presentation
Presentation is loading. Please wait.
1
Ontologies Reasoning Components Agents Simulations Rule-Based Reasoning: Constraint Solving and Deduction Jacques Robin
2
Outline Rules as a knowledge representation formalism Common characteristics of rule-based systems Roadmap of rule-based languages Common advantages and limitations Example practical application of rules: declarative business rules History of rule-based systems Constraint Handling Rules (CHR) Production Systems Term Rewriting Systems Logic Programming and Prolog
3
Rules as a Knowledge Representation Formalism What is a rule? A statement that specifies that: If a determined logical combination of conditions is satisfied, over the set of an agent’s percepts and/or facts in its Knowledge Base (KB) that represent the current, past and/or hypothetical future of its environment model, its goals and/or its preferences, then a logico-temporal combination of actions can or must be executed by the agent, directly on its environment (through actuators) or on the facts in its KB. A KB agent such that the persistent part of its KB consists entirely of such rules is called a rule-base agent; In such case, the inference engine used by the KB agent is an interpreter or a compiler for a specific rule language.
4
Rule-Based Agent Environment Sensors Effectors Rule Base: Persistant intentional knowledge Dependent on problem class, not instance Declarative code Ask Fact Base: Volatile knowledge Dependent on problem instance Data Rule Engine: Problem class independent Only dependent on rule language Declarative code interpreter or compiler TellRetract Ask
5
Rule Languages: Common Characteristics Syntax generally: Extends a host programming language and/or Restricts a formal logic and/or Uses a semi-natural language with closed keyword set expressing logical connectives and actions classes, and an open keyword set to refer to the entities and relations appearing in the agent’s fact base; Some systems provide 3 distinct syntax layers for different users with automated tools to translate a rule across the various layers; Declarative semantics: generally based on some formal logic; Operational semantics: Generally based on transition systems, automata or similar procedural formalisms; Formalizes the essence of the rule interpreter algorithm.
6
Rule Languages: General Advantages Human experts in many domains (medicine, law, finance, marketing, administration, design, engineering, equipment maintenance, games, sports, etc.) find it intuitive and easy to formalize their knowledge as a rule base Facilitates knowledge acquisition Rules can be easily paraphrased in semi-natural language syntax, friendlier to experts averse to computational languages Facilitates knowledge acquisition Rule bases easy to formalize as logical formulas (conjunctions of equivalences and/or implications) Facilitates building rule engine that perform sound, logic-based inference Each rule largely independent of others in the base (but to precisely what degree depends highly of the rule engine algorithm) Can thus be viewed as an encapsulated, declarative piece of knowledge; Facilitates life cycle evolution and composition of knowledge bases Very sophisticated, mature rule base compilation techniques available Allows scalable inference in practice Some engines for simple rule languages can efficiently handle millions of rules
7
Rule Languages: General Limitations Subtle interactions between rules hard to debug without: sophisticated rule explanation GUI detailed knowledge of the rule engine’s algorithm Especially serious with: Object-oriented rule languages for combining rule-based deduction or abduction with class-based inheritance; Probabilistic rule languages for combining logical and Bayesian inference; But purely logical relational rule language do not naturally: Embed within mainstream object-oriented modeling and programming languages Represent inherently procedural, taxonomic and uncertain knowledge Current research challenge: User-friendly reasoning engine for probabilistic object-oriented rules
8
Business Rules Example of modern commercial application of rule-based knowledge representation GUI Layer Data Layer Business Logic Layer Classic 3-Tier Information System Architecture Imperative OO Program Imperative OO Language SQL API Imperative OO Language GUI API Classic Imperative OO Implementation Rule-Based Implementation Imperative OO Host Language Embedded Production Rule Engine Imperative OO Language SQL API Imperative OO Language GUI API Production Rule Base Generic Component Reusable in Any Application Domain Easier to reflect frequent policy changes than imperative code
9
Semi-Natural Language Syntax for Business Rules Associate key word or key phrase to: Each domain model entity or relation name Each rule language syntactic construct Each host programming language construct used in rules Substitute in place of these constructs and symbols the associated words or phrase Example: “Is West Criminal?” in semi-natural language syntax: IF P is American AND P sells a W to N AND W is a weapon AND N is a nation AND N is hostile THEN P is a criminal IF nono owns a W AND W is a missile THEN west sells W to nono IF W is a missile THEN W is a weapon IF N is an enemy of America THEN N is hostile
10
OO Rule Languages NeOPS JEOPS CLIPS JESS XML Web Markup Languages CLP(X) Rule-Based Constraint Languages Roadmap of Rule-Based Languages XSLT OPS5 Production Rules ISO Prolog Logic Programming Transaction Logic HiLog Concurrent Prolog Courteous Rules CCLP(X) Frame Logic Flora OCLMOF UML CHORD RuleML ELAN Maude Otter EProver Rewrite Rules SWSL CHR V CHR QVT Java Smalltalk C++ Pure OO Languages
11
Constraint Handling Rules (CHR): Key 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 CHR V adds backtracking search and thus generalizes Prolog rules as well
12
CHR by Example: Rule Base Defining in Terms of = reflexivity@ X Y X = Y | true. asymmetry@ X Y, Y X X=Y. % Constraint simplification (or rewriting) rules % Syntax: @ | % Logically: X vars(head guard) % ( Y vars(body - (head guard)) ) % 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: @ ==> guard | % Logically: X vars(head guard) % ( Y vars(body - (head guard)) ) % 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
13
CHR by Example: Rule Base Defining in Terms of = idempotence@ X Y \ X Y true. % Constraint simpagation rule (in this case, unguarded) % Syntax: @ \ guard | % Logically: X vars((head guard) ( % Y vars(body - (head guard)) ) % 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 conjunction answer1: 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 A answer2: A = B, B = C
14
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG A B, C A, B C A = 2 Matching Equations Guard Built-In Constraint StoreRule-Defined Constraint Store
15
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG r? A B, C A, B C A = 2X' = A, Y' = B, X' = Y' Active Constraint
16
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG r? A B, C A, B C A = 2X' = A = Y' = B Normalizing Simplification Active Constraint
17
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG r? A B, C A, B C A = 2X' = A = Y' = B Active Constraint
18
CHR by Example: Rule Base Defining 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 firing order depends on 3 heuristics, with the following priority: 1.Rule-defined constraint ordering to become active 2.Rule ordering to try matching and entailment check with active constraint 3.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; RuleRDCSBICSMEG a? A B, C A, B C A = 2X' = A, Y' = B, Y' = C, X' = A Active Constraint Partner Constraint
19
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG a? A B, C A, B C A = 2X' = A, Y' = B = C Active Constraint Partner Constraint
20
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG a? A B, C A, B C A = 2X' = C, Y' = A, Y' = A, X' = B Active Constraint Partner Constraint
21
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG a? A B, C A, B C A = 2X' = B = C, Y' = A Active Constraint Partner Constraint
22
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG a? A B, C A, B C A = 2X' = A, Y' = B, Y' = B, X' = C Active Constraint Partner Constraint
23
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG a? A B, C A, B C A = 2X' = A = C, Y' = B Active Constraint Partner Constraint
24
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG a? A B, C A, B C A = 2X' = B, Y' = C, Y' = A, X' = B Active Constraint Partner Constraint
25
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG a? A B, C A, B C A = 2X' = B, Y' = A = C Active Constraint Partner Constraint
26
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t? A B, C A, B C A = 2X' = A, Y' = B, Y' = C, Z' = A Active Constraint Partner Constraint
27
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t? A B, C A, B C A = 2X' = Z' = A, Y' = B = C Active Constraint Partner Constraint
28
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t? A B, C A, B C A = 2X' = C, Y' = A, Y' = A, Z' = B Active Constraint Partner Constraint
29
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t? A B, C A, B C A = 2X' = C, Y' = A, Z' = B Active Constraint Partner Constraint
30
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B A B, C A, B C, C B A = 2
31
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t? A B, C A, B C, C B A = 2X' = A, Y' = B, Y' = B, Z' = C Active Constraint Partner Constraint
32
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t? A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C Active Constraint Partner Constraint
33
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C A B, C A, B C, C B, A C A = 2
34
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C t? A B, C A, B C, C B, A C A = 2X' = B, Y' = C, Y' = A, Z' = B Active Constraint Partner Constraint
35
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C t? A B, C A, B C, C B, A C A = 2X' = Z' = B, Y' = A = C Active Constraint Partner Constraint
36
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C t? A B, C A, B C, C B, A C A = 2X' = A, Y' = B, Y' = C, Z' = B Active Constraint Partner Constraint
37
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C t? A B, C A, B C, C B, A C A = 2X' = A, Y' = Z' = B = C Active Constraint Partner Constraint
38
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C t? A B, C A, B C, C B, A C A = 2X' = C, Y' = B, Y' = A, Z' = B Active Constraint Partner Constraint
39
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C t? A B, C A, B C, C B, A C A = 2X' = C, Y' = Z' = A = B Active Constraint Partner Constraint
40
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C t? A B, C A, B C, C B, A C A = 2X' = A, Y' = B, Y' = A, Z' = C Active Constraint Partner Constraint
41
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C t? A B, C A, B C, C B, A C A = 2X' = Y' = A = B, Z' = C Active Constraint Partner Constraint
42
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C t? A B, C A, B C, C B, A C A = 2X' = A, Y' = C, Y' = A, Z' = B Active Constraint Partner Constraint
43
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C t? A B, C A, B C, C B, A C A = 2X' = Y' = A = C, Z' = B Active Constraint Partner Constraint
44
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = A, Y' = B, X' = C, Y' = A Active Constraint Partner Constraint
45
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = Y' = A = B = C Active Constraint Partner Constraint
46
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = C, Y' = A, X' = A, Y' = B Active Constraint Partner Constraint
47
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = Y' = A = B = C Active Constraint Partner Constraint
48
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = A, Y’ = B, X’ = B, Y’ = C Active Constraint Partner Constraint
49
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = A = B = Y’ = C Active Constraint Partner Constraint
50
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = B, Y' = C, X’ = A, Y’ = B Active Constraint Partner Constraint
51
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = Y' = A = B = C Active Constraint Partner Constraint
52
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = A, Y’ = B, X’ =C, Y’ = B Active Constraint Partner Constraint
53
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = A = C, Y’ = B Active Constraint Partner Constraint
54
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = C, Y' = B, X’ = A, Y’ = B Active Constraint Partner Constraint
55
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = A = C, Y' = B Active Constraint Partner Constraint
56
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = A, Y’ = B, X’ =A, Y’ = C Active Constraint Partner Constraint
57
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = A, Y’ = B = C Active Constraint Partner Constraint
58
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = A, Y' = C, X’ = A, Y’ = B Active Constraint Partner Constraint
59
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C i? A B, C A, B C, C B, A C A = 2X' = A, Y' = B = C Active Constraint Partner Constraint
60
CHR by Example: Rule Base Defining 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 N 1,... N n N 1,..., N n in order Constraints O 1,..., O m present in the store before processing A RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C r? A B, C A, B C, C B, A C A = 2X' = C, Y' = B, X' = Y' Active Constraint
61
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C r? A B, C A, B C, C B, A C A = 2X' = Y' = B = C Active Constraint
62
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C a? A B, C A, B C, C B, A C A = 2X' = C, Y' = B, Y' = A, X' = B, Partner Constraint Active Constraint
63
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C a? A B, C A, B C, C B, A C A = 2X' = Y' = A = C = B Partner Constraint Active Constraint
64
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C a? A B, C A, B C, C B, A C A = 2Y' = C, X' = B, X' = A, Y' = B Partner Constraint Active Constraint
65
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C a? A B, C A, B C, C B, A C A = 2X' = A = C, Y' = B Partner Constraint Active Constraint
66
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C a? A B, C A, B C, C B, A C A = 2X' = C, Y' = B, Y’ = C, X’ = A Partner Constraint Active Constraint
67
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C a? A B, C A, B C, C B, A C A = 2X' = Y’ = A, = B = C Partner Constraint Active Constraint
68
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C a? A B, C A, B C, C B, A C A = 2Y’ = C, X’ = B, X’ = C, Y’ = A Partner Constraint Active Constraint
69
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C a? A B, C A, B C, C B, A C A = 2X’ = Y’ = A = B = C Partner Constraint Active Constraint
70
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C a? A B, C A, B C, C B, A C A = 2X' = C, Y' = B, Y’ = B, X’ = C Partner Constraint Active Constraint
71
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C a? A B, C A, B C, C B, A C A = 2X' = C, Y' = B Partner Constraint Active Constraint
72
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C a! A B, C A, B C, C B, A C A = 2X' = C, Y' = B A B, C A, A C A = 2, B = C
73
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C r! A B, C A, B C, C B, A C A = 2X' = C, Y' = B r? A B, C A, A C A = 2, B = CX’ = A, Y’ = C, X’ = Y’ Active Constraint
74
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C r! A B, C A, B C, C B, A C A = 2X' = C, Y' = B r? A B, C A, A C A = 2, B = CX’ = Y’ = A = C Active Constraint
75
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C r! A B, C A, B C, C B, A C A = 2X' = C, Y' = B a? A B, C A, A C A = 2, B = CX’ = A, Y’ = C, Y’ = A, X’ = B Active Constraint Partner Constraint
76
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C r! A B, C A, B C, C B, A C A = 2X' = C, Y' = B a? A B, C A, A C A = 2, B = CX’ = Y’ = A = B = C Active Constraint Partner Constraint
77
CHR by Example: Rule Base Defining 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 RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C r! A B, C A, B C, C B, A C A = 2X' = C, Y' = B a? A B, C A, A C A = 2, B = CY’ = A, X’ = C, X’ = A, Y’ = B Active Constraint Partner Constraint
78
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C r! A B, C A, B C, C B, A C A = 2X' = C, Y' = B a? A B, C A, A C A = 2, B = CX’ = Y’ = A = B = C Active Constraint Partner Constraint
79
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C r! A B, C A, B C, C B, A C A = 2X' = C, Y' = B a? A B, C A, A C A = 2, B = CX’ = A, Y’ = C, Y’ = C, X’ = A Active Constraint Partner Constraint
80
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C r! A B, C A, B C, C B, A C A = 2X' = C, Y' = B a? A B, C A, A C A = 2, B = CX’ = Y’ = A = C Active Constraint Partner Constraint
81
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C r! A B, C A, B C, C B, A C A = 2X' = C, Y' = B a! A B, C A, A C A = 2, B = CX’ = Y’ = A = C A B A = 2, B = C, A = C
82
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C r! A B, C A, B C, C B, A C A = 2X' = C, Y' = B a! A B, C A, A C A = 2, B = CX’ = Y’ = A = C r? A B A = B = C = 2X’ = A, Y’ = B, X’ = Y’ Active Constraint
83
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C r! A B, C A, B C, C B, A C A = 2X' = C, Y' = B a! A B, C A, A C A = 2, B = CX’ = Y’ = A = C r? A B A = B = C = 2X’ = Y’ = A = B Active Constraint
84
CHR by Example: Rule Base Defining 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. RuleRDCSBICSMEG t! A B, C A, B C A = 2X' = C, Y' = A, Z' = B t! A B, C A, B C, C B A = 2X' = A, Y' = B, Z' = C r! A B, C A, B C, C B, A C A = 2X' = C, Y' = B a! A B, C A, A C A = 2, B = CX’ = Y’ = A = C r! A B A = B = C = 2X’ = Y’ = A = B A = B = C = 2 Constraints Simplified Final Normalized Solved Form
85
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 (condition 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 Overview CHR Base * CHR Rule guard simplified head propagated head body Logical Formula 0..1 Atomic Formula Simpagation Rule Simplification Rule Propagation Rule {non-overlapping, complete} Built-In Constraint Rule Defined Constraint
86
CHR: Complete Abstract Syntax Simpagation Rule Simplification Rule Propagation Rule CHR Base * CHR Rule guard simplified head propagated head body Logical Formula 0..1 2..* {non-overlapping, complete} Non-Ground Term Ground Term {non-overlapping, complete} And Formula Atomic Formula arg * Term Constraint Symbol Functional Term Non-Functional Term {non-overlapping, complete} arg * Function Symbol Constraint Domain * * * Built-In Constraint Rule Defined Constraint truefalse Variable Constant Symbol Rule Defined Constraint Symbol Built-In Constraint Symbol
87
CHR: Derivation Data Structures Simpagation Rule Simplification Rule Propagation Rule CHR Base * CHR Rule guard simplified head propagated head body CHR Logical Formula Atomic Formula Built-In Constraint Rule Defined Constraint 0..1 2..* Term And Formula arg * * * * {ordered} Rule Defined Constraint Store Built-In Constraint Store Used Rule Derivation State * CHR Derivation
88
CHR: Declarative Semantics in Classical First-Order Logic (CFOL) Simplification rule: sh 1,..., sh i g 1,..., g j | b 1,..., b k. where: {X 1,..., X n } = vars(sh 1 ... sh i g 1 ... g j ) and {Y 1,..., Y m } = vars(b 1 ... b k ) \ {X 1,..., X n } X 1,..., X n g1 ... gj (sh 1 ... sh i Y 1,..., Y m b 1 ... b k ) Propagation rule: ph 1,..., ph i ==> g 1,..., g j | b 1,..., b k. where: {X 1,..., X n } = vars(ph 1 ... ph i g 1 ... g j ) and {Y 1,..., Y m } = vars(b 1 ... b k ) \ {X 1,..., X n } X 1,..., X n g 1 ... g j (ph 1 ... ph i Y 1,..., Y m b 1 ... b k )
89
CHR: Constraint and Rule Priority 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
90
CHR Base Example: Defining min in Terms of , 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. RuleRDCSBICSMEG min(1,2,M)
91
CHR Base Example: Defining min in Terms of , 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. RuleRDCSBICSMEG r?min(1,2,M)true X' = 1, Y' = 2, Z' = M, X' Y'
92
CHR Base Example: Defining min in Terms of , 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. RuleRDCSBICSMEG r!min(1,2,M)true X' = 1, Y' = 2, Z' = M, X' Y' trueM = Z' = X' = 1
93
CHR Base Example: Defining min in Terms of , 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. RuleRDCSBICSMEG r!min(1,2,M)true X' = 1, Y' = 2, Z' = M, X' Y' trueM = 1 Projection(CS,vars(Query))
94
CHR Base Example: Defining min in Terms of , 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. RuleRDCSBICSMEG min(A,B,M) A B
95
CHR Base Example: Defining min in Terms of , 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. RuleRDCSBICSMEG r1?min(A,B,M) A BX' = A, Y' = B, Z' = M, X' Y'
96
CHR Base Example: Defining min in Terms of , 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. RuleRDCSBICSMEG r1!min(A,B,M) A BX' = A, Y' = B, Z' = M, X' Y' true M = Z' = X' = A, A B
97
CHR Base Example: Defining min in Terms of , 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. RuleRDCSBICSMEG r1!min(A,B,M) A BX' = A, Y' = B, Z' = M, X' Y' true M = A, A B Projection(CS,vars(Query))
98
CHR 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
99
> HostPlatform > Min min(X:Real, Y:Real, out Z:Real) > CHRDEngine X Y X = Y | true X Y Y X X = Y X Y Y Z X Z X Y \ X Y true X X false X Y Y Z X Y Y Z | X Z Y Z X Y X Y Y Z | X Z X Y Y Z X Y Y Z | X Z > LoeSltCHRDBase > LoeStl (X:Real, Y:Real): Boolean (X:Real, Y:Real): Boolean «uses» min(X,Y,Z) X Y | Z = X min(X,Y,Z) Z Y | Z = X min(X,Y,Z) Y Z | Z = Y min(X,Y,Z) Z X | Z = Y min(X,Y,Z) Z X Z Y > MinCHRDBase > CHRDEngine derive() «uses» Example CHR Base Component Assembly «uses» > EqNeq = (X:Real, Y:Real): Boolean (X:Real, Y:Real): Boolean
100
CHR Base Example: Restricted Form of 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 RuleRDCSBICSMEG ?Y == 2, ?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0 true
101
CHR Base Example: Restricted Form of 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. RuleRDCSBICSMEG r1??Y == 2, ?X + ?Y == 3, ?U - ?V == 2, ?U + ?V == 0 true?P = ?Y, C = 2
102
CHR Base Example: Restricted Form of 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. RuleRDCSBICSMEG 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
103
CHR Base Example: Restricted Form of 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. RuleRDCSBICSMEG 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
104
CHR Base Example: Restricted Form of 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 = ?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. RuleRDCSBICSMEG 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
105
CHR Base Example: Restricted Form of 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 = ?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. RuleRDCSBICSMEG 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
106
CHR Base Example: Restricted Form of 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. RuleRDCSBICSMEG 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
107
CHR Base Example: Restricted Form of 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. RuleRDCSBICSMEG 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
108
CHR Base Example: Restricted Form of 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. RuleRDCSBICSMEG 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
109
CHR Base Example: Restricted Form of 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. RuleRDCSBICSMEG 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
110
CHR Base Example: Restricted Form of 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 = ?U, ?Q = ?V, C = 0, D = 2, R = 1 RuleRDCSBICSMEG 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
111
CHR Base Example: Restricted Form of 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 = ?U, ?Q = ?V, C = 0, D = 2, R = 1 RuleRDCSBICSMEG 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
112
CHR Base Example: Restricted Form of 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. RuleRDCSBICSMEG 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
113
CHR Base Example: Restricted Form of 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. RuleRDCSBICSMEG 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
114
CHR Base Example: Restricted Form of 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 = ?U, ?Q = ?V, C = 0, ?P.number, R = -1 r4@ ?P + ?Q == C \ ?P - ?Q == D R := (C + D) / 2 | ?P = R. RuleRDCSBICSMEG 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
115
CHR Base Example: Restricted Form of 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 = ?U, ?Q = ?V, C = 0, ?P.number, R = -1 r4@ ?P + ?Q == C \ ?P - ?Q == D R := (C + D) / 2 | ?P = R. RuleRDCSBICSMEG 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
116
CHR : Abstract Syntax OrAnd Formula connective: enum{or,and} Simpagation Rule Simplification Rule Propagation Rule CHR Base * CHR Rule guard simplified head propagated head body And Formula Atomic Formula Constraint Built-In Constraint Rule Defined Constraint 2..* truefalse 0..1 Built-In Constraint Store Rule Defined Constraint Store * Fired Rule Derivation State * CHR Derivation * {ordered} ** Tried Alternative Body * *
117
CHR : Declarative Semantics in Classical First-Order Logic (CFOL) Simplification rule: sh 1,..., sh i g 1,..., g j | b 1 1,..., b k p ;... ; b 1 1,..., b l q. where: {X 1,..., X n } = vars(sh 1 ... sh i g 1 ... g j ) and {Y 1,..., Y m } = vars(b 1 ... b k ) \ {X 1,..., X n } X 1,..., X n g1 ... gj (sh 1 ... sh i Y 1,..., Y m ((b 1 1 ... b k p ) ... (b 1 1 ... b k q )) Propagation rule: ph 1,..., ph i ==> g 1,..., g j | b 1 1,..., b k p ;... ; b 1 1,..., b l q. where: {X 1,..., X n } = vars(ph 1 ... ph i g 1 ... g j ) and {Y 1,..., Y m } = vars(b 1 ... b k ) \ {X 1,..., X n } X 1,..., X n g 1 ... g j (ph 1 ... ph i Y 1,..., Y m ((b 1 1 ... b k p ) ... (b 1 1 ... b k q ))
118
CHR : Operational Semantics When rule R with disjunctive body B 1 ;... ; B k is fired Update both constraint stores using B 1 Start next matching-updating cycle When BICS = false or when no rule matches the RDCS Backtrack to last alternative body B i Restore both constraint stores to their states prior to their update with B i Update both constraint stores using B i+1 Start next matching-updating cycle Exhaustively try all alternative bodies of all fired rules through backtracking
119
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]).true
120
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG m?m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]).true
121
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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
122
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = r1, Rs = [r7,r4,r3,r2,r5,r6], C = C1, Cs = [C7,C4,C3,C2,C5,C6]
123
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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
124
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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
125
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = C1
126
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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
127
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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
128
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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 = rR = r1, C = C1 Already fired w/ same constraint. Not repeated to avoid trivial non-termination
129
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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 = rR = r7, Rs = [r4,r3,r2,r5,r6], C = C7, Cs = [C4,C3,C2,C5,C6]
130
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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 = rR = 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
131
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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 = rR = 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 = rRi = r1, Rj = r7, Ci = C1, Cj = C7, Ci = Cj
132
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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 = rR = 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 = rRi = r7, C = C7
133
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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 = rR = 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 = rRi = 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
134
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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 = rR = 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 = rRi = 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
135
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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 = rR = 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 = rRi = 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
136
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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 = rR = 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 = rRi = 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 btn(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
137
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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 = rR = 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 = rRi = r7, C = C7
138
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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 = rR = 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 = rRi = 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
139
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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 = rR = 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 = rRi = 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
140
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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 = rR = 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 = rRi = 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]
141
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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 = rR = 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 = rRi = 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]
142
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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) trueR = 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]) trueC = 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 = rR = 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 = rRi = 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
143
CHR Base Example: Map 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb RuleRDCSBICSMEG 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
144
CHR Base Example: Map Coloring Problem % More efficient version with forward checking d1@ 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). r2r2 bg r6r6 rgt r3r3 rb r4r4 rb r5r5 bg r1r1 rbg r7r7 rb
145
CHR V : 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
146
Rewrite Rules: Abstract Syntax Rewrite Rule Base Rewrite Rule * RHS plus(X,0) X fib(suc(suc(N))) plus(fib(suc(N)),fib(N)) Functional Term Non-Functional Term Ground Term Non-Ground Term Function Symbol Constant Symbol Variable * args {disjoint, complete} LHS Term
147
Rewrite Rules: Operational Semantics : Rewrite Rule Base T : Term Unify LHS of Rewrite Rule Base against sub-terms of Term : Unifying Set of Pairs: - Instantiated Rule - Instantiated Sub-term [ Matching Pair Set Empty ] [ Matching Pair Set Singleton ] : Pair - Instantiated Rule R - Instantiated Sub-Term S Pick one Pair Set [ Else ] Substitute Sub-Term S in Term T by RHS of Rule R
148
Rewrite Rule Base Computation Example 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)) 1.fib(suc(suc(suc(0)))) w/ rule e 2.plus(fib(suc(suc(0))),fib(suc(0))) w/ rule d 3.plus(fib(suc(suc(0))),suc(0)) w/ rule b 4.suc(plus(fib(suc(suc(0))),0)) w/ rule a 5.suc(fib(suc(suc(0)))) w/ rule e 6.suc(plus(fib(suc(0)),fib(0))) w/ rule c 7.suc(plus(fib(suc(0)),suc(0))) w/ rule b 8.suc(suc(plus(fib(suc(0)),0))) w/ rule a 9.suc(suc(fib(suc(0)))) w/ rule d 10.suc(suc(suc(0)))
149
Conditional Rewrite Rules: Abstract Syntax Rewrite Rule Base Rewrite Rule * LHS Term RHS Condition Equation * 2 X = 0 Y = 0 | X + Y 0 Rule with matching LHS can only be fired if condition is also verified Proving condition can be recursively done by rewriting it to true
150
Rewrite Rule Base Deduction Example: Is West Criminal? Rewrite Rule Base: a)criminal(P) american(P) weapon(W) nation(N) hostile(N) sells(P,N,W) b)sells(west,nono,W) owns(nono,W) missile(W) c)hostile(N) enemy(N,america) d)weapon(W) missile(W) e)owns(nono,m1) missile(m1) american(west) nation(nono) enemy(nono,america) true f)A B B A g)A A A Term: criminal(P) american(P) weapon(W) nation(N) hostile(N) sells(P,N,W) w/ rule a american(P) weapon(W) nation(N) hostile(N) owns(nono,W) missile(W) w/ rule b american(P) weapon(W) nation(N) enemy(N,america) owns(nono,W) missile(W) w/ rule c american(P) missile(W) nation(N) enemy(N,america) owns(nono,W) missile(W) w/ rule d american(P) missile(W) nation(N) enemy(N,america) owns(nono,W) w/ rule g... w/ rule f owns(nono,W) missile(W) american(P) nation(N) enemy(N,america) w/ rule f true w/ rule e
151
Rewriting Systems: Practical Application Theorem proving CASE: Programming language formal semantics Program verification Compiler design and implementation Model transformation and automatic programming Data integration Using XSLT an XML-based language to rewrite XML-based data and documents Web server pages and web services (also using XSLT)
152
Implementing a Rewriting System in CHR Map each conditional rewrite system rule of the form Condition | LHS RHS onto a CHR simplification rule of the form LHS Condition | RHS i.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 t i appearing in a Condition, LHS or RHS of the rewrite rule by: a new variable V i, and a new equational atom V i = t i 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).
153
Example Term Rewriting as CHR Solving:fibonacci 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).
154
Example Term Rewriting as CHR Solving Solving: 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). RuleRDCSBICSMEG f(s(s(0)),R)true
155
Example Term Rewriting as CHR Solving Solving: 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) RuleRDCSBICSMEG e?f(s(s(0)),R)trueU1=s(s(0)), V1=R, U1=s(W1), W1=s(N1)
156
Example Term Rewriting as CHR Solving Solving: 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 RuleRDCSBICSMEG e!f(s(s(0)),R)trueU1=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)
157
Example Term Rewriting as CHR Solving Solving: 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 RuleRDCSBICSMEG e!f(s(s(0)),R)trueU1=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)
158
Example Term Rewriting as CHR Solving Solving: 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 RuleRDCSBICSMEG e!f(s(s(0)),R)trueU1=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
159
Example Term Rewriting as CHR Solving Solving: 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) RuleRDCSBICSMEG e!f(s(s(0)),R)trueU1=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)
160
Example Term Rewriting as CHR Solving Solving: 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 RuleRDCSBICSMEG e!f(s(s(0)),R)trueU1=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)
161
Example Term Rewriting as CHR Solving Solving: 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) RuleRDCSBICSMEG e!f(s(s(0)),R)trueU1=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)
162
Example Term Rewriting as CHR Solving Solving: 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 R=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 RuleRDCSBICSMEG e!f(s(s(0)),R)trueU1=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)
163
Example Term Rewriting as CHR Solving Solving: 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=0 X4=X1 X1=s(0) X4=s(0) RuleRDCSBICSMEG e!f(s(s(0)),R)trueU1=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)
164
Example Term Rewriting as CHR Solving Solving: 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 = 0 e.g., U5=0, V5=W4, X5=s(0) RuleRDCSBICSMEG e!f(s(s(0)),R)trueU1=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
165
Example Term Rewriting as CHR Solving Solving: 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)) RuleRDCSBICSMEG e!f(s(s(0)),R)trueU1=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
166
Example Term Rewriting as CHR Solving Solving: 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)) RuleRDCSBICSMEG e!f(s(s(0)),R)trueU1=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)
167
Example Term Rewriting as CHR Solving Solving: 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)) RuleRDCSBICSMEG e!f(s(s(0)),R)trueU1=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))
168
CHR V vs. Rewriting Systems CHR V : 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
169
Production Rules: Abstract Syntax Production Rule Base Production Rule * Arithmetic Predicate Symbol Right-Hand Side (RHS) Action * Arithmetic Constant Symbol IF (p(X,a) OR p(X,b)) AND p(Y,Z) AND q(c) AND X <> Y AND X > 3.5 THEN Z = X + 12 AND add{r(a,c,Z} AND delete{p(Y,Z)} Fact Base * Atom And-Or Formula Connective: enum{and,or} Left-Hand Side (LHS) 2..* Arithmetic Calculation Fact Base Update Operator: enum{add,delete} Predicate Symbol Non-Ground Atom Constant Symbol Variable Ground Atom Non-Functional Term args Functor
170
Production System Architecture Fact Base Management Component Rule Firing Policy Component Host Language API Action Execution Component Fact Base Rule Base Pattern Matching Component Candidate Rules
171
Production Rules: Operational Semantics [Matching Instantiated Rule Set Empty] Pick one Instantiated Rule to Fire [Else] [Matching Instantiated Rule Set Singleton] Selected Instantiated Rule Execute in Sequence Actions in RHS of Selected Instantiated Rule Match LHS of Rule Base against Fact Base Rule Base Fact Base Matching Instantiated Rule Set
172
Conflict Resolution Strategies Conflict resolution strategy: Heuristic to choose at each cycle which of the matching rule set to fire Common strategies: Follow writing order of rules in rule base Follow absolute priority level annotations associated with each rule or rule class Follow relative priority level annotations associated with pairs of rules or rule classes Prefer rules whose LHS match the most recently derived facts in the fact base Prefer rules that have remained for the longest time unfired while matching a fact Apply control meta-rules that declaratively specify arbitrarily sophisticated strategies
173
Production Rule Base Example: Is West Criminal? Production Rule Base: IF american(P) AND weapon(W) AND nation(N) AND hostile(N) AND sell(P,N,W) THEN add{criminal(P)} IF owns(nono,W) AND missile(W) THEN add{sells(west,nono,W) IF missile(W) THEN add{weapon(W)} IF enemy(N,america) THEN add{hostile(N)} Initial Fact Base: owns(nono,m1) missile(m1) american(west) nation(nono) enemy(nono,america) nation(america)
174
Production Rule Inference Example: Is West Criminal? criminal(P) american(P)weapon(W)nation(N)hostile(N)sells(P,N,W) criminal(west)? missile(W)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
175
Production Rule Inference Example: Is West Criminal? criminal(P) american(P)weapon(W)nation(N)hostile(N)sells(P,N,W) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
176
Production Rule Inference Example: Is West Criminal? criminal(P) american(P)weapon(m1)nation(N)hostile(N)sells(P,N,W) criminal(west)? missile(W)enemy(nono,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
177
Production Rule Inference Example: Is West Criminal? criminal(P) american(P)weapon(m1)nation(N)hostile(N)sells(P,N,W) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
178
Production Rule Inference Example: Is West Criminal? criminal(P) american(P)weapon(m1)nation(N)hostile(nono)sells(P,N,W) criminal(west)? missile(W)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enemy(nono,america)owns(nono,m1) sells(west,nono,W)
179
Production Rule Inference Example: Is West Criminal? criminal(P) american(P)weapon(m1)nation(N)hostile(nono)sells(P,N,W) criminal(west)? missile(m1)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enemy(nono,america)owns(nono,m1) sells(west,nono,W)
180
Production Rule Inference Example: Is West Criminal? criminal(P) american(P)weapon(m1)nation(N)hostile(nono)sells(P,N,W) criminal(west)? missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)
181
Production Rule Inference Example: Is West Criminal? criminal(P) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)
182
Production Rule Inference Example: Is West Criminal? criminal(west) weapon(m1)hostile(nono) criminal(west)? missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)
183
Production Rule Inference Example: Is West Criminal? criminal(west) weapon(m1)hostile(nono) criminal(west)? yes missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)
184
Properties of Production Systems Confluence: From confluent rule base, same final fact base is derived independently of rule firing order Makes values of queries made to the system independent of the conflict resolution strategy Termination: Terminating system does not enter in an infinite loop; Example of non-termination production rule base: Initial fact base: p(0) Production rule base: IF p(X) THEN Y = X + 1 AND add{p(Y)} Any production system which conflict resolution strategy does not prevent the same rule instance to be fired in two consecutive cycles is trivially non-terminating.
185
Production System Inference vs. Lifted Forward Chaining Production System Inference Sequential conjunction of actions in rule RHS Non-monotonic reasoning due to delete actions Matching only Datalog atoms (i.e., atoms which arguments are all non- functional terms) Matching ground fact atoms against non-ground atoms in rule LHS And-Or atom Neither sound nor complete inference engine Lifted Forward Chaining Unique conclusion in Horn Clause Monotonic reasoning Unifying arbitrary first-order atoms, possibly functional Unifying two arbitrary atoms, possibly both non-grounds Sound and refutation-complete Common characteristics: Data driven reasoning Requires conflict resolution strategy to choose: Which of several matching rules to fire Which of several unifying clauses for next Modus Ponens inference step
186
Embedded Production System: Abstract Syntax HPL Operation HPL Ground Data Structure HPL Data Structure args * HPL Boolean Operation Right-Hand Side (RHS) Action * Fact Base Update Operator: enum{add,delete} Fact Base * Production Rule Base Production Rule * Left-Hand Side (LHS) And-Or Formula Connective: enum{and,or} 2..* HPL Boolean Operator HPL Operator
187
Generalized Production Rules: ECA Rules Event-Condition-Action rule: extension of production rule with triggering event external to addition of facts in fact base Only the rule subset which event just occurred is matched against the fact base Events thus partition the rule base into subsets, each one specifying a behavior in response to a given events Event Condtion Action Rule Event LHS RHS Agent’s Percept HPL Boolean Operation
188
Production Rules vs. Rewriting Rules Production System Inference Fact base implicitly conjunctive Matching only Datalog atoms (i.e., atoms which arguments are all non- functional terms) Matching ground fact atoms against non-ground atoms in rule LHS And-Or atom Term Rewriting Reified logical connectives in term provide full first-order expressivity Unifying arbitrary first-order atoms, possibly functional Unifying two arbitrary atoms, possibly both non-grounds Common characteristics: Data driven reasoning Requires conflict resolution strategy to choose: Which of several matching rules to fire Which of several rules with an LHS unifying with a sub-term Non-monotonic reasoning due to: Fact deletion actions in RHS Retraction of substituted sub-term Tricky confluence and termination issues
189
Implementing a Production System in CHR Map each production rule of the form: IF m 1 AND... AND m l THEN a 1 AND... AND a n where: {a 1,..., a n } = {add(n 1 ),..., add(n i )} {delete(o 1 ),..., delete(o j )} {hplOp 1 (p 11,..., p 1n ),..., hplOp k (p k1,..., p km )} onto a CHR simpagation rule of the form: p 1,..., p r \ o 1,..., o j hplOp 1 (p 11,..., p 1n ),..., hplOp k (p k1,..., p km ) | n 1,..., n i. where {p 1,..., p r } = {m 1,..., m l } \ {o 1,..., o j } Valid only when: {o 1,..., o j } \ {m 1,..., m l } = , and C {hplOp 1 (p 11,..., p 1n ),...,hplOp k (p k1,..., p km )}, O {o 1,...,o j }, N {n 1,...,n i } C occurs before O and N in a 1 and... and a n 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
190
CHR V vs. Production Systems CHR V : 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
191
Formal Logic Theory Intelligent Databases Formal Software Specification Automated Reasoning Declarative Programming Logic Programming: a Versatile Metaphor Logic Programming
192
Logic Programming: Key Ideas Logical Theory Software Specification Declarative Programming Automated Reasoning Intelligent Databases Logical Formula Abstract Specification Declarative Program / Data Structure Knowledge Base Database Theorem Prover Specification Verifier Interpreter / Compiler Inference Engine Query Processor Theorem Proof Specification Verification Program ExecutionInferenceQuery Execution Theorem Proving Strategy Verification Algorithm Single, Fixed, Problem-Independent Control Structure Inference Search Algorithm Query Processing Algorithm
193
Logic programming vision logic-based declarative semantics Single language with logic-based declarative semantics that is: programming A Turing-complete, general purpose programming language knowledge representation A versatile, expressive knowledge representation language to support deduction and other reasoning services useful for intelligent agents (abduction, induction, constraint solving, belief revision, belief update, inheritance, planning) Data definition, query and update Data definition, query and update language for databases with built-in inference capabilities "One tool solves all" philosophy: Any computation = resolution + unification + search Programming = declaring logical axioms (Horn clauses) Running the program = query about theorems provable from declared axioms Algorithmic design entirely avoided (single, built-in control structure) Same language for formal specification (modeling) and implementation Same language for model checking and code testing
194
Prolog First and still most widely used logic programming language Falls short to fulfill the vision in many respect: Many imperative constructs with no logical declarative semantics No commercial deductive database available Most other logic programming languages both: Extend Prolog Fulfill better one aspect of the logic programming vision In the 80s, huge Japanese project tried to entirely rebuild all of computing from ground up using logic programming as hardware basis
195
Definite Logic Program +connective = Definite Query +connective = Definite Clause +connective = clauses Pure Prolog: abstract syntax Pure Prolog Atom arg headbody 0..1 * * arg Pure Prolog Term * c 1 1 (...,X k 1,...) :- p 1 1 (...,X i 1,...),..., p m 1 (...,X j 1,...).... c 1 n (...,X k n,...) :- p 1 n (...,X i n,...),..., p m n (...,X j n,...). parent(al,jim) parent(jim,joe) anc(A,D) parent(A,D) anc(A,D) parent(A,P) anc(P,D) Numerical Symbol Function-Free TermFunctional Term Variable functor * Symbol predicate
196
Full Prolog Full Prolog Atom Full Prolog Query +connective = Full Prologl Clause +connective = head body 0..1 Full Prolog Program +connective = * Semantics of full Prolog: Cannot be purely logic-based Must integrate algorithmic ones User-Defined Symbol Built-in Symbol Built-in Logical Symbol Built-in Imperative Symbol Meta-Programming Predicate Symbol Numerical Symbol I/O Predicate Symbol Program Update Predicate Symbol Search Customization Predicate Symbol Full Prolog Term Function-Free Term Functional Term Variable Symbol functor arg predicate * Prolog Literal +connective = naf arg *
197
Pure Prolog program declarative formal semantics Declarative, denotational, intentional: Clark’s transformation to CFOL formula First-order formula semantically equivalent to program Declarative, denotational, extentional, model-theoretic: Least Herbrand Model Intersection of all Herbrand Models Conjunction of all ground formulas that are deductive consequences of program
198
CFOL x Prolog Semantic Assumptions Classical First-Order Predicate Logic: No Unique Name Assumption (UNA): two distinct symbols can potentially be paraphrases to denote the same domain entity Open-World Assumption (OWA): If KB |≠ Q but KB |≠ Q, the truth value of Q is considered unknown Ex: KB: true core(ai) true core(se) core(C) offered(C,T) true offered(mda,fall) Q: true offered(mda,spring) OWA necessary for monotonic, deductively sound reasoning: If KB |= T then A, KB A |= T Logic Programming: UNA: two distinct symbols necessarily denote two distinct domain entities Closed-World Assumption (CWA): If KB |≠ Q but KB |≠ Q, the truth value of Q is considered false Ex: ?- offered(mda,spring) fail CWA is a logically unsound form of negatively abductive reasoning CWA makes reasoning inherently non-monotonic as one can have: KB |= T but KB A |≠ T if the proof KB |= T included steps assuming A false by CWA Motivation: intuitive, representational economy, consistent w/ databases
199
Clark’s completion semantics Transform Pure Prolog Program P into semantically equivalent CFOL formula comp(P) Same answer query set derived from P (abductively) than from F P (deductively) Example P: core(se). core(ai). offered(mda,fall). offered(C,T) :- core(C). ?- offered(mda,spring) no ?- Naive semantics naive(P): C,T true core(ai) true core(se) true offered(mda,fall) core(C) offered(C,T) naive(P) |≠ offered(mda,spring) Clark’s completion semantics comp(P): C,T,C 1,T 1 (core(C 1 ) (C 1 =ai C 1 =se)) (offered(C 1,T 1 ) (C 1 =mda T 1 =fall) ( C,T (C 1 =C T 1 =T core(C)))) (ai=se) (ai=mda) (ai=fall) (se=fall) (se=mda) (mda=fall) F p |= offered(mda,spring)
200
Clark’s transformation Axiomatizes closed-world and unique name assumptions in CFOL Starts from naive Horn formula semantics of pure Prolog program Partitions program in clause sets, each one defining one predicate (i.e., group together clauses with same predicate c(t 1,..., t n ) as conclusion) Replaces each such set by a logical equivalence One side of this equivalence contains c(X 1,..., X n ) where X 1,..., X n are fresh universally quantified variables The other side contains a disjunction of conjunctions, one for each original clause Each conjunction is either of the form: X i = c i ... X j = c i, if the original clause is a ground fact Y i... Y j X i = Y i ... X j = Y j p 1 (...) ... p n (... ) if the original clause is a rule with body p 1 (...) ... p n (... ) containing variables Y i... Y j Joins all resulting equivalences in a conjunction Adds conjunction of the form (c i = c j ) for all possible pairs (c i,c j ) of constant symbols in pure Prolog program
201
SLD Resolution SLD resolution (Linear resolution with Selection function for Definite logic programs): Joint use of goal-driven set of support and input resolution heuristics Always pick last proven theorem clause with next untried axiom clause Always questions last pick even if unrelated to failure that triggered backtracking A form of goal-driven backward chaining of Horn clauses seen as deductive rules Prolog uses special case of SLD resolution where: Axiom clauses tried in top to bottom program writing order Atoms to unify in the two picked clauses: Conclusion of selected axiom clause Next untried premise of last proven theorem clause in left to right program writing order (goal) Unification without occur-check Generates proof tree in top-down, depth-first manner Generates proof tree in top-down, depth-first manner Failure triggers systematic, chronological backtracking: Failure triggers systematic, chronological backtracking Try next alternative for last selection even if clearly unrelated to failure Reprocess from scratch new occurrences of sub-goals previously proven true or false Simple, intuitive, space-efficient, time-inefficient, potentially non- terminating (incomplete)
202
Refutation Resolution Proof Example Refutation proof principle: To prove KB |= F Prove logically equivalent: (KB F) |= True In turn logically equivalent to: (KB F) |= False (american(P) weapon(W) nation(N) hostile(N) sells(P,N,W) criminal(P)) //1 (T owns(nono,m1)) //2a (T missile(m1)) //2b (owns(nono,W) missile(W) sells(west,nono,W)) //3 (T american(west)) //4 (T nation(nono)) //5 (T enemy(nono,america)) //6 (missile(W) weapon(W)) //7 (enemy(N,america) hostile(N)) //8 (T nation(america)) //9 (criminal(west) F) //0 1. Solve 0 w/ 1 unifying P/west: american(west) weapon(W) nation(N) hostile(N) sells(west,N,W) F //10 2. Solve 10 w/ 4: weapon(W) nation(N) hostile(N) sells(west,N,W) F //11 3. Solve 11 w/ 7: missile(W) nation(N) hostile(N) sells(west,N,W) F //12 4. Solve 12 w/ 2b unifying W/m1: nation(N) hostile(N) sells(west,N,m1) F //13 5. Solve 13 w/ 5 unifying N/nono: hostile(nono) sells(west,nono,m1) F //14 6. Solve 14 w/ 8 unifying N/nono: enemy(nono,america) sells(west,nono,m1) F //15 7. Solve 15 w/ 6: sells(west,nono,m1) F //16 8. Solve 16 w/ 3 unifying W/m1: owns(nono,m1) missile(m1) F //17 9. Solve 17 with 2a: missile(m1) F //18 10. Solve 18 with 2b: F
203
SLD resolution example criminal(P) american(P)weapon(W)nation(N)hostile(N)sells(P,N,W) criminal(west)? missile(W)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
204
SLD resolution example criminal(west) american(P)weapon(W)nation(N)hostile(N)sells(P,N,W) criminal(west)? missile(W)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
205
SLD resolution example criminal(west) american(west)weapon(W)nation(N)hostile(N)sells(west,N,W) criminal(west)? missile(W)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
206
SLD resolution example criminal(west) american(west)weapon(W)nation(N)hostile(N)sells(west,N,W) criminal(west)? missile(W)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
207
SLD resolution example criminal(west) american(west)weapon(W)nation(N)hostile(N)sells(west,N,W) criminal(west)? missile(W)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
208
SLD resolution example criminal(west) american(west)weapon(W)nation(N)hostile(N)sells(west,N,W) criminal(west)? missile(W)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
209
SLD resolution example criminal(west) american(west)weapon(W)nation(N)hostile(N)sells(west,N,W) criminal(west)? missile(W)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
210
SLD resolution example criminal(west) american(west)weapon(W)nation(N)hostile(N)sells(west,N,W) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
211
SLD resolution example criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,W) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
212
SLD resolution example criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
213
SLD resolution example criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
214
SLD resolution example criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
215
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
216
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
217
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
218
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
219
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
220
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
221
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)
222
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)
223
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)
224
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)
225
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)
226
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)
227
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)
228
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)
229
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)
230
SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? yes missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)
231
SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)
232
SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)
233
SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(america)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)
234
SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(america)hostile(america)sells(west,america,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)
235
SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(america)hostile(america)sells(west,america,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)
236
SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(america)hostile(america)sells(west,america,m1) criminal(west)? missile(m1) enemy(america,america) owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)
237
SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(america)hostile(america)sells(west,america,m1) criminal(west)? missile(m1) enemy(america,america) owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W) fail
238
SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(america)hostile(america)sells(west,america,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W) fail backtrack
239
SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W) backtrack
240
SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)
241
SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(nono)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)
242
SLD resolution example with bactracking criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)
243
Limitations of Pure Prolog and ISO Prolog knowledge representation For knowledge representation: search customization: No declarative constructs Limited support procedimental constructs (cuts) no support for uncertain reasoning forces unintuitive rule-based encoding of inherently taxonomic and procedural knowledge knowledge base updates non- backtrackable and without logical semantics ab :- assert(a), b. if b fails, a remains as true programming For programming: no fine-grained encapsulation no code factoring (inheritance) poor data structures (function symbols as only construct) mismatch with dominant object- oriented paradigm not integrated to comprehensive software engineering methodology IDE not friendly enough scarce middleware very scarce reusable libraries or components (ex, web, graphics) mono-thread declarative logic For declarative logic programming: imperative numerical computation, I/O and meta-programming without logical semantics
244
Limitation of SLD resolution engines Unsound: unification without occur-check Incomplete: left-recursion Correct ancestor Prolog program: anc(A,D) :- parent(A,D). anc(A,D) :- parent(P,D), anc(A,P). Logically equivalent program (since conjunction is a commutative connective) that infinitely loops: anc(A,D) :- anc(A,P), parent(P,D). anc(A,D) :- parent(A,D). Inefficient: repeated proofs of same sub-goals irrelevant chronological backtracking
245
Prolog’s imperative arithmetics fac(0,1) :- !. fac(I,O) :- I1 is I - 1, fac(I1,O1), O is I * O1. ?- fac(1,X). X = 1 ?- fac(3,X). X = 6 ?- I1 is I -1 error ?- I1 = I -1 I1 = I -1 ?- I = 2, I1 = I -1 I1 = 2 -1 ?- I = 2, I1 is I -1 I1 = 1 Arithmetic functions and predicates generate exception if queried with non-ground terms as arguments is: requires a uninstantiated variable on the left and an arithmetic expression on the right Relational programming property lost Syntax more like assembly than functional ! variable assignment is: Prolog’s sole explicit variable assignment predicate (only for arithmetics) query =: is a bi-directional, general- purpose unification query predicate
246
Prolog’s redundant sub-goal proofs
247
Extensions of pure Prolog Pure Prolog ISO Prolog High-Order LP Functional LP Constraint LP Abductive LP Transaction LP Frame (OO) LP Preference LP Tabled LP Inductive LP XSB Aleph Flora
248
Constraint Logic Programming (CLP) CSP libraries’ strengths: Specification level, declarative programming for predefined sets of constraints over given domains Efficient Extensive libraries cover both finite domain combinatorial problems and infinite numerical domain optimization problems CSP libraries’ weaknesses: Constraint set extension can only be done externally through API using general-purpose programming language Same problem for mixed constraint problems (ex, mixing symbolic finite domain with real variables) Prolog’s s trengths: Allows specification level, declarative programming of arbitrary general purpose problems A constraint is just a predicate New constraints easily declaratively specified through user predicate definitions Mixed-domain constraints straightforwardly defined as predicate with arguments from different domains Prolog’s weakness: Numerical programming is imperative, not declarative Very inefficient at solving finite domain combinatorial problem
249
CLP Integrate Prolog with constraint satisfaction and solving libraries in a single inference engine Get the best of both worlds: Declarative user definition of arbitrary constraints Declarative definition of arbitrarily mixed constraints Declarative numerical and symbolic reasoning, seamlessly integrated Efficient combinatorial and optimization problem solving Single language to program constraint satisfaction or solving problems and the rest of the application CLP Engine CLP Application Rule Base Prolog Engine Procedural Solver for Domain D 1 Procedural Solver for Domain D k Solver Programming Language L... Prolog/L Bridge
250
CLP with CHR CLP Engine CLP Application Rule Base Prolog Engine CHR Host Programming Language L CHR Engine CHR Base for Domain D 1 Solver CHR Base for Domain D k Solver... Prolog/L Bridge
251
Implementing a Prolog Program in CHR Map Prolog fact base of the form {f 1.... f n.} onto a fact introduction CHR propagation rule: facts f 1,..., f n. Map each set of Prolog deductive rules of the form {p(t 1 1,...,t n 1 ) :- b 1.... p(t 1 k,...,t n k ) :- b k.} that provide the intentional part of the definition for predicate p onto a CHR simplification rule of the form p(X 1,...,X n ) (X 1 =t 1 1,..., X n =t n 1, b 1 ) ;...; (X 1 =t 1 k,..., X n =t n k, b k ). where {X 1,...,X n } is a set of fresh variables not occurring in {t 1 1,...,t n 1,b 1,... p(t 1 k,...,t n k ), b k } Map each set of Prolog facts of the form {p(t' 1 1,...,t' n 1 ).,..., p(t' 1 k,...,t' n k ).} that provide the extensional part of the definition for predicate p onto a CHR world closure propagation rule of the form p(X 1,...,X n ) (X 1 =t' 1 1,..., X n =t' n 1 ) ;...; (X 1 =t' 1 k,..., X n =t' n k ). Valid only for pure Prolog programs
252
Example Prolog Program Implemented in CHR Prolog Program 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). parent(P,C) :- mother(P,C). sibling(C1,C2) :- not C1 = C2, parent(P,C1), parent(P,C2). CHR Translation facts 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).
253
CHR V vs. Prolog CFOL semantics of CHR V guardless, single head simplification rule, equivalent to CFOL semantics of pure Prolog clause set sharing same conclusion (Clark's completion) Simplification rule: sh true | b 1 1,..., b k p ;... ; b 1 1,..., b l q. w here: {X 1,..., X n } = vars(sh i ), and {Y 1,..., Y m } = vars(b 1 ... b k ) \ {X 1,..., X n } X 1,..., X n true (sh Y 1,..., Y m ((b 1 1 ... b k p ) ... (b 1 1 ... b k q )) Equivalent Prolog clauses: { sh :- b 1 1,..., b k p.,..., sh :- b 1 1,..., b l q.} Thus, using Clark's completion, any Prolog program can be reformulated into a semantically equivalent CHR V program CHR V extends Prolog with: Conjunctions in the heads Guards Non-ground numerical constraints heads, guards and bodies Propagation rules
254
CLP with CHR CLP Application Rule Base CHR Host Programming Language L CHR Engine CHR Base for Domain D 1 Solver CHR Base for Domain D k Solver...
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.