CSE (c) S. Tanimoto, 2004 Logic Programming

Slides:



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

Chapter 11 :: Logic Languages
Standard Logical Equivalences
Prolog The language of logic. History Kowalski: late 60’s Logician who showed logical proof can support computation. Colmerauer: early 70’s Developed.
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.
Outline Recap Knowledge Representation I Textbook: Chapters 6, 7, 9 and 10.
Computability and Complexity 9-1 Computability and Complexity Andrei Bulatov Logic Reminder (Cnt’d)
CSE (c) S. Tanimoto, 2008 Propositional Logic
Constraint Logic Programming Ryan Kinworthy. Overview Introduction Logic Programming LP as a constraint programming language Constraint Logic Programming.
Inference and Resolution for Problem Solving
CSE (c) S. Tanimoto, 2007 Unification 1 Unification Predicate calculus rules are sometimes so general that we need to create specializations of.
CSE (c) S. Tanimoto, 2005 Logic Programming 1 Logic Programming Outline: Motivation Examples: The Grandmother relation Formulation in Prolog Logic,
INFERENCE IN FIRST-ORDER LOGIC IES 503 ARTIFICIAL INTELLIGENCE İPEK SÜĞÜT.
Logic Programming Languages
Notes for Chapter 12 Logic Programming The AI War Basic Concepts of Logic Programming Prolog Review questions.
Conjunctive normal form: any formula of the predicate calculus can be transformed into a conjunctive normal form. Def. A formula is said to be in conjunctive.
1 Chapter 8 Inference and Resolution for Problem Solving.
Cs7120 (Prasad)L16-Meaning1 Procedural and Declarative Meaning of Prolog
CSE S. Tanimoto Horn Clauses and Unification 1 Horn Clauses and Unification Propositional Logic Clauses Resolution Predicate Logic Horn Clauses.
CS Introduction to AI Tutorial 8 Resolution Tutorial 8 Resolution.
Programming Languages Tucker and Noonan – 2e Chapter 15 – Part 1 Logic Programming “Q: How many legs does a dog have if you call its tail a leg? A: Four.
CS 603: Programming Languages Lecture 25 Spring 2004 Department of Computer Science University of Alabama Joel Jones.
The AI War LISP and Prolog Basic Concepts of Logic Programming
Dr. Muhammed Al-Mulhem ICS An Introduction to Logical Programming.
Automated Reasoning Early AI explored how to automated several reasoning tasks – these were solved by what we might call weak problem solving methods as.
Introduction to Prolog. Outline What is Prolog? Prolog basics Prolog Demo Syntax: –Atoms and Variables –Complex Terms –Facts & Queries –Rules Examples.
CS 337 Programming Languages Logic Programming I (Logic, Intro to Prolog)
© Kenneth C. Louden, Chapter 12 - Logic Programming Programming Languages: Principles and Practice, 2nd Ed. Kenneth C. Louden.
CSE (c) S. Tanimoto, 2008 Predicate Calculus II 1 Predicate Calculus 2 Outline: Unification: definitions, algorithm Formal interpretations and satisfiability.
CSE 341, S. Tanimoto Logic Programming Intro - 1 Logic Programming Introduction Motivation. Sample logic programs.
1-1 An Introduction to Logical Programming Sept
Artificial Intelligence CIS 342 The College of Saint Rose David Goldschmidt, Ph.D.
Introduction to Prolog Asst. Prof. Dr. Senem Kumova Metin Revised lecture notes of “Concepts of Programmig Languages, Robert W. Sebesta, Ch. 16”
Copyright 1999Paul F. Reynolds, Jr. Foundations of Logic Programming.
Logical Agents. Outline Knowledge-based agents Logic in general - models and entailment Propositional (Boolean) logic Equivalence, validity, satisfiability.
CSE (c) S. Tanimoto, 2001 Logic Programming
By P. S. Suryateja Asst. Professor, CSE Vishnu Institute of Technology
Prolog a declarative language
CS 3304 Comparative Languages
CSE 341, S. Tanimoto Logic Programming -
Proposition & Predicates
Horn Clauses and Unification
Logic Programming Languages
Prolog a declarative language
List Manipulation in Prolog
Prolog a declarative language
Introduction to Logic Programming and Prolog
Prolog a declarative language
Chapter 11 :: Logic Languages
Horn Clauses and Unification
Horn Clauses and Unification
Introduction to Logic Programming and Prolog
CSE (c) S. Tanimoto, 2004 Unification
CSE S. Tanimoto Unification
Horn Clauses and Unification
List Manipulation in Prolog
Introduction to Prolog
CSE (c) S. Tanimoto, 2002 Unification
Introduction to Prolog
CSE (c) S. Tanimoto, 2002 Logic Programming
Horn Clauses and Unification
CS2136: Paradigms of Computation
Encoding Knowledge with First Order Predicate Logic
Encoding Knowledge with First Order Predicate Logic
RESOLUTION.
Introduction to Logic Programming and Prolog
Encoding Knowledge with First Order Predicate Logic
Introduction to Logic Programming and Prolog
Prolog Concepts.
PROLOG.
Presentation transcript:

CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming Outline: Motivation. Examples: The Grandmother relation. Formulation in Prolog. Formulation using Lisp syntax (Mock Prolog). List manipulation using logic. Logic, clauses, and Horn clauses. Unification. The Backtracking Search Resolver. CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming Motivation 1. Reduce the programming burden. 2. System should simply accept the necessary information and the objective (goal), and then figure out its own solution. 3. Have a program that looks more like its own specification. 4. Take advantage of logical inference to automatically get many of the consequences of the given information. CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming Sample Problem For someone (call him or her X) to be the grandmother of someone else (call him or her Y), X must be the mother of someone (call him or her Z) who is a parent of Y. Someone is a parent of another person, if that someone is either the mother or the father of the other person. Mary is the mother of Stan. Gwen is the mother of Alice. Valery is the mother of Gwen. Stan is the father of Alice. The question: Who is a grandmother of Alice? CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

Sample Prolog Program: grandmother.pl grandmother(X, Y) :- mother(X, Z), parent(Z, Y). parent(X, Y) :- mother(X, Y). parent(X, Y) :- father(X, Y). mother(mary, stan). mother(gwen, alice). mother(valery, gwen). father(stan, alice). CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming Sample Prolog Session Welcome to SWI-Prolog (Version 3.3.2) Copyright (c) 1990-2000 University of Amsterdam. All rights reserved. For help, use ?- help(Topic). or ?- apropos(Word). ?- [grandmother]. % grandmother compiled 0.00 sec, 1,312 bytes Yes ?- grandmother(X, alice). X = mary ; X = valery ; No ?- CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

Example with Lisp Syntax ; courses.lsp Some prerequisite relationships ((prereq cse142 cse143)) ((prereq cse143 cse373)) ((prereq cse373 cse415)) ; To prove X must come before Y, it’s ; enough to show that X is a prereq. for y. ((before X Y) (prereq X Y)) ; Alternatively, one can show X must come ; before Y by showing that for some Z, ; X is a prereq of Z and Z comes before y. ((before X Y) (prereq X Z) (before Z Y)) ; Before(x,y) v ~Prereq(x,z) v ~Before(z,y) ; ( <head> <-- <atomic formula 1> <af2> ...<afn>) CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming A Session (load ”prolog.lsp” ) (setq *database* ’( ((prereq cse142 cse143)) . . . ) ) (query ’((prereq cse142, X))) X=CSE143 CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming A session (cont) (query a ’(prereq X Y)) X = CSE142; Y = CSE143; X = CSE143; Y = CSE373; X = CSE373; Y = CSE415; CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming A session (cont) (query ’(before X cse373)) X = cse143; X = cse142 ; CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

Lists in Prolog: Transformations can be Expressed Declaratively colors([r, g, b]). ?- colors(L). L = [r, g, b] ?- colors([X|Y]). X = r, Y = [g, b] % X is the head. Y is the tail. ?- mylist([a, [b, c]]). CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

Defining Predicates on Lists car([X|L], X). cdr([X|L], L). cons(X, L, [X|L]). ?- car([a, b, c], X). X = a ?- cdr([a, b, c], X). X = [b, c] ?- cons(a, [b, c], X). X = [a, b, c] CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming concat a.k.a. append concat([], L, L). concat([X|L1], L2, [X|L3]) :- concat(L1, L2, L3). ?- concat([a, b, c], [d, e], X). X = [a, b, c, d, e] ?- concat(X, [d, e], [a, b, c, d, e]). X = [a, b, c] CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming concat used backwards ?- concat(X, Y, [x, y, z]). X = [] Y = [x, y, z] ; X = [x] Y = [y, z] ; X = [x, y] Y = [z] ; X = [x, y, z] Y = [] ; No CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

Logic Prog. vs Functional Prog. Functional programming: evaluation is one-way. Logic programming: evaluation can be two-way. CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

Steps in Writing a Logic Program 1. Formulate assertions in English and translate them into Logic, then into Prolog or Mock Prolog. or 2. Program directly in Prolog or Mock Prolog. CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming Predicate Logic “Every Macintosh computer uses electricity.” (all x) (Macintosh(x) implies UsesElectricity(x)) variables: x, y, z, etc. constants: a, b, c, etc. function symbols: f, g, etc. Predicate symbols: P, Q, Macintosh, UsesElectricity quantifiers: forall, exists Logical connectives: not, implies, and, or. ~, ->, &, v. CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming Clause Form (all x) (Macintosh(x) -> UsesElectricity(x) UsesElectricity(x) v Not Macintosh(x). Any boolean formula can be put into conjunctive normal form (CNF). If not Y then X and not Z. Y or (X & not Z) (Y or X & (Y or not Z) (X v Y) & (Y v ~Z) clauses: (X v Y), (Y v ~Z) X, Y, and ~Z are called literals. Each clause is a disjunction of literals. CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming Horn Clauses Horn clause: at most one unnegated literal (X v Y) is not a Horn clause. (Y v ~Z) is a Horn clause. “If X is the mother of Y and Y is a parent of Z, then X is a grandmother of Z.” (m(X,Y) & p(Y, Z)) -> g(X,Z). grandmother(X, Z) provided mother(X, Y) and parent (Y, Z) g(X,Z) :- m(X,Y), p(Y,Z). ; Edinburgh Prolog syntax grandmother(X, Z) :- % head mother(X, Y), % subgoal 1 parent(Y, Z). % subgoal 2 CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

How Does Matching Work in Prolog? Literals are matched using a method called unification. The scope of a variable in Prolog is a single clause. Unification involves substituting “terms” for variables. CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

Unification of Literals A substitution is a set of term/variable pairs. { f(a)/x, b/y, z/w } A unifier for a pair of literals is a substitution that when applied to both literals, makes them identical. P(x, a), P(f(a), y) have the unifier { f(a)/x, a/y } P(x), P(y) have the unifier { a/x, a/y }, but they also have the unifier { x/y }. The latter is more general because after unifying with { x/y} we get P(x) whereas with the other it is P(a), yet we can obtain the latter from the former with an additional substitution { a/x }. CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

Horn-Clause Resolution Example of resolution with the grandmother rules: g(X, Z) :- m(X, Y), p(Y, Z). m(X, Y) :- p(X, Y), f(X). g(X, Z) :- p(X, Y), f(X), p(Y, Z). more generally, from: P :- Q1, Q2. Q1 :- R1, R2. we obtain the resolvent: P :- R1, R2, Q2 CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming

A Backtracking Horn-Clause Resolver Maintain the rules in a database of rules. Accept a query (goal) as a positive unit clause, e.g., P(a, b). Put this goal on the subgoal list. Repeatedly try to satisfy the next clause on the subgoal list as follows: Find a rule in the database whose head unifies with the subgoal. Apply the same unifier to the literals in the body of that rule and replace the subgoal by these new literals. If the subgoal list is empty, stop. The combined set of unifiers includes the solution. CSE 415 -- (c) S. Tanimoto, 2004 Logic Programming