Ontologies Reasoning Components Agents Simulations Logic Programming Jacques Robin.

Slides:



Advertisements
Similar presentations
CS4026 Formal Models of Computation Part II The Logic Model Lecture 1 – Programming in Logic.
Advertisements

Some Prolog Prolog is a logic programming language
Computer Science CPSC 322 Lecture 25 Top Down Proof Procedure (Ch 5.2.2)
Russell and Norvig Chapter 7
Inference Rules Universal Instantiation Existential Generalization
SLD-resolution Introduction Most general unifiers SLD-resolution
Chapter 11 :: Logic Languages
Logic Programming Automated Reasoning in practice.
Ontologies Reasoning Components Agents Simulations Reasoning about actions, change, events and time Jacques Robin.
Automated Reasoning Systems For first order Predicate Logic.
Inference and Reasoning. Basic Idea Given a set of statements, does a new statement logically follow from this. For example If an animal has wings and.
Methods of Proof Chapter 7, second half.. Proof methods Proof methods divide into (roughly) two kinds: Application of inference rules: Legitimate (sound)
For Friday No reading Homework: –Chapter 9, exercise 4 (This is VERY short – do it while you’re running your tests) Make sure you keep variables and constants.
Agents That Reason Logically Copyright, 1996 © Dale Carnegie & Associates, Inc. Chapter 7 Spring 2004.
Answer Set Programming Overview Dr. Rogelio Dávila Pérez Profesor-Investigador División de Posgrado Universidad Autónoma de Guadalajara
13 Automated Reasoning 13.0 Introduction to Weak Methods in Theorem Proving 13.1 The General Problem Solver and Difference Tables 13.2 Resolution.
Methods of Proof Chapter 7, Part II. Proof methods Proof methods divide into (roughly) two kinds: Application of inference rules: Legitimate (sound) generation.
Propositional Logic Reading: C , C Logic: Outline Propositional Logic Inference in Propositional Logic First-order logic.
Logic CPSC 386 Artificial Intelligence Ellen Walker Hiram College.
Logic.
1 Applied Computer Science II Resolution in FOL Luc De Raedt.
Outline Recap Knowledge Representation I Textbook: Chapters 6, 7, 9 and 10.
Formal Logic Proof Methods Direct Proof / Natural Deduction Conditional Proof (Implication Introduction) Reductio ad Absurdum Resolution Refutation.
Proof methods Proof methods divide into (roughly) two kinds: –Application of inference rules Legitimate (sound) generation of new sentences from old Proof.
Logic in general Logics are formal languages for representing information such that conclusions can be drawn Syntax defines the sentences in the language.
Logical Agents Copyright, 1996 © Dale Carnegie & Associates, Inc. Chapter 7 Fall 2005.
Constraint Logic Programming Ryan Kinworthy. Overview Introduction Logic Programming LP as a constraint programming language Constraint Logic Programming.
Inference in FOL Copyright, 1996 © Dale Carnegie & Associates, Inc. Chapter 9 Spring 2004.
1 Automated Reasoning Introduction to Weak Methods in Theorem Proving 13.1The General Problem Solver and Difference Tables 13.2Resolution Theorem.
Methods of Proof Chapter 7, second half.
Knoweldge Representation & Reasoning
Ontologies Reasoning Components Agents Simulations Introduction to Rule-Based Reasoning Jacques Robin.
Logical Agents Chapter 7 Feb 26, Knowledge and Reasoning Knowledge of action outcome enables problem solving –a reflex agent can only find way from.
Logical Agents Copyright, 1996 © Dale Carnegie & Associates, Inc. Chapter 7 Spring 2005.
Ontologies Reasoning Components Agents Simulations Rule-Based Deduction Jacques Robin.
Describing Syntax and Semantics
INFERENCE IN FIRST-ORDER LOGIC IES 503 ARTIFICIAL INTELLIGENCE İPEK SÜĞÜT.
Notes for Chapter 12 Logic Programming The AI War Basic Concepts of Logic Programming Prolog Review questions.
Ontologies Reasoning Components Agents Simulations Belief Update, Planning and the Fluent Calculus Jacques Robin.
Logical Inference 2 rule based reasoning
Pattern-directed inference systems
Advanced Topics in Propositional Logic Chapter 17 Language, Proof and Logic.
Logical Agents Logic Propositional Logic Summary
Slide 1 Propositional Definite Clause Logic: Syntax, Semantics and Bottom-up Proofs Jim Little UBC CS 322 – CSP October 20, 2014.
S P Vimal, Department of CSIS, BITS, Pilani
CS Introduction to AI Tutorial 8 Resolution Tutorial 8 Resolution.
Kansas State University Department of Computing and Information Sciences CIS 730: Introduction to Artificial Intelligence Lecture 17 Wednesday, 01 October.
Logical Agents Chapter 7. Knowledge bases Knowledge base (KB): set of sentences in a formal language Inference: deriving new sentences from the KB. E.g.:
Logic Programming and Prolog Goal: use formalism of first-order logic Output described by logical formula (theorem) Input described by set of formulae.
Automated Reasoning Early AI explored how to automated several reasoning tasks – these were solved by what we might call weak problem solving methods as.
Automated Reasoning Early AI explored how to automate several reasoning tasks – these were solved by what we might call weak problem solving methods as.
Ch. 13 Ch. 131 jcmt CSE 3302 Programming Languages CSE3302 Programming Languages (notes?) Dr. Carter Tiernan.
Automated Reasoning Systems For first order Predicate Logic.
Kansas State University Department of Computing and Information Sciences CIS 730: Introduction to Artificial Intelligence Lecture 18 of 41 Friday, 01 October.
Programming Languages Third Edition Chapter 4 Logic Programming.
© Copyright 2008 STI INNSBRUCK Intelligent Systems Propositional Logic.
DEDUCTION PRINCIPLES AND STRATEGIES FOR SEMANTIC WEB Chain resolution and its fuzzyfication Dr. Hashim Habiballa University of Ostrava.
1 Reasoning with Infinite stable models Piero A. Bonatti presented by Axel Polleres (IJCAI 2001,
Inference in First Order Logic. Outline Reducing first order inference to propositional inference Unification Generalized Modus Ponens Forward and backward.
First-Order Logic Reading: C. 8 and C. 9 Pente specifications handed back at end of class.
1 Propositional Logic Limits The expressive power of propositional logic is limited. The assumption is that everything can be expressed by simple facts.
Logical Agents Chapter 7. Outline Knowledge-based agents Propositional (Boolean) logic Equivalence, validity, satisfiability Inference rules and theorem.
Proof Methods for Propositional Logic CIS 391 – Intro to Artificial Intelligence.
Artificial Intelligence Knowledge Representation.
Copyright 1999Paul F. Reynolds, Jr. Foundations of Logic Programming.
COMP 412, FALL Type Systems C OMP 412 Rice University Houston, Texas Fall 2000 Copyright 2000, Robert Cartwright, all rights reserved. Students.
Logical Agents. Outline Knowledge-based agents Logic in general - models and entailment Propositional (Boolean) logic Equivalence, validity, satisfiability.
Methods of Proof Chapter 7, second half.
Introduction to Rule-Based Reasoning
Representations & Reasoning Systems (RRS) (2.2)
Presentation transcript:

Ontologies Reasoning Components Agents Simulations Logic Programming Jacques Robin

Roteiro  A unifying metaphor for computer science  Syntax:  Pure Prolog abstract syntax  Full Prolog abstract syntax  Concrete syntax  Declarative semantics:  Open x closed world hypothesis  Unique name hypothesis  Clark’s completion  Least Herbrand model  Operational semantics  Lifted SLD resolution and backward chaining  Limitations  Of ISO Prolog  Of SLD resolution and pure backward chaining  Tabled logic programming  SLG resolution for pure Prolog  High order logic programming  HiLog abstract syntax  HiLog first-order semantics  Constraint logic programming  Limitations of CSP  CLP engine architeture  CLP abstract syntax  Operational semantics  Other extensions

Formal Logic Theory Intelligent Databases Formal Software Specification Automated Reasoning Declarative Programming Logic Programming: a Versatile Metaphor Logic Programming

Logic Programming: Key Ideas Logical Theory Software Specification Declarative Programming Automated Reasoning Intelligent Databases Logical Formula Abstract Specification Declarative Program / Data Structure Knowledge Base Database Theorem Prover Specification Verifier Interpreter / Compiler Inference Engine Query Processor Theorem Proof Specification Verification Program ExecutionInferenceQuery Execution Theorem Proving Strategy Verification Algorithm Single, Fixed, Problem-Independent Control Structure Inference Search Algorithm Query Processing Algorithm

Logic programming vision logic-based declarative semantics  Single language with logic-based declarative semantics that is: programming  A Turing-complete, general purpose programming language knowledge representation  A versatile, expressive knowledge representation language to support deduction and other reasoning services useful for intelligent agents (abduction, induction, constraint solving, belief revision) Data definition, query and update  Data definition, query and update language for databases with built-in inference capabilities  One tool solves all philosophy:  Any computation = resolution + unification + search  Programming = declaring logical axioms (Horn clauses)  Running the program = query about theorems provable from declared axioms  Algorithmic design entirely avoided (single, built-in control structure)  Same language for formal specification (modeling) and implementation  Same language for model checking and code testing

Prolog  First and still most widely used logic programming language  Falls short to fulfill the vision in many respect:  Many imperative constructs with no logical declarative semantics  No commercial deductive database available  Most other logic programming languages both:  Extend Prolog  Fulfills better one aspect of the logic programming vision  Basis for aborted attempt to Japanese to fully revolutionize all computing from ground up in the 80s

Pure Prolog: abstract syntax Pure Prolog Atom arg Definite Query +connective =  Definite Clause +connective =  headbody 0..1 Numerical Symbol Pure Prolog Term Function-Free TermFunctional Term Variable Symbol functor arg predicate * * * * Definite Logic Program +connective =  c 1 1 (...,X k 1,...) :- p 1 1 (...,X i 1,...),..., p m 1 (...,X j 1,...).... c 1 n (...,X k n,...) :- p 1 n (...,X i n,...),..., p m n (...,X j n,...). clauses parent(al,jim)  parent(jim,joe  anc(A,D)  parent(A,D)  anc(A,D)  parent(A,P)  anc(P,D)

Full Prolog Full Prolog Atom Prolog Literal arg Full Prolog Query +connective =  Full Prologl Clause +connective =  head body 0..1 User-Defined Symbol Full Prolog Term Function-Free Term Functional Term Variable Symbol functor arg predicate * * Prolog Literal +connective = naf Full Prolog Program +connective =  * Built-in Symbol Built-in Logical Symbol Built-in Imperative Symbol Meta-Programming Predicate Symbol Numerical Symbol I/O Predicate Symbol Program Update Predicate Symbol Search Customization Predicate Symbol Semantics of full Prolog: Cannot be purely logic-based Must integrate algorithmic ones

Pure Prolog program declarative formal semantics  Declarative, denotational, intentional:  Clark’s transformation to CFOL formula  First-order formula semantically equivalent to program  Declarative, denotational, extentional, model-theoretic:  Least Herbrand Model  Intersection of all Herbrand Models  Conjunction of all ground formulas that are deductive consequences of program

CFOL x Prolog Semantic Assumptions Classical First-Order Predicate Logic:  No Unique Name Assumption (UNA): two distinct symbols can potentially be paraphrases to denote the same domain entity  Open-World Assumption (OWA): If KB |≠ Q but KB |≠  Q, the truth value of Q is considered unknown  Ex: KB: true  core(ai)  true  core(se)  core(C)  offered(C,T)  true  offered(mda,fall) Q: true  offered(mda,spring)  OWA necessary for monotonic, deductively sound reasoning: If KB |= T then  A, KB  A |= T Logic Programming:  UNA: two distinct symbols necessarily denote two distinct domain entities  Closed-World Assumption (CWA): If KB |≠ Q but KB |≠  Q, the truth value of Q is considered false  Ex: ?- offered(mda,spring) fail  CWA is a logically unsound form of negatively abductive reasoning  CWA makes reasoning inherently non-monotonic as one can have: KB |= T but KB  A |≠ T if the proof KB |= T included steps assuming A false by CWA  Motivation: intuitive, representational economy, consistent w/ databases

Clark’s completion semantics  Transform Pure Prolog Program P into semantically equivalent CFOL formula comp(P)  Same answer query set derived from P (abductively) than from F P (deductively)  Example P: core(se). core(ai). offered(mda,fall). offered(C,T) :- core(C). ?- offered(mda,spring) no ?-  Naive semantics naive(P):  C,T true  core(ai)  true  core(se)  true  offered(mda,fall)  core(C)  offered(C,T) naive(P) |≠  offered(mda,spring)  Clark’s completion semantics comp(P):  C,T,C 1,T 1 (core(C 1 )  (C 1 =ai  C 1 =se))  (offered(C 1,T 1 )  (C 1 =mda  T 1 =fall)  (  C,T (C 1 =C  T 1 =T  core(C))))   (ai=se)   (ai=mda)   (ai=fall)   (se=fall)   (se=mda)   (mda=fall) F p |=  offered(mda,spring)

Clark’s transformation  Axiomatizes closed-world and unique name assumptions in CFOL  Start from naive Horn formula semantics of pure Prolog program  Partition program in clause sets, each one defining one predicate (i.e., group together clauses with same predicate c(t 1,..., t n ) as conclusion)  Replace each such set by a logical equivalence  One side of this equivalence contains c(X 1,..., X n ) where X 1,..., X n are fresh universally quantified variables  The other side contains a disjunction of conjunctions, one for each original clause  Each conjunction is either of the form:  X i = c i ...  X j = c i, if the original clause is a ground fact   Y i... Y j X i = Y i ...  X j = Y j  p 1 (...) ...  p n (... ) if the original clause is a rule with body p 1 (...) ...  p n (... ) containing variables Y i... Y j  Join all resulting equivalences in a conjunction  Add conjunction of the form  (c i = c j ) for all possible pairs (c i,c j ) of constant symbols in pure Prolog program

SLD Resolution  SLD resolution (Linear resolution with Selection function for Definite logic programs):  Joint use of input and goal-driven set of support heuristics  Always pick last proven theorem clause with next untried axiom clause  Always questions last pick even if unrelated to failure that triggered backtracking  A form of goal-driven backward chaining of Horn clauses seen as deductive rules  Prolog uses special case of SLD resolution where:  Axiom clauses tried in top to bottom program writing order  Atoms to unify in the two picked clauses:  Conclusion of selected axiom clause  Next untried premise of last proven theorem clause in left to right program writing order (goal)  Unification without occur-check  Generates proof tree in top-down, depth-first manner Generates proof tree in top-down, depth-first manner  Failure triggers systematic, chronological backtracking: Failure triggers systematic, chronological backtracking  Try next alternative for last selection even if clearly unrelated to failure  Reprocess from scratch new occurrences of sub-goals previously proven true or false  Simple, intuitive, space-efficient, time-inefficient, potentially non-terminating (incomplete)

Refutation Resolution Proof Example Refutation proof principle:  To prove KB |= F  Prove logically equivalent: (KB  F) |= True  In turn logically equivalent to: (KB   F) |= False (american(P)  weapon(W)  nation(N)  hostile(N)  sells(P,N,W)  criminal(P)) //1  (T  owns(nono,m1)) //2a  (T  missile(m1)) //2b  (owns(nono,W)  missile(W)  sells(west,nono,W)) //3  (T  american(west)) //4  (T  nation(nono)) //5  (T  enemy(nono,america)) //6  (missile(W)  weapon(W)) //7  (enemy(N,america)  hostile(N)) //8  (T  nation(america)) //9  (criminal(west)  F) //0 1. Solve 0 w/ 1 unifying P/west: american(west)  weapon(W)  nation(N)  hostile(N)  sells(west,N,W)  F //10 2. Solve 10 w/ 4: weapon(W)  nation(N)  hostile(N)  sells(west,N,W)  F //11 3. Solve 11 w/ 7: missile(W)  nation(N)  hostile(N)  sells(west,N,W)  F //12 4. Solve 12 w/ 2b unifying W/m1: nation(N)  hostile(N)  sells(west,N,m1)  F //13 5. Solve 13 w/ 5 unifying N/nono: hostile(nono)  sells(west,nono,m1)  F //14 6. Solve 14 w/ 8 unifying N/nono: enemy(nono,america)  sells(west,nono,m1)  F //15 7. Solve 15 w/ 6: sells(west,nono,m1)  F //16 8. Solve 16 w/ 3 unifying W/m1: owns(nono,m1)  missile(m1)  F //17 9. Solve 17 with 2a: missile(m1)  F // Solve 18 with 2b: F

SLD resolution example criminal(P) american(P)weapon(W)nation(N)hostile(N)sells(P,N,W) criminal(west)? missile(W)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(P)weapon(W)nation(N)hostile(N)sells(P,N,W) criminal(west)? missile(W)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(W)nation(N)hostile(N)sells(west,N,W) criminal(west)? missile(W)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(W)nation(N)hostile(N)sells(west,N,W) criminal(west)? missile(W)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(W)nation(N)hostile(N)sells(west,N,W) criminal(west)? missile(W)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(W)nation(N)hostile(N)sells(west,N,W) criminal(west)? missile(W)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(W)nation(N)hostile(N)sells(west,N,W) criminal(west)? missile(W)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(W)nation(N)hostile(N)sells(west,N,W) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,W) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,W) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)

SLD resolution example criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? yes missile(m1)enemy(nono,america)owns(nono,m1) missile(m1)american(west)nation(nono) nation(america) enermy(nono,america)owns(nono,m1) sells(west,nono,m1)

SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(america)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(america)hostile(america)sells(west,america,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(america)hostile(america)sells(west,america,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(america)hostile(america)sells(west,america,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(america)hostile(america)sells(west,america,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W) fail

SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(america)hostile(america)sells(west,america,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W) fail backtrack

SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W) backtrack

SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(N)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example with backtracking criminal(west) american(west)weapon(m1)nation(nono)hostile(N)sells(west,N,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)

SLD resolution example with bactracking criminal(west) american(west)weapon(m1)nation(nono)hostile(nono)sells(west,nono,m1) criminal(west)? missile(m1)enemy(N,america)owns(nono,W) missile(m1)american(west) nation(nono) nation(america)enermy(nono,america)owns(nono,m1) sells(west,nono,W)

Dual use of Prolog for AI knowledge representation  As knowledge representation language programming  As Turing-complete programming language Knowledge Base: Prolog Facts and Rules Inference Engine: Prolog Compiler/ Interpreter Ask Tell Retract Knowledge Base: Sentences in formalism F Inference Engine Implementing in Prolog Reasoning R in formalism F Ask Tell Retract Inference Engine: Prolog Compiler/ Interpreter

Logic vs. imperative and functional programming  Single relational definition: append([],L,L). append([H|T1],L,[H|T2]) :- append(T1,L,T2).  Usable as verification function: ?- append([a,b],[c],[a,b,c]). -> yes. ?- append([a,b],[c],[a]). -> no.  Usable as function and its various input/output converse functions: ?- append([a,b],[c],R). -> R = [a,b,c]. ?- append(H,[c],[a,b,c]). -> H = [a,b].  Usable as constraint solver: ?- append(X,Y,[a,b,c]). -> X = [], Y = [a,b,c] ; -> X = [a], Y = [b,c]...  Usable for enumeration: ?- append(X,Y,Z). -> X = [], Y =[], Z = [] ; -> X = [_], Y = [], Z = [_]...  Implements alone 8 different functions or methods!

Limitations of Pure Prolog and ISO Prolog knowledge representation For knowledge representation:  search customization:  No declarative constructs  Limited support procedimental constructs (cuts)  no support for uncertain reasoning  forces unintuitive rule-based encoding of inherently taxonomic and procedural knowledge  knowledge base updates non- backtrackable and without logical semantics  ab :- assert(a), b. if b fails, a remains as true programming For programming:  no fine-grained encapsulation  no code factoring (inheritance)  poor data structures (function symbols as only construct)  mismatch with dominant object- oriented paradigm  not integrated to comprehensive software engineering methodology  IDE not friendly enough  scarce middleware  very scarce reusable libraries or components (ex, web, graphics)  mono-thread declarative logic For declarative logic programming:  imperative numerical computation, I/O and meta-programming without logical semantics

Limitation of SLD resolution engines  Unsound: unification without occur-check  Incomplete: left-recursion  Correct ancestor Prolog program: anc(A,D) :- parent(A,D). anc(A,D) :- parent(P,D), anc(A,P).  Logically equivalent program (since conjunction is a commutative connective) that infinitely loops: anc(A,D) :- anc(A,P), parent(P,D). anc(A,D) :- parent(A,D).  Inefficient:  repeated proofs of same sub-goals  irrelevant chronological backtracking

Prolog’s imperative arithmetics fac(0,1) :- !. fac(I,O) :- I1 is I - 1, fac(I1,O1), O is I * O1. ?- fac(1,X). X = 1 ?- fac(3,X). X = 6 ?- I1 is I -1 error ?- I1 = I -1 I1 = I -1 ?- I = 2, I1 = I -1 I1 = 2 -1 ?- I = 2, I1 is I -1 I1 = 1  Arithmetic functions and predicates generate exception if queried with non-ground terms as arguments  is requires a uninstantiated variable on the left and an arithmetic expression on the right  Relational programming property lost  Syntax more like assembly than functional ! variable assignment  is Prolog’s sole explicit variable assignment predicate (only for arithmetics) query  = is a bi-directional, general- purpose unification query predicate

Prolog’s redundant sub-goal proofs

Extensions of pure Prolog Pure Prolog ISO Prolog High-Order LP Functional LP Constraint LP Abductive LP Transaction LP Frame (OO) LP Preference LP Tabled LP Inductive LP XSB Aleph Flora

Table logic programming: SLG resolution  Substitute goal stack by goal and answer table caching containing for each goal:  Calling goal (parent in top-down proof tree)  Pointer to variant goal modulo:  variable renaming, ex, p(f(X),Y)  p(f(A),B)  or term subsumption, ex, p(X,g(d))  p(A,B)  Instantiated program clause which conclusion it unified with  Position of that clause in the program  All its answers  To prove goal G:  Look for goal G’ variant of G in the table  If there is one, then use answers of G’ to answer G  Else backchain on G to get first answer to G  After finding such answer (or failing):  cache it in the table  backtrack to find all the other answers and cache them as well  Resume proof to next premise of calling goal

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = dan; A = fay; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C1

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = dan; A = fay; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C1 2aparent(A,dan)1aparent(fay,dan)C3A = fay

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = dan; A = fay; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C12a parent(A,dan)1aparent(fay,dan)C3A = fay

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = dan; A = fay; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C12a parent(A,dan)1aparent(fay,dan)C3A = fay 2b1aparent(jim,dan)C4A = jim

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = dan; A = fay; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C12a, 2b 2aparent(A,dan)1aparent(fay,dan)C3A = fay 2b1aparent(jim,dan)C4A = jim

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = dan; A = fay; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C12a, 2b 1banc(A,dan) :- parent(P,dan), anc(A,P)C2 2aparent(A,dan)1aparent(fay,dan)C3A = fay 2b1aparent(jim,dan)C4A = jim

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = dan; A = fay; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C12a, 2b 1banc(A,dan) :- parent(P,dan), anc(A,P)C2 2aparent(A,dan)1aparent(fay,dan)C3A = fay 2b1aparent(jim,dan)C4A = jim 3aparent(P,dan)21b

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = dan; A = fay; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C12a, 2b 1banc(A,dan) :- parent(P,dan), anc(A,P)C2 2aparent(A,dan)1aparent(fay,dan)C3A = fay 2b1aparent(jim,dan)C4A = jim 3aparent(P,dan)21b 4aanc(A,fay)1banc(A,fay) :- parent(A,fay)C1

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = dan; A = fay; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C12a, 2b 1banc(A,dan) :- parent(P,dan), anc(A,P)C2 2aparent(A,dan)1aparent(fay,dan)C3A = fay 2b1aparent(jim,dan)C4A = jim 3aparent(P,dan)21b 4aanc(A,fay)1banc(A,fay) :- parent(A,fay)C1 5aparent(A,fay)4afail

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = dan; A = fay; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C12a, 2b 1banc(A,dan) :- parent(P,dan), anc(A,P)C2 2aparent(A,dan)1aparent(fay,dan)C3A = fay 2b1aparent(jim,dan)C4A = jim 3aparent(P,dan)21b 4aanc(A,fay)1banc(A,fay) :- parent(A,fay)C15a parent(A,fay)4afail

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = dan; A = fay; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C12a, 2b 1banc(A,dan) :- parent(P,dan), anc(A,P)C2 2aparent(A,dan)1aparent(fay,dan)C3A = fay 2b1aparent(jim,dan)C4A = jim 3aparent(P,dan)21b 4aanc(A,fay)1banc(A,fay) :- parent(A,fay)C15a 4b1banc(A,fay) :- parent(P,fay), anc(A,P)C2 5aparent(A,fay)4afail

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = dan; A = fay; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C12a, 2b 1banc(A,dan) :- parent(P,dan), anc(A,P)C2 2aparent(A,dan)1aparent(fay,dan)C3A = fay 2b1aparent(jim,dan)C4A = jim 3aparent(P,dan)21b 4aanc(A,fay)1banc(A,fay) :- parent(A,fay)C15a 4b1banc(A,fay) :- parent(P,fay), anc(A,P)C2 5aparent(A,fay)4afail 6aparent(P,fay)54b

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = dan; A = fay; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C12a, 2b 1banc(A,dan) :- parent(P,dan), anc(A,P)C2 2aparent(A,dan)1aparent(fay,dan)C3A = fay 2b1aparent(jim,dan)C4A = jim 3aparent(P,dan)21b 4aanc(A,fay)1banc(A,fay) :- parent(A,fay)C15a 4b1banc(A,fay) :- parent(P,fay), anc(A,P)C26a 5aparent(A,fay)4afail 6aparent(P,fay)54b

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = dan; A = fay; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C12a, 2b 1banc(A,dan) :- parent(P,dan), anc(A,P)C2 2aparent(A,dan)1aparent(fay,dan)C3A = fay 2b1aparent(jim,dan)C4A = jim 3aparent(P,dan)21b 4aanc(A,fay)1banc(A,fay) :- parent(A,fay)C15a 4b1banc(A,fay) :- parent(P,fay), anc(A,P)C26a 5aparent(A,fay)4afail 6aparent(P,fay)54b 7aanc(A,jim)1banc(A,jim) :- parent(A,jim)C1

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = dan; A = fay; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C12a, 2b 1banc(A,dan) :- parent(P,dan), anc(A,P)C2 2aparent(A,dan)1aparent(fay,dan)C3A = fay 2b1aparent(jim,dan)C4A = jim 3aparent(P,dan)21b 4aanc(A,fay)1banc(A,fay) :- parent(A,fay)C15a 4b1banc(A,fay) :- parent(P,fay), anc(A,P)C26a 5aparent(A,fay)4afail 6aparent(P,fay)54b 7aanc(A,jim)1banc(A,jim) :- parent(A,jim)C18a 7b1banc(A,jim) :- parent(P,jim), anc(A,P)C29a 8aparent(A,jim)4afail 9aparent(P,jim)54b

SLG resolution for definite programs anc(A,D) :- parent(A,D). %C1 anc(A,D) :- parent(P,D), anc(A,P). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = jim; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- parent(A,dan)C12a, 2b 1banc(A,dan) :- parent(P,dan), anc(A,P)C2fail 2aparent(A,dan)1aparent(fay,dan)C3A = fay 2b1aparent(jim,dan)C4A = jim 3aparent(P,dan)21b 4aanc(A,fay)1banc(A,fay) :- parent(A,fay)C15a 4b1banc(A,fay) :- parent(P,fay), anc(A,P)C26a 5aparent(A,fay)4afail 6aparent(P,fay)54b 7aanc(A,jim)1banc(A,jim) :- parent(A,jim)C18a 7b1banc(A,jim) :- parent(P,jim), anc(A,P)C29a 8aparent(A,jim)4afail 9aparent(P,jim)54b

SLG resolution for definite programs  Avoids redundant repeated proofs of same subgoals  ex, calculates each fibonacci number exactly once  Also avoids left-recursive loops:  The table allows detection of goal G that is a variant of the goal G’ that called it  Looping is avoided by suspending G and moving to the following goals of the clause body and then backpropagating to G the variable bindings necessary to prove these following goals  When G becomes sufficiently instantiated to no longer be a variant of G’, its proof resumes

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 3aanc(A,P’)2a suspend

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 3aanc(A,P’)2a suspend 4aparent(P’,P)1aparent(fay,dan)C3P’= fay

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 3aanc(A,P’)2a suspend 4aparent(P’,P)1aparent(fay,dan)C3P’= fay, P = dan 4b1aparent(jim,dan)C4P’= jim, P = dan

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 3aanc(A,P’)2a suspend 3banc(A,fay)3aanc(A,fay) :- anc(A,P’’), anc(P’’,fay)C1 4aparent(P’,P)1aparent(fay,dan)C3P’= fay 4b1aparent(jim,dan)C4P’= jim

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 3aanc(A,P’)2a suspend 3banc(A,fay)3aanc(A,fay) :- anc(A,P’’), parent(P’’,fay)C1 4aparent(P’,P)1aparent(fay,dan)C3P’= fay 4b1aparent(jim,dan)C4P’= jim 5aanc(A,P’’)2a3asuspend

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 3aanc(A,P’)2a suspend 3banc(A,fay)3aanc(A,fay) :- anc(A,P’’), parent(P’’,fay)C1 4aparent(P’,P)1aparent(fay,dan)C3P’= fay 4b1aparent(jim,dan)C4P’= jim 5aanc(A,P’’)2a3asuspend 6aparent(P’’,fay)3afail

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 3aanc(A,P’)2a suspend 3banc(A,fay)3aanc(A,fay) :- anc(A,P’’), parent(P’’,fay)C1fail 3b3aanc(A,fay) :- parent(A,fay)C2 4aparent(P’,P)1aparent(fay,dan)C3P’= fay 4b1aparent(jim,dan)C4P’= jim 5aanc(A,P’’)2a3asuspend 6aparent(P’’,fay)3afail

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 3aanc(A,P’)2a suspend 3banc(A,fay)3aanc(A,fay) :- anc(A,P’’), parent(P’’,fay)C1fail 3b3aanc(A,fay) :- parent(A,fay)C2 4aparent(P’,P)1aparent(fay,dan)C3P’= fay 4b1aparent(jim,dan)C4P’= jim 5aanc(A,P’’)2a3asuspend 6aparent(P’’,fay)3afail 7aparent(A,fay)6a

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 3aanc(A,P’)2a suspend 3banc(A,fay)3aanc(A,fay) :- anc(A,P’’), parent(P’’,fay)C1fail 3b3aanc(A,fay) :- parent(A,fay)C2fail 4aparent(P’,P)1aparent(fay,dan)C3P’= fay 4b1aparent(jim,dan)C4P’= jim 5aanc(A,P’’)2a3asuspend 6aparent(P’’,fay)3afail 7aparent(A,fay)6a

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 3aanc(A,P’)2a suspendfail 3banc(A,fay)3aanc(A,fay) :- anc(A,P’’), parent(P’’,fay)C1fail 3b3aanc(A,fay) :- parent(A,fay)C2fail 4aparent(P’,P)1aparent(fay,dan)C3P’= fay 4b1aparent(jim,dan)C4P’= jim 5aanc(A,P’’)2a3asuspend 6aparent(P’’,fay)3afail 7aparent(A,fay)6a

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 2b1aanc(A,P) :- parent(A,P)C2 3aanc(A,P’)2a suspendfail 3banc(A,fay)3aanc(A,fay) :- anc(A,P’’), parent(P’’,fay)C1fail 3b3aanc(A,fay) :- parent(A,fay)C2fail 4aparent(P’,P)1aparent(fay,dan)C3P’= fay 4b1aparent(jim,dan)C4P’= jim 5aanc(A,P’’)2a3asuspend 6aparent(P’’,fay)3afail 7aparent(A,fay)6a

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 2b1aanc(A,P) :- parent(A,P)C2 3aanc(A,P’)2a suspendfail 3banc(A,fay)3aanc(A,fay) :- anc(A,P’’), parent(P’’,fay)C1fail 3b3aanc(A,fay) :- parent(A,fay)C2fail 4aparent(P’,P)1aparent(fay,dan)C3P’= fay 4b1aparent(jim,dan)C4P’= jim 5aanc(A,P’’)2a3asuspend 6aparent(P’’,fay)3afail 7aparent(A,fay)6a 8aparent(A,P)4a4a,4b

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 2b1aanc(A,P) :- parent(A,P)C24a, 4b 3aanc(A,P’)2a suspendfail 3banc(A,fay)3aanc(A,fay) :- anc(A,P’’), parent(P’’,fay)C1fail 3b3aanc(A,fay) :- parent(A,fay)C2fail 4aparent(P’,P)1aparent(fay,dan)C3P’= fay, P = dan 4b1aparent(jim,dan)C4P’= jim, P = dan 5aanc(A,P’’)2a3asuspend 6aparent(P’’,fay)3afail 7aparent(A,fay)6a 8aparent(A,P)4a4a,4b

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C1 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 2b1aanc(A,P) :- parent(A,P)C24a, 4b 3aanc(A,P’)2a suspendfail 3banc(A,fay)3aanc(A,fay) :- anc(A,P’’), parent(P’’,fay)C1fail 3b3aanc(A,fay) :- parent(A,fay)C2fail 4aparent(P’,P)1aparent(fay,dan)C3P’= fay, P = dan 4b1aparent(jim,dan)C4P’= jim, P = dan 5aanc(A,P’’)2a3asuspend 6aparent(P’’,fay)3afail 7aparent(A,fay)6a 8aparent(A,P)4a4a,4b 9aparent(fay,dan) yes

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C14a 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 2b1aanc(A,P) :- parent(A,P)C24a, 4b 3aanc(A,P’)2a suspendfail 3banc(A,fay)3aanc(A,fay) :- anc(A,P’’), parent(P’’,fay)C1fail 3b3aanc(A,fay) :- parent(A,fay)C2fail 4aparent(P’,P)1aparent(fay,dan)C3P’= fay, P = dan 4b1aparent(jim,dan)C4P’= jim, P = dan 5aanc(A,P’’)2a3asuspend 6aparent(P’’,fay)3afail 7aparent(A,fay)6a 8aparent(A,P)4a4a,4b 9aparent(fay,dan)1aparent(fay,dan)yes

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C14a 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 2b1aanc(A,P) :- parent(A,P)C24a, 4b 3aanc(A,P’)2a suspendfail 3banc(A,fay)3aanc(A,fay) :- anc(A,P’’), parent(P’’,fay)C1fail 3b3aanc(A,fay) :- parent(A,fay)C2fail 4aparent(P’,P)1aparent(fay,dan)C3P’= fay, P = dan 4b1aparent(jim,dan)C4P’= jim, P = dan 5aanc(A,P’’)2a3asuspend 6aparent(P’’,fay)3afail 7aparent(A,fay)6a 8aparent(A,P)4a4a,4b 9aparent(fay,dan)1aparent(fay,dan)yes 10aparent(jim,dan)1aparent(jim,dan)yes

SLG resolution for definite programs anc(A,D) :- anc(A,P), parent(P,D). %C1 anc(A,D) :- parent(A,D). %C2 parent(fay,dan). %C3 parent(jim,dan). %C4 ?- anc(A,dan). A = fay; A = dan; no ?- gidgoalvgcginstantiated rulernanswers 1aanc(A,dan)anc(A,dan) :- anc(A.P), parent(P,dan)C14a, 4b 2aanc(A,P)1aanc(A.P) :- anc(A,P’), parent(P´,P)C1 2b1aanc(A,P) :- parent(A,P)C24a, 4b 3aanc(A,P’)2a suspendfail 3banc(A,fay)3aanc(A,fay) :- anc(A,P’’), parent(P’’,fay)C1fail 3b3aanc(A,fay) :- parent(A,fay)C2fail 4aparent(P’,P)1aparent(fay,dan)C3P’= fay, P = dan 4b1aparent(jim,dan)C4P’= jim, P = dan 5aanc(A,P’’)2a3asuspend 6aparent(P’’,fay)3afail 7aparent(A,fay)6a 8aparent(A,P)4a4a,4b 9aparent(fay,dan)1aparent(fay,dan)yes 10aparent(jim,dan)1aparent(jim,dan)yes

HiLog: extending Prolog with high-order syntax  Meta-programming facilities of functional languages  Single language for reasoning and meta-reasoning  Schema browsing in databases Prolog atomsHiLog atoms Prolog Atom Prolog Term Function-Free Term Functional Term Variable Symbol functor arg predicate * * arg HiLog Atom HiLog Term Function-Free Term Functional Term Variable Symbol functor arg predicate * * arg Examples of HiLog atoms that are not Prolog atoms: P(a) p(F(a) f(a)(X,Y) p(f(a)(X,Y)) P(F(X))(G(Y))

HiLog: example Prolog program: parent(bob, bill). parent(bill, mary). supervisor(john, mary). supervisor(mary, kathy). anc(A,D) :- parent(A,D). anc(A,D) :- parent(A,C), anc(C,D). boss(B,E) :- supervisor(B,E). boss(B,E) :- supervisor(B,D), boss(D,E). obeys(P,A) :- anc(A,P). obeys(P,A) :- boss(A,P). ?- obeys(mary,X). X=bill; X=bob; X= mary; X=john; no More concise and extensible HiLog program: parent(bob, bill). parent(bill, mary). supervisor(john, mary). supervisor(mary, kathy). relation(parent). relation(supervisor). trans(R)(X, Y) :- R(X, Y) trans(R)(X, Y) :- R(X, Z), trans(R)(Z,Y). obeys(P)(A) :- relation(R), trans(R)(A,P). ?- obeys(mary)(X). X=bill; X=bob; X= mary; X=john; no

HiLog  High-order syntax... ... but first-order semantics (and thus semi-decidable)  Why?  HiLog is merely a very convenient syntactic sugar since:  All HiLog program can be translated into a barely legible, verbose but semantically equivalent Prolog program  How?  Axiomatize predicates and functions with single additional functor apply  Complex terms or variables as functors become first argument of apply  Arguments of these functors become second to last arguments of apply

HiLog to Prolog translation: example parent(bob, bill). parent(bill, kathy). supervisor(john, mary). supervisor(mary, kathy). relation(parent). relation(supervisor). trans(R)(X, Y) :- R(X, Y) trans(R)(X, Y) :- R(X, Z), trans(R)(Z,Y). obeys(P)(A) :- relation(R), trans(R)(A,P) ?- obeys(kathy)(X). X=bill; X=bob; X= mary; X=john; no parent(bob, bill). parent(bill, kathy). supervisor(john, mary). supervisor(mary, kathy). relation(parent). relation(supervisor). apply(trans(R),X,Y) :- apply(R,X,Y). apply(trans(R),X,Y) :- apply(R,X,Y), apply(trans(R),Z,Y). apply(obeys(P,A)) :- relation(R), apply(trans(R),A,P)). ?- apply(obeys(john),X). X=bill; X=bob; X= mary; X=john; no

Constraint Logic Programming (CLP)  CSP libraries’ strengths:  Specification level, declarative programming for predefined sets of constraints over given domains  Efficient  Extensive libraries cover both finite domain combinatorial problems and infinite numerical domain optimization problems  CSP libraries’ weaknesses:  Constraint set extension can only be done externally through API using general-purpose programming language  Same problem for mixed constraint problems (ex, mixing symbolic finite domain with real variables) Prolog’s s trengths:  Allows specification level, declarative programming of arbitrary general purpose problems  A constraint is just a predicate  New constraints easily declaratively specified through user predicate definitions  Mixed-domain constraints straightforwardly defined as predicate with arguments from different domains  Prolog’s weakness:  Numerical programming is imperative, not declarative  Very inefficient at solving finite domain combinatorial problem

CLP  Integrate Prolog with constraint satisfaction and solving libraries in a single inference engine  Get the best of both worlds:  Declarative user definition of arbitrary constraints  Declarative definition of arbitrarily mixed constraints  Declarative numerical and symbolic reasoning, seamlessly integrated  Efficient combinatorial and optimization problem solving  Single language to program constraint satisfaction or solving problems and the rest of the application

CLP engine architecture

CLP engine reasoning services