Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 1 Logic Programming Outline: Motivation Examples: The Grandmother relation Formulation in Prolog Logic,

Similar presentations


Presentation on theme: "CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 1 Logic Programming Outline: Motivation Examples: The Grandmother relation Formulation in Prolog Logic,"— Presentation transcript:

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

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

3 CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 3 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?

4 CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 4 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).

5 CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 5 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 ?-

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

7 CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 7 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.

8 CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 8 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.

9 CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 9 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

10 CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 10 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.

11 CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 11 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 } because P(x, a)  = P(f(a), a) P(f(a), y)  = P(f(a), a) Here L  means the result of applying all of the elementary substitutions in  to the literal L.

12 CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 12 Unification of Literals (cont) 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 }.

13 CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 13 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

14 CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 14 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.

15 CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 15 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]]).

16 CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 16 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]

17 CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 17 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]

18 CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 18 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

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


Download ppt "CSE 415 -- (c) S. Tanimoto, 2005 Logic Programming 1 Logic Programming Outline: Motivation Examples: The Grandmother relation Formulation in Prolog Logic,"

Similar presentations


Ads by Google