149
Ontologi es Reasonin g Component s Agents Simulatio ns Rule-Based Reasoning with Rule-Based Reasoning with Constraint Handling Rules Constraint Handling Rules Jacques Robin

Ontologies Reasoning Components Agents Simulations Rule-Based Reasoning with Constraint Handling Rules Jacques Robin

  • View
    236

  • Download
    0

Embed Size (px)

Citation preview

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