Top Banner
Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming
28

Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

Jan 21, 2016

Download

Documents

Anthony Stokes
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

Logic Programming

Dr. Yasser Ahmed Nada Fall 2010/2011

Lecture 2

1Logic Programming

Page 2: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

• Prolog program consists of:– Clauses:• Facts: asserts some property of an object, or

relation between two or more objects.– e.g. parent(ali,ahmed).

• Rules: allow us to infer that a property or relationship holds based on preconditions.– e.g. parent(X,Y) :- father(X,Y).

– Goals.

2

Review of Last Lecture

Logic Programming

Page 3: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

• Both facts and rules are predicates definition.– Predicate is the name of the relation

between objects that occurs before the parenthesis.• parent (ali, ahmed).

– Predicate can have 0, 1, 2, 3, … arguments.

3

Review of Last Lecture

Logic Programming

Predicate name arguments

Page 4: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

• Arguments consists of terms which are:– Atoms (constants).– Variables.– Compound terms (Explained later).

4

Arguments

Logic Programming

Page 5: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

Ali like icecream likes(ali, icecream).

salem is tall tall(salem).

Ahmed hits ali with a bat hit(ahmed, ali, bat).

Zero is a number number(0).

Ali friend of ahmed if ali like ahmed friend(ali, ahmed) :- like(ali, ahmed).

X is greater than Y if X>Y greater(X,Y) :- X>Y.

Salem is father of ali if salem is parent of ali and ali is male.

Father(salem,ali) :- parent(salem, ali), male(ali).

5

Examples:

Logic Programming

Page 6: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

6

Rules

Logic Programming

• Rules are of the form:– Head :- body.– Head is a predicate.– Body is a conjunction of predicates.– e.g. friend(X,Y) :- like(X,C), like(Y,C).

– Comma means and.

bodyhead

Page 7: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

7

Or Rules

Logic Programming

• different rules for the same head means or:– parent(X,Y) :- father(X,Y).– parent(X,Y) :- mother(X,Y).

– X is parent of Y if (X is father of Y) or (X is mother of Y).

Page 8: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

8

Clauses

Logic Programming

• A clause consists of a head.• And sometimes a body.– Facts does not have body, they are always

true.

Page 9: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

9

Ex. 2.6

Logic Programming

• Convert each proposition into prolog clauses:– a b.– a b c.

– a b c.– a (b c) d

– a b.

b :- a.

c :- a.c :- b.

c :- a, b.

d :- a,b.d :- a,c.

b :- a.

Page 10: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

10

Terms

Logic Programming

• Atoms: constants:– Number• Integer: 0, 1, 2, …• Float: 1.3, 1E5, …

– Symbolic: • Starts with lower case letter: ali, ahmed, sun, …

– String: between single quote: ‘ali salem’

• Variables: starts with capital letter: X, Y, …

Page 11: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

11

Prolog Data Objects

Logic Programming

Data objects

Simple objects structure

Atoms

variables

numbers

constants

Page 12: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

12

Structure

Logic Programming

• They are compound objects:– date(10,oct,2010).

• Structure consists of functor and argument.– e.g. structure date(10, oct, 2010)• Functor: date.• Arguments: 10 oct 2010.

Page 13: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

13

Structure Example

Logic Programming

• book(‘prolog programming’, brna, 2000).• book(‘C++ programming’, john, 2005).• book(‘Data Structure’, mike, 2007).

• findBook(Name, Author, Year) :- book(Name,Author,Year).

? findBook(X, Y, 2000).X=‘prolog programming’ Y=‘brna’ ? ;No?

Page 14: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

14

Multiple Clauses

Logic Programming

• Clauses that have same predicate name in the head.wealthy(ali). healthy(ahmed). wise(salem).

happy(P) :- wealthy(P).happy(P) :- healthy(P).happy(P) :- wise(P).

? happy(P).P=ali ? ;P=ahmed ? ;P=salem ? ;no?

Page 15: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

15

Ordering of Clause

Logic Programming

• Prolog tries clauses from top to bottom and from left to right.

? happy(P).P=ali ? ;P=ahmed ? ;P=salem ? ;no?

wealthy(ali). healthy(ahmed). wise(salem).happy(P) :- wealthy(P).happy(P) :- healthy(P).happy(P) :- wise(P).

wealthy(ali). healthy(ahmed). wise(salem).happy(P) :- healthy(P).happy(P) :- wealthy(P).happy(P) :- wise(P).

? happy(P).P=ahmed ? ;P=ali ? ;P=salem ? ;no?

Page 16: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

16

Example

Logic Programming

• uses(ali, compiler, sun). uses(ali, compiler , pc).• uses(ali, compiler ,mac). uses(ali, editor , sun).• uses(ali, editor , pc). uses(ali, diary, pc).• uses(ahmed, editor ,mac). uses(ahmed, spreadsheet ,mac).• uses(salem, database, pc). uses(salem, compiler , pc).• uses(salem, editor , pc).

• needs(compiler , 128) . needs(editor , 512) .• needs(diary, 64) . needs(spreadsheet , 640) .• needs(database, 8192) .

answer (Program, Memory ) :−uses(Person, Program, mac), needs(Program, Memory ).

Program=compiler Memory=128Program=editor Memory=512Program=spreadsheet Memory=640.

Find all programs and Memory usage that works in mac computers?

Database

Page 17: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

17

Example

Logic Programming

• uses(ali, compiler, sun). uses(ali, compiler , pc).• uses(ali, compiler ,mac). uses(ali, editor , sun).• uses(ali, editor , pc). uses(ali, diary, pc).• uses(ahmed, editor ,mac). uses(ahmed, spreadsheet ,mac).• uses(salem, database, pc). uses(salem, compiler , pc).• uses(salem, editor , pc).

• needs(compiler , 128) . needs(editor , 512) .• needs(diary, 64) . needs(spreadsheet , 640) .• needs(database, 8192) .

What the programs that requires more than 256KB?

prg(P) :- needs(P,M), M>256.

P=editorP=spreadsheetP=database

Selection

Database

Page 18: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

18

Example

Logic Programming

• uses(ali, compiler, sun). uses(ali, compiler , pc).• uses(ali, compiler ,mac). uses(ali, editor , sun).• uses(ali, editor , pc). uses(ali, diary, pc).• uses(ahmed, editor ,mac). uses(ahmed, spreadsheet ,mac).• uses(salem, database, pc). uses(salem, compiler , pc).• uses(salem, editor , pc).

• needs(compiler , 128) . needs(editor , 512) .• needs(diary, 64) . needs(spreadsheet , 640) .• needs(database, 8192) .

personProgram(Person, Program) :- uses(Person, Program, M).

Person=ali Program=compilerPerson=ali Program=compiler…

Database

Projection

What programs does each person use?

Page 19: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

19

Example

Logic Programming

• uses(ali, compiler, sun). uses(ali, compiler , pc).• uses(ali, compiler ,mac). uses(ali, editor , sun).• uses(ali, editor , pc). uses(ali, diary, pc).• uses(ahmed, editor ,mac). uses(ahmed, spreadsheet ,mac).• uses(salem, database, pc). uses(salem, compiler , pc).• uses(salem, editor , pc).

• needs(compiler , 128) . needs(editor , 512) .• needs(diary, 64) . needs(spreadsheet , 640) .• needs(database, 8192) .

How much memory does the editor need?

editorMem(editor, M) :- needs(editor,M).

M=512

Database

Page 20: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

20

Example

Logic Programming

• uses(ali, compiler, sun). uses(ali, compiler, pc).• uses(ali, compiler, mac). uses(ali, editor, sun).• uses(ali, editor, pc). uses(ali, diary, pc).• uses(ahmed, editor ,mac). uses(ahmed, spreadsheet ,mac).• uses(salem, database, pc). uses(salem, compiler , pc).• uses(salem, editor , pc).

• needs(compiler , 128) . needs(editor , 512) .• needs(diary, 64) . needs(spreadsheet , 640) .• needs(database, 8192) .

Which programs are used by two different people on the same machine?

twoDiff(R) :- uses(P1, R, M1), uses(P2, R, M1), P1 \= P2.

R=compilerR= editor

Database

Page 21: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

21

Example

Logic Programming

• uses(ali, compiler, sun). uses(ali, compiler, pc).• uses(ali, compiler, mac). uses(ali, editor, sun).• uses(ali, editor, pc). uses(ali, diary, pc).• uses(ahmed, editor ,mac). uses(ahmed, spreadsheet ,mac).• uses(salem, database, pc). uses(salem, compiler , pc).• uses(salem, editor , pc).

• needs(compiler , 128) . needs(editor , 512) .• needs(diary, 64) . needs(spreadsheet , 640) .• needs(database, 8192) .

What programs are used by Ali but not by Ahmed?

prgUsed(P) :- uses(ali, P, M1), not uses(ahmed, P, M2).P=compilerP= compilerP=compilerP=diary

Database

Page 22: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

22

Unification

Logic Programming

• A substitution is a mapping from variables to terms.

• Given two terms t and u.– A unifier is a substitution that make t and u

equal.

Page 23: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

23

Unification

Logic Programming

• Find a unifier for – p(X, g(X,Z)) and p(c, g(X,Y)).– Match predicate names: p.– Match first arguments: X=c.– Match second argument: g(c,Z) and g(c,Y).• Match predicate name: g• Match first argument: c.• Match second argument: Z = Y.

– Unifier is {X/c, Z/Y}.

Page 24: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

24

Unification Algorithm

Logic Programming

• Function Unify(s,t): – If s and t are constants then

• If s=t then return success• Else return fail.

– If s is a variable:• If s is in t then return fail.• Else substitute t with s, return success.

– If t is a variable:• If t is in s then return fail.• Else substitute t with s, return success.

– If s is in the form p(a1, a2, …, an) and t is in the form p(b1,b2, …, bn) then• For each argument ai and bi, return unify(ai, bi).

– Else fail.

Page 25: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

25

Unification

Logic Programming

• Find a unifier for – p(a, g(a,Z)) and p(X, g(c,Y)).– Match predicate names: p.– Match first arguments: X=a.– Match second argument: g(a,Z) and g(c,Y).• Match predicate name: g• Match first argument: a c, fail.

– Can not be unified.

Page 26: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

26

Unification

Logic Programming

• Find a unifier for – point(A,B) = point(1,2).– point(A,B)=point(X,Y,Z).– plus(2,2) = 4.

– Book(name(‘a’), auth(‘b’), year(2000)) = book(A, auth(A), year(Y)).

A=1, B=2Does not unify

Does not unify

Does not unify

Page 27: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

27

Homework

Logic Programming

• What is the unifier in the following:– c=letter(c).– paris=X.– foo(S)=foo(see).– like(ali, book(‘c++’,’john’,2010))=like(W,B).– f(1)=F.– name(Family)=ali.– times(2,2)=Four.– 5*3=15.

Page 28: Logic Programming Dr. Yasser Ahmed Nada Fall 2010/2011 Lecture 2 1 Logic Programming.

28

Questions

Logic Programming