OntologiesReasoningComponentsAgentsSimulations
Rule-Based Reasoning withRule-Based Reasoning withConstraint Handling Rules Constraint Handling Rules
Jacques Robin
OutlineOutline
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)
Abstract syntax Declarative logical semantics High-level operational semantics Example rule bases Extension: CHRV
Practical applications
Rules as a Rules as a Knowledge Representation Knowledge Representation
FormalismFormalism 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.
Rule-Based AgentRule-Based Agent
Enviro
nm
ent
Sensors
Effectors
Rule Base:Rule Base:• Persistant intentional knowledge• Dependent on problem class, not instance• Declarative code
Ask
Fact Base:Fact Base:• Volatile knowledge• Dependent on problem instance• Data
Rule Engine:Rule Engine:• Problem class independent• Only dependent on rule language• Declarative code interpreter or compiler
Tell Retract
Ask
Rule Languages: Common Rule Languages: Common CharacteristicsCharacteristics
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.
Rule Languages: General AdvantagesRule 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
Rule Languages: General LimitationsRule 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
Business Rules Business Rules
Example of modern commercial application of rule-based knowledge representation
GUI Layer
Data Layer
Business LogicLayer
Classic 3-TierInformation System
Architecture
Imperative OOProgram
Imperative OOLanguageSQL API
Imperative OOLanguageGUI API
ClassicImperative OOImplementation
Rule-Based Implementation
Imperative OOHost Language
EmbeddedProduction
RuleEngine
Imperative OOLanguageSQL API
Imperative OOLanguageGUI API
ProductionRule Base
Generic ComponentReusable in Any
Application Domain
Easier to reflect frequent policy changes
than imperative code
Semi-Natural Language SyntaxSemi-Natural Language Syntaxfor Business Rulesfor 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 nono to W
IF W is a missile THEN W is a weapon
IF N is an enemy of America THEN N is hostile
OO RuleLanguages
NeOPS
JEOPS
CLIPS
JESS
XML
Web MarkupLanguages
CLP(X)
Rule-BasedConstraintLanguages
Roadmap of Rule-Based LanguagesRoadmap of Rule-Based Languages
XSLT
OPS5
ProductionRules
ISO Prolog
Logic Programming
TransactionLogic
HiLogConcurrentProlog
CourteousRules
CCLP(X)
FrameLogic
Flora
OCLMOF
UML
CHORD
RuleML
ELAN
Maude
Otter
EProver
RewriteRules
SWSL
CHRV
CHR
QVT
Java
Smalltalk
C++
Pure OOLanguages
Constraint Handling Rules (CHR):Constraint Handling Rules (CHR):Key IdeasKey Ideas
Originally a logical rule-based language to declaratively program specialized constraint solvers on top of a host programming language (Prolog, Haskell, Java)
Since evolved in a general purpose first-order knowledge representation language and Turing-complete programming language
Fact base contains both extensional and intentional knowledge in the form of a conjunction of constraints
Rule base integrates and generalizes: Event-Condition-Action rules (themselves generalizing production
rules) for constraint propagation Conditional rewrite rules for constraint simplification
Relies on forward chaining and rule Left-Hand-Side (LHS) matching
Extended variant CHRV adds backtracking search and thus generalizes Prolog rules as well
CHR by Example:CHR by Example:Rule Base Defining Rule Base Defining in Terms of = in Terms of =
reflexivity@ X Y <=> X = Y | true. asymmetry@ X Y, Y X <=> X=Y. % Constraint simplification (or rewriting) rules% Syntax: <ruleName>@ <simplifiedHead> <=> <guard> | <body>% Logically: Xvars(head guard) % <guard> (<head> Yvars(body - (head guard)) <body>)% Operationally: substitute in constraint store (knowledge base) constraints that
match% the rule simplified head by those in rule body with their variables instantiated from% the match
transitivity@ X Y , Y Z ==> X Z.% Constraint propagation (or production) rule (in this case, unguarded)% Syntax: <ruleName>@ <propagatedHead> ==> guard | <body>% Logically: Xvars(head guard) % <guard> (<head> Yvars(body - (head guard)) <body>)% Operationally: if constraint store (knowledge base) contains constraints that match% the rule propagated head then add those in rule body to the store with their
variables% instantiated from the match
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
idempotence@ X Y \ X Y <=> true.% Constraint simpagation rule (in this case, unguarded)% Syntax: <ruleName>@ <propagatedHead> \ <simplifiedHead> <=> guard | <body>% Logically: Xvars((head guard) <propagatedhead> <simplifiedHead>% Yvars(body - (head guard)) <body> <propagatedhead>% Operationally: if constraint store (knowledge base) contains constraints that match% the rule simplified head and the rule propagated head, then substitute in the store% those matching the simplified head by the rule body with their variables instantiated% from the match
query1: A B, C A, B C, A = 2 % Initial constraint store: a constraint conjunctionanswer1: A = 2, B = 2, C = 2, % Final constraint store = initial constraint store% simplified through repeated rule application until no rule neither simplifies nor% propagates any new constraint
query2: A B, B C, C Aanswer2: A = B, B = C
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
A B, C A, B C A = 2
Matching Equations GuardBuilt-In Constraint StoreRule-Defined Constraint Store
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Condition for firing a rule:1. Rule head matches active constraint in RDCS
Generates set of equations between variables and constants from the head and the constraint (inserted to MEG)
2. Every other head from the rule matches against some other (partner) constraint in the RDCS Generates another set of equations (inserted to MEG)
3. Rule r fires iff:X1,...,Xi vars(MEGS BICS - r) BICS Y1,...,Yj vars(r) MEG
Rule RDCS BICS MEG
r? A B, C A, B C A = 2 X' = A, Y' = B, X' = Y'
Active Constraint
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
r? A B, C A, B C A = 2 X' = A = Y' = B
Normalizing SimplificationActive Constraint
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true. A,B A = 2 | X',Y' X' = A = Y' = B, eg, B = 3 2 = A
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
r? A B, C A, B C A = 2 X' = A = Y' = B
Active Constraint
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule firing order depends on 3 heuristics, with the following priority:1. Rule-defined constraint ordering to become active2. Rule ordering to try matching and entailment check with active constraint3. Rule-defined constraint ordering to become partner constraints
Engine first tries matching and entailment check for all rules with current active constraint, before trying any rule with the next constraint in the RDCS
Rule RDCS BICS MEG
a? A B, C A, B C A = 2 X' = A, Y' = B, Y' = C, X' = AActive
Constraint
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y A,B,C A = 2 | X',Y' X' = A, Y' = B = C, eg, B = 3 4 = C
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
a? A B, C A, B C A = 2 X' = A, Y' = B = CActive
Constraint
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head
Rule RDCS BICS MEG
a? A B, C A, B C A = 2 X' = C, Y' = A, Y' = A, X' = BActive
Constraint
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y A,B,C A = 2 | X',Y' X' = B = C, Y' = A eg, B = 3 4 = C
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head
Rule RDCS BICS MEG
a? A B, C A, B C A = 2 X' = B = C, Y' = AActive
Constraint
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t? A B, C A, B C A = 2 X' = A, Y' = B, Y' = C, Z' = AActive
Constraint
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z. A,B,C A = 2 | X',Y', Z' X' = Z' = A, Y' = B = C, eg, B = 3 4 = C
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t? A B, C A, B C A = 2 X' = Z' = A, Y' = B = CActive
Constraint
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head
Rule RDCS BICS MEG
t? A B, C A, B C A = 2 X' = C, Y' = A, Y' = A, Z' = BActive
Constraint
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z. A,B,C A = 2 | X'=C,Y'=2,Z'=B, X' = C, Y' = A, Z' = B
i@ X Y \ X Y <=> true.
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head
Rule RDCS BICS MEG
t? A B, C A, B C A = 2 X' = C, Y' = A, Z' = BActive
Constraint
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
A B, C A, B C, C B
A = 2
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
r? A B, C A, B C, C B
A = 2 X' = C, Y' = B, X' = Y'
ActiveConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true. B,C A = 2 | X',Y' X' = Y' = B = C, eg, B = 3 2 = C
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
r? A B, C A, B C, C B
A = 2 X' = Y' = B = C
ActiveConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
a? A B, C A, B C, C B
A = 2 X' = C, Y' = B, Y' = A, X' = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y A,B,C A = 2 | X',Y' X' = Y' = A = B = C, eg, B = 3 2 = C
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
a? A B, C A, B C, C B
A = 2 X' = Y' = A = B = C
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
a? A B, C A, B C, C B
A = 2 X' = A, Y' = B, Y' = C, X' = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y A,B,C A = 2 | X',Y' X' = Y' = A = B = C, eg, B = 3 2 = C
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
a? A B, C A, B C, C B
A = 2 X' = Y' = A = B = C
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
t? A B, C A, B C, C B
A = 2 X' = C, Y' = B, Y' = A, Z' = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z. A,B,C A = 2 | X',Y',Z' X' = C, Y' = A = B = C eg, B = 3 2 = C
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
t? A B, C A, B C, C B
A = 2 X' = C, Y' = A = B = C
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
t? A B, C A, B C, C B
A = 2 X' = A, Y' = B, Y' = C, Z' = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z. A,B,C A = 2 | X',Y',Z' X' = A, Y' = B = C, Z' = B eg, B = 3 2 = C
i@ X Y \ X Y <=> true.
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
t? A B, C A, B C, C B
A = 2 X' = A, Y' = B = C, Z' = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = C, Y' = B, X' = A, Y' = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true. A,B,C A = 2 | X',Y' X' = A = C, Y' = B, eg, C = 3 2 = A
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = A = C, Y' = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = A, Y' = B, X' = C, Y' = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true. A,B,C A = 2 | X',Y' X' = A = C, Y' = B, eg, C = 3 2 = A
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = A = C, Y' = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = C, Y' = B, Y' = C, X' = A
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y A,B,C A = 2 | X',Y' X' = Y' = A = B = C eg, C = 3 2 = A
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = Y' = A = B = C
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = C, Y' = A, X' = C, Y' = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y A,B,C A = 2 | X',Y' X' = C, Y' = A = B eg, B = 3 2 = A
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost head
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = C, Y' = A = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = C, Y' = B, Y' = C, Z' = A
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z. A,B,C A = 2 | X',Y',Z' X' = Y' = B = C, Z' = A eg, B = 3 2 = C
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = Y' = B = C, Z' = A
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = C, Y' = A, Y' = C, Z' = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z. A,B,C A = 2 | X',Y',Z' X' = Y' = A = C, Z' = B eg, B = 3 2 = A
i@ X Y \ X Y <=> true.
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = Y' = A = C, Z' = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = C, Y' = B, X' = C, Y' = A
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true. A,B,C A = 2 | X',Y' X' = C, Y' = A = B eg, B = 3 2 = A
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = C, Y' = A = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = C, Y' = A, X ' = C, Y' = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true. A,B,C A = 2 | X',Y' X' = C, Y' = A = B eg, B = 3 2 = A
Alternate matching combination: Active constraint matched against rightmost head Partner constraint matched against leftmost
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = C, Y' = A = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = C, Y' = B, Y' = B, Z' = C
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y A,B,C A = 2 |= X'=C,Y'=2,Z'=C X' = Z' = C, Y' = B
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i? A B, C A, B C, C B
A = 2 X' = Z' = C, Y' = B
ActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y A,B,C A = 2 |= X'=C,Y'=2,Z'=C X' = Z' = C, Y' = B
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i! A B, C A, B C, C B
A = 2 X' = Z' = C, Y' = B
A B, C A A = 2, B = C
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i! A B, C A, B C, C B
A = 2 X' = Z' = C, Y' = B
r? A B, C A A = 2, B = C X' = A, Y' = B, X' = Y'ActiveConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true. A,B,C A = 2 B = C | X',Y' X' = Y' = A = B eg, B = 3 2 = A
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i! A B, C A, B C, C B
A = 2 X' = Z' = C, Y' = B
r? A B, C A A = 2, B = C X' = Y' = A = BActiveConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i! A B, C A, B C, C B
A = 2 X' = Z' = C, Y' = B
a? A B, C A A = 2, B = C X' = A, Y' = B, Y' = C, X' = AActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y A,B,C A = 2 B = C |= X'=2,Y'=B X' = A, Y' = B = C
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i! A B, C A, B C, C B
A = 2 X' = Z' = C, Y' = B
a! A B, C A A = 2, B = C X' = A, Y' = B = CActiveConstrain
t
PartnerConstrain
t
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i! A B, C A, B C, C B
A = 2 X' = Z' = C, Y' = B
a! A B, C A A = 2, B = C X' = A, Y' = B = C
A = 2, B = C, A = BConstraints Simplified
CHR by Example:CHR by Example: Rule Base Defining Rule Base Defining in Terms of = in Terms of =
r@ X Y <=> X = Y | true.
a@ X Y, Y X <=> X=Y
t@ X Y, Y Z ==> X Z.
i@ X Y \ X Y <=> true.
Rule RDCS BICS MEG
t! A B, C A, B C A = 2 X' = C, Y' = A, Z' = B
i! A B, C A, B C, C B
A = 2 X' = Z' = C, Y' = B
a! A B, C A A = 2, B = C X' = A, Y' = B = C
A = B = C = 2Final Normalized Solved Form
Body:Rule-Defined and
Built-In Constraints
Guard:Built-In Constraints (from host language)
Head: Rule-Defined Constraints
• Simplification rule: sh1(X,a), sh2(b,Y) <=> g1(X,Y), g2(a,b,c) | b1(X,c), b2(Y,c).• Propagation rule: ph1(X,Y), ph2(d) ==> g3(X), g4(d,Y) | b3(X,d), b4(X,Y).• Simpagation rule: ph3(X), ph4(Y,Z) \ sh3(X,U), sh4(Y,V) <=> g5(X,Z), g6(Z,Y) | b5(X), b6(Y,Z).
• Simplification rules are conditional rewrite rules (condition is the guard)• Propagation rules are event-condition-action rules (event is the guard)• Simpagation rules heads are hybrid syntactic sugar, each can be replaced by a semantically equivalent simplification rule, ex, p, r \ s, t <=> g, h | b, c. is equivalent to p, r, s, t <=> g, h | p, r, b, c.
2..*And Formula
CHR: Syntax OverviewCHR: Syntax Overview
CHR Base
* CHR Rule
guard
simplified head
propagated head
body
LogicalFormula
0..1
0..1
0..1
Atomic Formula
SimpagationRule
SimplificationRule
PropagationRule
{non-overlapping, complete}
Built-InConstraint
Rule DefinedConstraint
CHR: Complete Abstract SyntaxCHR: Complete Abstract Syntax
SimpagationRule
SimplificationRule
PropagationRule
CHR Base
* CHR Rule
guard
simplified head
propagated head
body
LogicalFormula
0..1
0..1
0..12..*
{non-overlapping, complete}
Non-GroundTerm
GroundTerm
{non-overlapping, complete}
And Formula
Atomic Formulaarg
*
Term
ConstraintSymbol
FunctionalTerm
Non-FunctionalTerm
{non-overlapping, complete}
arg
*
FunctionSymbol
ConstraintDomain*
*
*
Built-InConstraint
Rule DefinedConstraint
true false
VariableConstantSymbol
Rule DefinedConstraint
Symbol
Built-InConstraint
Symbol
CHR: Derivation Data StructuresCHR: Derivation Data Structures
SimpagationRule
SimplificationRule
PropagationRule
CHR Base
* CHR Rule
guard
simplified head
propagated head
body
CHRLogicalFormula
Atomic Formula
Built-InConstraint
Rule DefinedConstraint
0..1
0..1
0..12..*
Term
And Formula
arg
*
*
**
{ordered}
Rule DefinedConstraint Store
Built-InConstraint Store
UsedRule
DerivationState
*
CHRDerivation
CHR: Declarative Semantics inCHR: Declarative Semantics inClassical First-Order Logic (CFOL)Classical First-Order Logic (CFOL)
Simplification rule: sh1, ... , shi <=> g1, ..., gj | b1, ..., bk.
where: {X1, ..., Xn} = vars(sh1 ... shi g1 ... gj) and {Y1, ... , Ym} = vars(b1 ... bk) \ {X1, ..., Xn}
X1, ..., Xn g1 ... gj (sh1 ... shi Y1, ... , Ym b1 ... bk)
Propagation rule: ph1, ... , phi ==> g1, ..., gj | b1, ..., bk.
where: {X1, ..., Xn} = vars(ph1 ... phi g1 ... gj) and {Y1, ... , Ym} = vars(b1 ... bk) \ {X1, ..., Xn}
X1, ..., Xn g1 ... gj (ph1 ... phi Y1, ... , Ym b1 ... bk)
CHR: Constraint and RuleCHR: Constraint and RulePriority HeuristicsPriority Heuristics
No standard, implementation dependent Active constraint priority heuristics:
Preferring constraints most recently inserted in store Left-to-right writing order in query
Rule priority heuristics: Preferring simplification rules over simpagation rules and
simpagation over propagation rules Preferring simplification and simpagation rules with highest
number of heads Preferring propagation rules with lowest number of heads Preferring rules whose head constraint have never be matched yet Top to bottom writing order
Partner constraint priority heuristics: Preferring constraints most recently inserted in store Left-to-right writing order in query
CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =
r1@ min(X,Y,Z) <=> X Y | Z = X
r2@ min(X,Y,Z) <=> Y X | Z = Y.
r3@ min(X,Y,Z) <=> Z < X | Y = Z.
r4@ min(X,Y,Z) <=> Z < Y | X = Z.
r5@ min(X,Y,Z) ==> Z X, Z Y.
Rule RDCS BICS MEG
min(1,2,M)
CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =
r1@ min(X,Y,Z) <=> X Y | Z = X M true |= X'=1,Y'=2,Z'=M X' = 1, Y' = 2, Z' = M, 1 2
r2@ min(X,Y,Z) <=> Y X | Z = Y.
r3@ min(X,Y,Z) <=> Z < X | Y = Z.
r4@ min(X,Y,Z) <=> Z < Y | Y = Z.
r5@ min(X,Y,Z) ==> Z X, Z Y.
Rule RDCS BICS MEG
r? min(1,2,M) true X' = 1, Y' = 2, Z' = M, X' Y'
CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =
r1@ min(X,Y,Z) <=> X Y | Z = X M true |= X'=1,Y'=2,Z'=M X' = 1, Y' = 2, Z' = M, X' = 1 2 = Y'
r2@ min(X,Y,Z) <=> Y X | Z = Y.
r3@ min(X,Y,Z) <=> Z < X | Y = Z.
r4@ min(X,Y,Z) <=> Z < Y | Y = Z.
r5@ min(X,Y,Z) ==> Z X, Z Y.
Rule RDCS BICS MEG
r! min(1,2,M) true X' = 1, Y' = 2, Z' = M, X' Y'
true M = Z' = X' = 1
CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =
r1@ min(X,Y,Z) <=> X Y | Z = X M true |= X'=1,Y'=2,Z'=M X' = 1, Y' = 2, Z' = M, X' = 1 2 = Y'
r2@ min(X,Y,Z) <=> Y X | Z = Y.
r3@ min(X,Y,Z) <=> Z < X | Y = Z.
r4@ min(X,Y,Z) <=> Z < Y | Y = Z.
r5@ min(X,Y,Z) ==> Z X, Z Y.
Rule RDCS BICS MEG
r! min(1,2,M) true X' = 1, Y' = 2, Z' = M, X' Y'
true M = 1
Projection(CS,vars(Query))
CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =
r1@ min(X,Y,Z) <=> X Y | Z = X
r2@ min(X,Y,Z) <=> Y X | Z = Y.
r3@ min(X,Y,Z) <=> Z < X | Y = Z.
r4@ min(X,Y,Z) <=> Z < Y | Y = Z.
r5@ min(X,Y,Z) ==> Z X, Z Y.
Rule RDCS BICS MEG
min(A,B,M) A B
CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =
r1@ min(X,Y,Z) <=> X Y | Z = X A,B,M A B |= X'=A,Y'=B,Z'=M X' = A, Y' = B, Z' = M, X' = A B = Y'
r2@ min(X,Y,Z) <=> Y X | Z = Y.
r3@ min(X,Y,Z) <=> Z < X | Y = Z.
r4@ min(X,Y,Z) <=> Z < Y | Y = Z.
r5@ min(X,Y,Z) ==> Z X, Z Y.
Rule RDCS BICS MEG
r1? min(A,B,M) A B X' = A, Y' = B, Z' = M, X' Y'
CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =
r1@ min(X,Y,Z) <=> X Y | Z = X A,B,M A B |= X'=A,Y'=B,Z'=M X' = A, Y' = B, Z' = M, X' = A B = Y'
r2@ min(X,Y,Z) <=> Y X | Z = Y.
r3@ min(X,Y,Z) <=> Z < X | Y = Z.
r4@ min(X,Y,Z) <=> Z < Y | Y = Z.
r5@ min(X,Y,Z) ==> Z X, Z Y.
Rule RDCS BICS MEG
r1! min(A,B,M) A B X' = A, Y' = B, Z' = M, X' Y'
true M = Z' = X' = A, A B
CHR Base Example: CHR Base Example: Defining min in Terms of Defining min in Terms of , , and = and =
r1@ min(X,Y,Z) <=> X Y | Z = X A,B,M A B |= X'=A,Y'=B,Z'=M X' = A, Y' = B, Z' = M, X' = A B = Y'
r2@ min(X,Y,Z) <=> Y X | Z = Y.
r3@ min(X,Y,Z) <=> Z < X | Y = Z.
r4@ min(X,Y,Z) <=> Z < Y | Y = Z.
r5@ min(X,Y,Z) ==> Z X, Z Y.
Rule RDCS BICS MEG
r1! min(A,B,M) A B X' = A, Y' = B, Z' = M, X' Y'
true M = A, A B
Projection(CS,vars(Query))
CHR Component BasesCHR Component Bases
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
X Y X = Y | trueX Y Y X X = YX Y Y Z X = ZX Y X Y X Y
X X falseX Y Y Z X Y Y Z | X Z X Y Y Z X Y Y Z | X Z X Y Y Z X Y Y Z | X Z
<<Component>>strictlyLessCHRDBase
derive
<<Component>>lessOrEqualCHRDBase
=
derive
<<Component>>HostPlatform
<<Component>>CHRDEngine
derive
=
<<Interface>>SyntacticEquality
= (X:Real, Y:Real): Boolean (X:Real, Y:Real): Boolean
<<Interface>>strictlyLess
(X:Real, Y:Real): Boolean
min(X,Y,Z) X Y | Z = Xmin(X,Y,Z) Z Y | Z = Xmin(X,Y,Z) Y Z | Z = Ymin(X,Y,Z) Z X | Z = Ymin(X,Y,Z) Z X Z Y
<<Component>>MinCHRDBase
min
derive
<<Interface>>Min
min(X:Real, Y:Real, out Z:Real)
<<Interface>>CHRDEngine
derive()
<<Interface>>lessOrEqual
(X:Real, Y:Real): Boolean
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C.
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.
Notation: ?P Constraint Domain Variable and CHR Variable C Constraint Domain Constant and CHR Variable == Constraint Domain Equality Predicate = CHR Equality Predicate 0,1,2, ... CHR and Host Programming Language Constants := Host Programming Language Variable Assignment Predicate,
always returns true, performs arithmetic computation as side-effect +, -, / Host Programming Language Arithmetic Function number Host Programming Language Type Checking Function
Rule RDCS BICS MEG
?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C ?Y, true |= ?P=?Y,C=2 ?P = ?Y, C = 2
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.
Rule RDCS BICS MEG
r1? ?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true ?P = ?Y, C = 2
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.
Rule RDCS BICS MEG
r1! ?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true ?P = ?Y, C = 2
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
?Y = 2
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.
Rule RDCS BICS MEG
r1! ?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true ?P = ?Y, C = 2
r1? ?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
?Y = 2
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.
?X,?Y,?U,?V ?Y = 2 |= <?P,?Q,C,R> = <?X,2,3,1> ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.
Rule RDCS BICS MEG
r1! ?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true ?P = ?Y, C = 2
r2? ?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.
?X,?Y,?U,?V ?Y = 2 |= <?P,?Q,C,R> = <?X,2,3,1> ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.
Rule RDCS BICS MEG
r1! ?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true ?P = ?Y, C = 2
r2! ?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1
?Y = 2, ?X = 1
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.
Rule RDCS BICS MEG
r1! ?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true ?P = ?Y, C = 2
r2! ?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1
r1? ?U - ?V == 2,
?U + ?V == 0
?Y = 2, ?X = 1
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.
Rule RDCS BICS MEG
r1! ?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true ?P = ?Y, C = 2
r2! ?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1
r2? ?U - ?V == 2,
?U + ?V == 0
?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 2, ?Q.number
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.
Rule RDCS BICS MEG
r1! ?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true ?P = ?Y, C = 2
r2! ?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1
r3? ?U - ?V == 2,
?U + ?V == 0
?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 2, ?P.number
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.
Rule RDCS BICS MEG
r1! ?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true ?P = ?Y, C = 2
r2! ?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1
r4? ?U - ?V == 2,
?U + ?V == 0
?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 0, ?P = ?U, ?Q = ?V, D = 2, R = 1
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R
?X,?Y,?U,?V ?X = 1, ?Y = 2 |= <?P,?Q,C,D,R> = <?U,?V,0,2,1> ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1
Rule RDCS BICS MEG
r1! ?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true ?P = ?Y, C = 2
r2! ?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1
r4? ?U - ?V == 2,
?U + ?V == 0
?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.
?X,?Y,?U,?V ?X = 1, ?Y = 2 |= <?P,?Q,C,D,R> = <?U,?V,0,2,1> ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1
Rule RDCS BICS MEG
r1! ?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true ?P = ?Y, C = 2
r2! ?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1
r4! ?U - ?V == 2,
?U + ?V == 0
?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1
?U + ?V == 0 ?Y = 2, ?X = 1, ?U = 1
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.
Rule RDCS BICS MEG
r1! ?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true ?P = ?Y, C = 2
r2! ?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1
r4! ?U - ?V == 2,
?U + ?V == 0
?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1
r1? ?U + ?V == 0 ?Y = 2, ?X = 1, ?U = 1
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.
Rule RDCS BICS MEG
r1! ?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true ?P = ?Y, C = 2
r2! ?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1
r4! ?U - ?V == 2,
?U + ?V == 0
?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1
r2? ?U + ?V == 0 ?Y = 2, ?X = 1, ?U = 1 ?P = ?U, ?Q = ?V, C = 0, ?Q.number
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
?X,?Y,?U,?V ?X = 1, ?Y = 2, ?U = 1 |= <?P,?Q,C,R> = <1,?V,0,-1> ?P = ?U, ?Q = ?V, C = 0, ?P.number, R = -1
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.
Rule RDCS BICS MEG
r1! ?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true ?P = ?Y, C = 2
r2! ?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1
r4! ?U - ?V == 2,
?U + ?V == 0
?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1
r3? ?U + ?V == 0 ?Y = 2, ?X = 1, ?U = 1 ?P = ?U, ?Q = ?V, C = 0, ?P.number, R = -1
CHR Base Example: Restricted FormCHR Base Example: Restricted Formof Real Linear Equations Solverof Real Linear Equations Solver
r1@ ?P == C <=> P = C
r2@ ?P + ?Q == C <=> ?Q.number, R := C - ?Q | ?P = R.
r3@ ?P + ?Q == C <=> ?P.number, R := C - ?P | ?Q = R.
?X,?Y,?U,?V ?X = 1, ?Y = 2, ?U = 1 |= <?P,?Q,C,R> = <1,?V,0,-1> ?P = ?U, ?Q = ?V, C = 0, ?P.number, R = -1
r4@ ?P + ?Q == C \ ?P - ?Q == D <=> R := (C + D) / 2 | ?P = R.
Rule RDCS BICS MEG
r1! ?Y == 2,
?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
true ?P = ?Y, C = 2
r2! ?X + ?Y == 3,
?U - ?V == 2,
?U + ?V == 0
?Y = 2 ?P = ?X, ?Q = ?Y, C = 3, ?Q.number, R = 1
r4! ?U - ?V == 2,
?U + ?V == 0
?Y = 2, ?X = 1 ?P = ?U, ?Q = ?V, C = 0, D = 2, R = 1
r3! ?U + ?V == 2 ?Y = 2, ?X = 1, ?U = 1 ?P = ?U, ?Q = ?V, C = 0, ?P.number, R = -1
true ?Y = 2, ?X = 1, ?U = 1, ?V = -1
CHRCHR : Abstract Syntax : Abstract Syntax
OrAnd Formula
connective: enum{or,and}
SimpagationRule
SimplificationRule
PropagationRule
CHR Base
* CHR Rule
guard
simplified head
propagated head
body
And Formula
Atomic Formula
Constraint
Built-InConstraint
Rule DefinedConstraint
2..*
true false
0..1
0..1
0..1
Built-InConstraint Store
Rule DefinedConstraint Store
*
FiredRule
DerivationState
*
CHRDerivation
*
{ordered} * *
TriedAlternative
Body
*
*
CHRCHR: Declarative Semantics in: Declarative Semantics inClassical First-Order Logic (CFOL)Classical First-Order Logic (CFOL)
Simplification rule: sh1, ... , shi <=> g1, ..., gj | b11, ..., bk
p ; ... ; b11, ..., bl
q.
where: {X1, ..., Xn} = vars(sh1 ... shi g1 ... gj) and {Y1, ... , Ym} = vars(b1 ... bk) \ {X1, ..., Xn}
X1, ..., Xn g1 ... gj (sh1 ... shi Y1, ... , Ym ((b1
1 ... bk
p) ... (b11 ... bk
q))
Propagation rule: ph1, ... , phi ==> g1, ..., gj | b11, ..., bk
p ; ... ; b11, ..., bl
q.
where: {X1, ..., Xn} = vars(ph1 ... phi g1 ... gj) and {Y1, ... , Ym} = vars(b1 ... bk) \ {X1, ..., Xn}
X1, ..., Xn g1 ... gj (ph1 ... phi Y1, ... , Ym ((b1
1 ... bk
p) ... (b11 ... bk
q))
CHRCHR: Operational Semantics: Operational Semantics
When rule R with disjunctive body B1 ; ... ; Bk is fired Update both constraint stores using B1
Start next matching-updating cycle
When BICS = false or when no rule matches the RDCS Backtrack to last alternative body Bi
Restore both constraint stores to their states prior to their update with Bi
Update both constraint stores using Bi+1
Start next matching-updating cycle
Exhaustively try all alternative bodies of all fired rules through backtracking
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
d7@ d(r7,C) ==> (C = r ; C = b).
d4@ d(r4,C) ==> (C = r ; C = b).
d3@ d(r3,C) ==> (C = r ; C = b).
d2@ d(r2,C) ==> (C = b ; C = g).
d5@ d(r5,C) ==> (C = r ; C = g).
d6@ d(r6,C) ==> (C = r ; C = g; C = t).
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]). true
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
...
d6@ d(r6,C) ==> (C = r ; C = g; C = t).
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m? m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]). true
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
...
d6@ d(r6,C) ==> (C = r ; C = g; C = t).
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
...
d6@ d(r6,C) ==> (C = r ; C = g; C = t).
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2? l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
...
d6@ d(r6,C) ==> (C = r ; C = g; C = t).
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
...
d6@ d(r6,C) ==> (C = r ; C = g; C = t).
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
n? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
...
d6@ d(r6,C) ==> (C = r ; C = g; C = t).
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
...
d6@ d(r6,C) ==> (C = r ; C = g; C = t).
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
...
d6@ d(r6,C) ==> (C = r ; C = g; C = t).
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
n? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
...
d6@ d(r6,C) ==> (C = r ; C = g; C = t).
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
d1a? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r R = r1, C = C1
Already fired w/ same constraint. Not repeated to avoid trivial non-termination
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
...
d6@ d(r6,C) ==> (C = r ; C = g; C = t).
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
l2? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
...
d6@ d(r6,C) ==> (C = r ; C = g; C = t).
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]
n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
d7@ d(r7,C) ==> (C = r ; C = b).
...
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false. C1,C7 Ri',Rj',Ci',Cj' C1=r | Ri=r1, Rj=r7, Ci=C1, Cj=C7, Ci=Cj
l1@ l([ ],[ ]) <=> true. eg., Cj = b r = Ci
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]
n? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r Ri = r1, Rj = r7, Ci = C1, Cj = C7, Ci = Cj
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
d7@ d(r7,C) ==> (C = r ; C = b).
...
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]
d7a? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r Ri = r7, C = C7
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
d7@ d(r7,C) ==> (C = r ; C = b).
...
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]
d7a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r Ri = r7, C = C7
n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r,C7 = r
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
d7@ d(r7,C) ==> (C = r ; C = b).
...
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]
d7a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r Ri = r7, C = C7
n? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r,C7 = r
Ri = r1, Rj = r7, Ci = r, Cj = r
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
d7@ d(r7,C) ==> (C = r ; C = b).
...
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]
d7a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r Ri = r7, C = C7
n! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r,C7 = r
Ri = r1, Rj = r7, Ci = r, Cj = r
n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
false
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
d7@ d(r7,C) ==> (C = r ; C = b).
...
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]
d7a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r Ri = r7, C = C7
n! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r,C7 = r
Ri = r1, Rj = r7, Ci = r, Cj = r
bt n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
false
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
d7@ d(r7,C) ==> (C = r ; C = b).
...
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]
d7b? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r Ri = r7, C = C7
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
d7@ d(r7,C) ==> (C = r ; C = b).
...
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]
d7b! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r Ri = r7, C = C7
n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r,
C7 = b
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
d7@ d(r7,C) ==> (C = r ; C = b).
...
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false. C1,C7 Ri',Rj',Ci',Cj' C1=r | Ri=r1, Rj=r7, Ci=C1, Cj=C7, Ci=Cj
l1@ l([ ],[ ]) <=> true. eg., Cj = b r = Ci
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]
d7b! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r Ri = r7, C = C7
n? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r,
C7 = b
Ri = r1, Rj = r7, Ci = C1, Cj = C7, Ci = Cj
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
d7@ d(r7,C) ==> (C = r ; C = b).
...
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]
d7b! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r Ri = r7, C = C7
l2? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r,
C7 = b
R = r4, Rs = [r3,r2,r5,r6],C = C4, Cs = [C3,C2,C5,C6]
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
d7@ d(r7,C) ==> (C = r ; C = b).
...
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]
d7b! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r Ri = r7, C = C7
l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), d(r4,C4), l([r3,r2,r5,r6],[C3,C2,C5,C6])
C1 = r,
C7 = b
R = r4, Rs = [r3,r2,r5,r6],C = C4, Cs = [C3,C2,C5,C6]
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
d7@ d(r7,C) ==> (C = r ; C = b).
...
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m! m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), true
l2! l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]), n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7)
true R = r1, Rs = [r7,r4,r3,r2,r5,r6],C = C1, Cs = [C7,C4,C3,C2,C5,C6]
d1a! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
true C = C1
l2! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), l([r7,r4,r3,r2,r5,r6],[C7,C4,C3,C2,C5,C6])
C1 = r R = r7, Rs = [r4,r3,r2,r5,r6],C = C7, Cs = [C4,C3,C2,C5,C6]
d7b! n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r Ri = r7, C = C7
l2? n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r7,C7), l([r4,r3,r2,r5,r6],[C4,C3,C2,C5,C6])
C1 = r,
C7 = b
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
d7@ d(r7,C) ==> (C = r ; C = b).
d4@ d(r4,C) ==> (C = r ; C = b).
d3@ d(r3,C) ==> (C = r ; C = b).
d2@ d(r2,C) ==> (C = b ; C = g).
d5@ d(r5,C) ==> (C = r ; C = g).
d6@ d(r6,C) ==> (C = r ; C = g; C = t).
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
Rule RDCS BICS MEG
m, l([r1,r7,r4,r3,r2,r5,r6],[C1,C7,C4,C3,C2,C5,C6]). true
n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7), d(r1,C1), d(r2,C2), d(r2,C2), d(r1,C3), d(r4,C4), d(r5,C5), d(r6,C6), d(r7,C7)
C1 = g,
C2 = b,
C3 = r,
C4 = r,
C5 = g,
C6 = r,
C7 = b
CHRCHR Base Example: Base Example:Map Coloring ProblemMap Coloring Problem
% More efficient version with forward checkingd1@ c(r1,r), c(r1,b), c(r1,g) ==> false.
d1@ d(r1,C), c(r1,r), c(r1,b) ==> C = g.
d1@ d(r1,C), c(r1,r), c(r1,g) ==> C = b.
d1@ d(r1,C), c(r1,b), c(r1,g) ==> C = r.
d1@ d(r1,C), c(r1,b) ==> (C = r ; C = g).
d1@ d(r1,C), c(r1,g) ==> (C = r ; C = b).
d1@ d(r1,C), c(r1,r) ==> (C = b ; C = g).
d1@ d(r1,C) ==> (C = r ; C = b ; C = g).
...
d6@ d(r6,C) ==> (C = r ; C = g; C = t).
m@ m <=> n(r1,r2), n(r1,r3), n(r1,r4), n(r1,r7), n(r2,r6), n(r3,r7), n(r4,r5), n(r4,r7), n(r5,r6), n(r5,r7).
fcr@ n(Ri,Rj), d(Rj,Cj) ==> c(Ri,Cj).
n@ n(Ri,Rj), d(Ri,Ci), d(Rj,Cj) ==> Ci = Cj | false.
l1@ l([ ],[ ]) <=> true.
l2@ l([R|Rs],[C|Cs]) <=> d(R,C), l(Rs,Cs).
r2b g r6 r g t
r3
r b
r4
r b
r5
b g
r1
r b g
r7
r b
CHRCHR for Deduction: Formulating for Deduction: Formulating Logical Entailment as Constraint Logical Entailment as Constraint
SimplificationSimplification How to use CHR to answer KB |= Q?1. Using only propagation rules, simulating forward chaining
Complete only for KB Horn clause conjunction and Q atom conjunction
2. Using only simplification rules, simulating backward chaining Complete only for KB Horn clause conjunction and Q atom
conjunction
3. Using only propagation rules, simulating resolution-based refutation proof Complete only for Q atom conjunctions
4. Using only simplification rules, simulating resolution-based refutation proof Complete only for Q atom conjunctions
Forward Chaining asForward Chaining asCHRCHR Constraint PropagationConstraint Propagation
1. Put KB in Implicative Normal Form (INF)2. Map each deductive rule in INF(KB) of the form: p1 ... pi c1 ... cj
onto a CHR rule of the form: p1 , ... , pi ==> c1 ; ... ; cj
3. Map each integrity constraint in INF(KB) of the form: p1 ... pi falseonto a CHR rule of the form: p1 , ... , pi ==> false
4. Map all the facts in INF(KB) of the form: true fl
onto a single CHR rule of the form: facts ==> f1 , ... , fk
5. Map query Q of the form (q11 ... q1n) ... (qm1 ... qmp)onto the set of CHR constraint {(q11 ,..., q1n) ;...; (qm1 ,..., qmp)}
6. Initialize RDCS = facts7. Simplify RDCS with CHR engine8. If at the end of the simplification:
DRCDS BICS | disjunct(Q) and BICS {false} then KB |= Q BICS = {false}, then the KB was inconsistent Otherwise KB may or may not entail Q
Forward Chaining as Forward Chaining as CHRCHR Constraint Constraint Propagation: Propagation: Is West Criminal?Is West Criminal?
f@ start ==> owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono). s@ owns(nono,W), missile(W) ==> sells(west,nono,W) w@ missile(W) ==> weapon(W)h@ enemy(N,america) ==> hostile(N) c@ american(P), weapon(W), nation(N), hostile(N), sells(P,N,W) ==> criminal(P)
Rule RDCS BICS MEG
f? start true
Forward Chaining as Forward Chaining as CHRCHR Constraint Constraint Propagation: Propagation: Is West Criminal?Is West Criminal?
f@ start ==> owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono). s@ owns(nono,W), missile(W) ==> sells(west,nono,W)
w@ missile(W) ==> weapon(W)
h@ enemy(N,america) ==> hostile(N)
c@ american(P), weapon(W), nation(N), hostile(N), sells(P,N,W) ==> criminal(P)
Rule RDCS BICS MEG
f! start true
start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono),
true
Forward Chaining as Forward Chaining as CHRCHR Constraint Constraint Propagation: Propagation: Is West Criminal?Is West Criminal?
f@ start ==> owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono). s@ owns(nono,W), missile(W) ==> sells(west,nono,W)
w@ missile(W) ==> weapon(W)
h@ enemy(N,america) ==> hostile(N)
c@ american(P), weapon(W), nation(N), hostile(N), sells(P,N,W) ==> criminal(P)
Rule RDCS BICS MEG
f! start true
s? start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono)
true nono=nono, W'=m1
Forward Chaining as Forward Chaining as CHRCHR Constraint Constraint Propagation: Propagation: Is West Criminal?Is West Criminal?
f@ start ==> owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono). s@ owns(nono,W), missile(W) ==> sells(west,nono,W)
w@ missile(W) ==> weapon(W)
h@ enemy(N,america) ==> hostile(N)
c@ american(P), weapon(W), nation(N), hostile(N), sells(P,N,W) ==> criminal(P)
Rule RDCS BICS MEG
f! start true
s! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono),
true nono=nono, W'=m1
start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1)
true
Forward Chaining as Forward Chaining as CHRCHR Constraint Constraint Propagation: Propagation: Is West Criminal?Is West Criminal?
f@ start ==> owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono). s@ owns(nono,W), missile(W) ==> sells(west,nono,W)
w@ missile(W) ==> weapon(W)
h@ enemy(N,america) ==> hostile(N)
c@ american(P), weapon(W), nation(N), hostile(N), sells(P,N,W) ==> criminal(P)
Rule RDCS BICS MEG
f! start true
s! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono),
true nono=nono, W'=m1
w? start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1)
true W'=m1
Forward Chaining as Forward Chaining as CHRCHR Constraint Constraint Propagation: Propagation: Is West Criminal?Is West Criminal?
f@ start ==> owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono). s@ owns(nono,W), missile(W) ==> sells(west,nono,W)
w@ missile(W) ==> weapon(W)
h@ enemy(N,america) ==> hostile(N)
c@ american(P), weapon(W), nation(N), hostile(N), sells(P,N,W) ==> criminal(P)
Rule RDCS BICS MEG
f! start true
s! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono),
true nono=nono, W'=m1
w! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1)
true W'=m1
start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1), weapon(m1)
true
Forward Chaining as Forward Chaining as CHRCHR Constraint Constraint Propagation: Propagation: Is West Criminal?Is West Criminal?
f@ start ==> owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono). s@ owns(nono,W), missile(W) ==> sells(west,nono,W)
w@ missile(W) ==> weapon(W)
h@ enemy(N,america) ==> hostile(N)
c@ american(P), weapon(W), nation(N), hostile(N), sells(P,N,W) ==> criminal(P)
Rule RDCS BICS MEG
f! start true
s! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono),
true nono=nono, W'=m1
w! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1)
true W'=m1
h? start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1), weapon(m1)
true N=nono
Forward Chaining as Forward Chaining as CHRCHR Constraint Constraint Propagation: Propagation: Is West Criminal?Is West Criminal?
f@ start ==> owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono). s@ owns(nono,W), missile(W) ==> sells(west,nono,W)
w@ missile(W) ==> weapon(W)
h@ enemy(N,america) ==> hostile(N)
c@ american(P), weapon(W), nation(N), hostile(N), sells(P,N,W) ==> criminal(P)
Rule RDCS BICS MEG
f! start true
s! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono),
true nono=nono, W'=m1
w! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1)
true W'=m1
h! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1), weapon(m1)
true N'=nono
start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1), weapon(m1), hostile(nono)
true
Forward Chaining as Forward Chaining as CHRCHR Constraint Constraint Propagation: Propagation: Is West Criminal?Is West Criminal?
f@ start ==> owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono). s@ owns(nono,W), missile(W) ==> sells(west,nono,W)
w@ missile(W) ==> weapon(W)
h@ enemy(N,america) ==> hostile(N)
c@ american(P), weapon(W), nation(N), hostile(N), sells(P,N,W) ==> criminal(P)
Rule RDCS BICS MEG
f! start true
s! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono),
true nono=nono, W'=m1
w! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1)
true W'=m1
h! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1), weapon(m1)
true N'=nono
c? start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1), weapon(m1), hostile(nono)
true P'=west, W'=m1, N'=nono
Forward Chaining as Forward Chaining as CHRCHR Constraint Constraint Propagation: Propagation: Is West Criminal?Is West Criminal?
f@ start ==> owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono). s@ owns(nono,W), missile(W) ==> sells(west,nono,W)
w@ missile(W) ==> weapon(W)
h@ enemy(N,america) ==> hostile(N)
c@ american(P), weapon(W), nation(N), hostile(N), sells(P,N,W) ==> criminal(P)
Rule RDCS BICS MEG
f! start true
s! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono),
true nono=nono, W'=m1
w! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1)
true W'=m1
h! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1), weapon(m1)
true N'=nono
c! start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1), weapon(m1), hostile(nono)
true P'=west, W'=m1, N'=nono
start, owns(nono,m1), missile(m1), enemy(nono,america), american(west), nation(nono), sells(west,nono,m1), weapon(m1), hostile(nono), criminal(west)
Backward Chaining asBackward Chaining asCHRCHR Constraint SimplificationConstraint Simplification
1. Put Horn KB in Implicative Normal Form (INF)2. Map each set of deductive rule in INF(KB) of the form:
{ p11 ... pi
l c, ..., pn1 ... pn
m c }, i.e., clauses with same positive conclusion
onto a CHR rule of the form:c <=> e1, ..., en | (ng(p1
1) ,..., ng(pil)) ;...; (ng(pn
1) ,..., ng(pnl))
where ng(pk) is a non-ground version of pk
with each constant vk substituted by a variable Xk
and e1, ..., en are equations of the form Xk = vk
3. Map each integrity constraint in INF(KB) of the form: p1 ... pi falseonto a CHR rule of the form: ng(p1) ,..., ng(pi) | e1, ..., en ==> false.
4. Map all the facts in INF(KB) of the form: true fl
onto a single CHR rule of the form: f1 ,..., fk <=> true.
5. Map query Q of the form (q11 ... q1n) ... (qm1 ... qmp)onto CHR constraint of the form q: (q11 ,..., q1n) ;...; (qm1 ,..., qmp)
6. Initialize RDCS = q7. Simplify RDCS with CHR engine8. If at the end of the simplification:
RDCS = and BICS {false}, then KB |= Q BICS = {false}, then KB | Q Otherwise, KB may or may not entail Q
Backward Chaining as Backward Chaining as CHRCHR Constraint Constraint Simplification: Simplification: Is West Criminal?Is West Criminal?
c@ criminal(P) <=> weapon(W), sells(P,N,W), hostile(N), nation(N), american(P).w@ weapon(W) <=> missile(W) s@ sells(P,N,W) <=> P = west, N = nono | owns(N,W), missile(W).
h@ hostile(N) <=> A = america | enemy(N,A) f@ owns(N,W), missile(W), enemy(N,A), american(P), nation(N) <=> N = nono, W = m1, A = america, P = West | true
Rule RDCS BICS MEG
c? criminal(P) true
Backward Chaining as Backward Chaining as CHRCHR Constraint Constraint Simplification: Simplification: Is West Criminal?Is West Criminal?
c@ criminal(P) <=> weapon(W), sells(P,N,W), hostile(N), nation(N), american(P).w@ weapon(W) <=> missile(W) s@ sells(P,N,W) <=> P = west, N = nono | owns(N,W), missile(W).
h@ hostile(N) <=> A = america | enemy(N,A) f@ owns(N,W), missile(W), enemy(N,A), american(P), nation(N) <=> N = nono, W = m1, A = america, P = West | true
Rule RDCS BICS MEG
c! criminal(P) true
weapon(W), sells(P,N,W), hostile(N), nation(N), american(P) true
Backward Chaining as Backward Chaining as CHRCHR Constraint Constraint Simplification: Simplification: Is West Criminal?Is West Criminal?
c@ criminal(P) <=> weapon(W), sells(P,N,W), hostile(N), nation(N), american(P).w@ weapon(W) <=> missile(W) s@ sells(P,N,W) <=> P = west, N = nono | owns(N,W), missile(W).
h@ hostile(N) <=> A = america | enemy(N,A) f@ owns(N,W), missile(W), enemy(N,A), american(P), nation(N) <=> N = nono, W = m1, A = america, P = West | true
Rule RDCS BICS MEG
c! criminal(P) true
w? weapon(W), sells(P,N,W), hostile(N), nation(N), american(P) true
Backward Chaining as Backward Chaining as CHRCHR Constraint Constraint Simplification: Simplification: Is West Criminal?Is West Criminal?
c@ criminal(P) <=> weapon(W), sells(P,N,W), hostile(N), nation(N), american(P).w@ weapon(W) <=> missile(W) s@ sells(P,N,W) <=> P = west, N = nono | owns(N,W), missile(W).
h@ hostile(N) <=> A = america | enemy(N,A) f@ owns(N,W), missile(W), enemy(N,A), american(P), nation(N) <=> N = nono, W = m1, A = america, P = West | true
Rule RDCS BICS MEG
c! criminal(P) true
w! weapon(W), sells(P,N,W), hostile(N), nation(N), american(P) true
sells(P,N,W), hostile(N), nation(N), american(P), missile(W) true
Backward Chaining as Backward Chaining as CHRCHR Constraint Constraint Simplification: Simplification: Is West Criminal?Is West Criminal?
c@ criminal(P) <=> weapon(W), sells(P,N,W), hostile(N), nation(N), american(P).w@ weapon(W) <=> missile(W) s@ sells(P,N,W) <=> P = west, N = nono | owns(N,W), missile(W).
h@ hostile(N) <=> A = america | enemy(N,A) f@ owns(N,W), missile(W), enemy(N,A), american(P), nation(N) <=> N = nono, W = m1, A = america, P = West | true
Rule RDCS BICS MEG
c! criminal(P) true
w! weapon(W), sells(P,N,W), hostile(N), nation(N), american(P) true
s? sells(P,N,W), hostile(N), nation(N), american(P), missile(W) true P=west, N=nono
Backward Chaining as Backward Chaining as CHRCHR Constraint Constraint Simplification: Simplification: Is West Criminal?Is West Criminal?
c@ criminal(P) <=> weapon(W), sells(P,N,W), hostile(N), nation(N), american(P).w@ weapon(W) <=> missile(W) s@ sells(P,N,W) <=> P = west, N = nono | owns(N,W), missile(W).
h@ hostile(N) <=> A = america | enemy(N,A) f@ owns(N,W), missile(W), enemy(N,A), american(P), nation(N) <=> N = nono, W = m1, A = america, P = West | true
Rule RDCS BICS MEG
c! criminal(P) true
w! weapon(W), sells(P,N,W), hostile(N), nation(N), american(P) true
s! sells(P,N,W), hostile(N), nation(N), american(P), missile(W) true P=west, N=nono
hostile(N), nation(N), american(P), missile(W), owns(N,W), missile(W). P=west, N=nono
Backward Chaining as Backward Chaining as CHRCHR Constraint Constraint Simplification: Simplification: Is West Criminal?Is West Criminal?
c@ criminal(P) <=> weapon(W), sells(P,N,W), hostile(N), nation(N), american(P).w@ weapon(W) <=> missile(W) s@ sells(P,N,W) <=> P = west, N = nono | owns(N,W), missile(W).
h@ hostile(N) <=> A = america | enemy(N,A) f@ owns(N,W), missile(W), enemy(N,A), american(P), nation(N) <=> N = nono, W = m1, A = america, P = West | true
Rule RDCS BICS MEG
c! criminal(P) true
w! weapon(W), sells(P,N,W), hostile(N), nation(N), american(P) true
s! sells(P,N,W), hostile(N), nation(N), american(P), missile(W) true P=west, N=nono
h? hostile(N), nation(N), american(P), missile(W), owns(N,W), missile(W). P=west, N=nono A = america
Backward Chaining as Backward Chaining as CHRCHR Constraint Constraint Simplification: Simplification: Is West Criminal?Is West Criminal?
c@ criminal(P) <=> weapon(W), sells(P,N,W), hostile(N), nation(N), american(P).w@ weapon(W) <=> missile(W) s@ sells(P,N,W) <=> P = west, N = nono | owns(N,W), missile(W).
h@ hostile(N) <=> A = america | enemy(N,A) f@ owns(N,W), missile(W), enemy(N,A), american(P), nation(N) <=> N = nono, W = m1, A = america, P = West | true
Rule RDCS BICS MEG
c! criminal(P) true
w! weapon(W), sells(P,N,W), hostile(N), nation(N), american(P) true
s! sells(P,N,W), hostile(N), nation(N), american(P), missile(W) true P=west, N=nono
h! hostile(N), nation(N), american(P), missile(W), owns(N,W), missile(W). P=west, N=nono A = america
nation(N), american(P), missile(W), owns(N,W), missile(W), enemy(N,A) P=west, N=nono, A = america
Backward Chaining as Backward Chaining as CHRCHR Constraint Constraint Simplification: Simplification: Is West Criminal?Is West Criminal?
c@ criminal(P) <=> weapon(W), sells(P,N,W), hostile(N), nation(N), american(P).w@ weapon(W) <=> missile(W) s@ sells(P,N,W) <=> P = west, N = nono | owns(N,W), missile(W).
h@ hostile(N) <=> A = america | enemy(N,A) f@ owns(N,W), missile(W), enemy(N,A), american(P), nation(N) <=> N = nono, W = m1, A = america, P = West | true
Rule RDCS BICS MEG
c! criminal(P) true
w! weapon(W), sells(P,N,W), hostile(N), nation(N), american(P) true
s! sells(P,N,W), hostile(N), nation(N), american(P), missile(W) true P=west, N=nono
h! hostile(N), nation(N), american(P), missile(W), owns(N,W), missile(W).
P=west, N=nono A = america
f? nation(N), american(P), missile(W), owns(N,W), missile(W), enemy(N,A)
P=west, N=nono, A = america
N'= N, W' = W, W' = W, N' = N, A' = A, P' = P, N' = N, N = nono,W = m1, A = america, P = west
Backward Chaining as Backward Chaining as CHRCHR Constraint Constraint Simplification: Simplification: Is West Criminal?Is West Criminal?
c@ criminal(P) <=> weapon(W), sells(P,N,W), hostile(N), nation(N), american(P).w@ weapon(W) <=> missile(W) s@ sells(P,N,W) <=> P = west, N = nono | owns(N,W), missile(W).
h@ hostile(N) <=> A = america | enemy(N,A) f@ owns(N,W), missile(W), enemy(N,A), american(P), nation(N) <=> N = nono, W = m1, A = america, P = West | true
Rule RDCS BICS MEG
c! criminal(P) true
w! weapon(W), sells(P,N,W), hostile(N), nation(N), american(P) true
s! sells(P,N,W), hostile(N), nation(N), american(P), missile(W) true P=west, N=nono
h! hostile(N), nation(N), american(P), missile(W), owns(N,W), missile(W).
P=west, N=nono A = america
f! nation(N), american(P), missile(W), owns(N,W), missile(W), enemy(N,A)
P = west, N=nono, A = america
N'= N, W' = W, W' = W, N' = N, A' = A, P' = P, N' = N, N = nono,W = m1, A = america, P = west
P = west, N=nono, A = america,
W = m1
Resolution-Based Refutation asResolution-Based Refutation asCHRCHR Constraint SimplificationConstraint Simplification
1. Put KB in Implicative Normal Form (INF)2. Map each deductive rule in INF(KB) of the form: p1 ... pi c1 ... cj
onto a CHR rule of the form: p1 , ... , pi ==> c1 ; ... ; cj
3. Map each integrity constraint in INF(KB) of the form: p1 ... pi falseonto a CHR rule of the form: p1 , ... , pi ==> false
4. Map all the facts in INF(KB) of the form: true fl
onto a single CHR rule of the form: facts <=> f1 , ... , fk
5. Map negation of query Q of the form q11 ... q1n
onto a single CHR rule of the form: q11 , ... , q1n ==> false
6. Initialize RDCS = facts7. Simplify RDCS with CHR engine8. If at the end of the simplification:
BICS = {false}, then KB |= Q Otherwise, KB | Q
CHRCHRVV: Practical Applications: Practical Applications
Declarative, easy to extend and compose constraint solvers and all their applications Scheduling, allocation, planning, optimization, recommendation,
configuration Deductive theorem proving (propositional and first-order) and all its
applications: CASE tools, declarative programs analysis, formal methods in hardware and
software design, Hypothetical abductive reasoning and all its applications:
Diagnosis and repair, observation explanation, sensor data integration Multi-agent reasoning Spatio-temporal reasoning and robotics Hybrid reasoning integrating:
Deduction, belief revision, abduction, constraint solving and optimization with open and closed world assumption
Heterogeneous knowledge integration Semantic web services Natural language processing
CHRCHRVV vs. Production Systems vs. Production Systems
CHRV: Constraint store contains arbitrary atoms
including functional, non-ground atoms Simplification rules allow straightforward
modeling for goal-driven reasoning, with rewriting simulating Prolog-like backward chaining
Disjunctive bodies Built-in backtracking search
Production Systems: Fact base only contains
ground Datalog atoms Cumbersome modeling to
implement goal-driven reasoning
No disjunctions in RHS No built-in search
Common characteristics: Forward chains rules Requires conflict resolution strategy to choose:
Which of several matching rules to fire Non-monotonic reasoning due to:
Constraint retraction in Rule-Defined Constraint Store Fact retraction in the RHS
Tricky confluence and termination issues
CHRCHRVV vs. Rewriting Systems vs. Rewriting Systems
CHRV: Matching applied to atomic formula
conjunctions Rule head is matched with constraint
store sub-set, which requires head to be more general than 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 can thus be more general than 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
CHRCHRVV vs. Prolog vs. Prolog
CFOL semantics of CHRV guardless, single head simplification rule, equivalent to CFOL semantics of pure Prolog clause set sharing same conclusion (Clark's completion) Simplification rule: sh <=> true | b1
1, ..., bkp ; ... ; b1
1, ..., blq.
where: {X1, ..., Xn} = vars(shi), and {Y1, ... , Ym} = vars(b1 ... bk) \ {X1, ..., Xn} X1, ..., Xn true (sh Y1, ... , Ym ((b1
1 ... bk
p) ... (b11 ... bk
q))
Equivalent Prolog clauses: {sh :- b1
1, ..., bkp. , ... , sh :- b1
1, ..., blq.}
Thus, using Clark's completion, any Prolog program can be reformulated into a semantically equivalent CHRV program
CHRV extends Prolog with: Conjunctions in the heads Guards Non-ground numerical constraints heads, guards and bodies Propagation rules