Download

Prolog for Dummies






Advertisement
/ 36 []
Download Presentation
Comments
misu
From:
|  
(1458) |   (0) |   (0)
Views: 828 | Added:
Rate Presentation: 0 0
Description:
Prolog for Dummies . Ulf Nilsson Dept of Computer and Information Science Linköping University. Logic programs. A logic program describes individuals and relations between individuals (or properties of individuals). The program is used to answer queries about the world described
Prolog for Dummies

An Image/Link below is provided (as is) to

Download Policy: Content on the Website is provided to you AS IS for your information and personal use only and may not be sold or licensed nor shared on other sites. SlideServe reserves the right to change this policy at anytime. While downloading, If for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.











- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -




Prolog for dummiesSlide 1

Prolog for Dummies

Ulf Nilsson

Dept of Computer and Information Science

Linköping University

Logic programsSlide 2

Logic programs

A logic program describes individuals

and relations between individuals

(or properties of individuals).

The program is used to answer

queries about the world described

in the program.

RelationsSlide 3

Relations

  • Adam is a parent of Bill

  • Paris is the capital of France

  • 5 is greater than 2 plus 2

  • X times 1 is equal to X

  • X is a subset of Y

  • 5 is the maximumof 2 and 5

  • There is an edge from a to b

PropertiesSlide 4

Properties

  • Adam is a parent

  • Adam is male

  • X plus 1 is non-zero

  • Paris is a capital

  • Grass is green

  • The music was loud

QueriesSlide 5

Queries

  • Who is the father of Bill?

  • Is there an edge from a to b?

  • Which town is a capital?

  • Who is male?

Language primitivesSlide 6

Language primitives

  • Constantsadam, paris, 5, 3.14, [], ´Adam’, ...

  • VariablesX, Y, List, _12, _, ...

  • Function symbolsplus/2, +/2, f/1, ...

  • Predicate symbolscapital/2, greater/2, non_zero/1, >/2, ...

TermsSlide 7

Terms

Terms represent individuals

  • Constants

  • Variables

  • Compound terms

  • E.g. paris, X, plus(2,3), plus(2,plus(3,4))

  • Infix notation: 2+3

Atomic formulasSlide 8

Atomic formulas

Atomic formulas describe relations:

  • If p is a predicate letter of arity n and t1,...,tn are terms then p(t1,...,tn) is an atomic formula.

  • E.g. capital(paris,france) greater(X,2)

  • Infix notation: X > 2

Logic programs1Slide 9

Logic Programs

  • A logic program is a set of clauses:

    • facts

    • rules

  • The program is used to answer queries.

FactsSlide 10

Facts

  • A fact is an expression of the form:

    A.

    where A is an atomic formula.

  • Examples:

    edge(a, X).

    parent(adam, bill).

Interpretation factsSlide 11

Interpretation Facts

  • Consider a fact A.

  • Declarative (logical) reading:

    For all variables, A is true.

  • Procedural (operational) reading:

    A is solved.

RulesSlide 12

Rules

  • A rule is an expression of the form:

    A0 :- A1, ... , An.

    where each Ai is an atomic formula.

  • Examples:

    path(X,Y) :- edge(X,Y).

    father(X,Y) :- parent(X,Y), male(X).

Interpretation rulesSlide 13

Interpretation Rules

  • Consider a rule A0 :- A1, ... , An.

  • Declarative (logical) reading:

    For all variables, A0 if A1 and...and An.

  • Procedural (operational) reading:

    To solve A0, first solve A1, then A2 etc.

ExampleSlide 14

Example

gp(X,Y) :- p(X,Z), p(Z,Y).

p(X,Y) :- f(X,Y).

p(X,Y) :- m(X,Y).

f(adam,bill).

f(bill,carl).

m(anne,bill).

Queries1Slide 15

Queries

  • A query is an expression of the form:

    ?- A1, ..., An.

    where n=0,1,2,... and A1, ..., An are atomic formulas.

  • Examples:

    ?- father(X, bill).

    ?- parent(X, bill), male(X).

Interpretation queriesSlide 16

Interpretation Queries

  • Consider a query ?- A1, ... , An.

  • Declarative (logical) reading:

    Are there variables such that A1 and...and An?

  • Procedural (operational) reading:

    First solve A1, then A2 etc

Ground sld resolutionSlide 17

?- B1,...,Bm,A2,...,An.

Ground SLD-Resolution

?- A1,A2,...,An.

A1 :- B1,...,Bm.

where

A1 :- B1,...,Bm is an instantiated program clause.

A derivationSlide 18

?- father(adam,bill)

?- true

A Derivation

parent(X,Y) :-

father(X,Y).

parent(X,Y) :-

mother(X,Y).

father(adam,bill).

mother(anne,bill).

parent(X,Y) :-

father(X,Y).

parent(X,Y) :-

mother(X,Y).

father(adam,bill).

mother(anne,bill).

parent(X,Y) :-

father(X,Y).

parent(X,Y) :-

mother(X,Y).

father(adam,bill).

mother(anne,bill).

?- parent(adam,bill)

Another derivationSlide 19

?- mother(anne,bill)

?- true

Another Derivation

parent(X,Y) :-

father(X,Y).

parent(X,Y) :-

mother(X,Y).

father(adam,bill).

mother(anne,bill).

parent(X,Y) :-

father(X,Y).

parent(X,Y) :-

mother(X,Y).

father(adam,bill).

mother(anne,bill).

parent(X,Y) :-

father(X,Y).

parent(X,Y) :-

mother(X,Y).

father(adam,bill).

mother(anne,bill).

?- parent(anne,bill)

Full sld resolutionSlide 20

B0 :- B1,...,Bm.

?- A1= B0, B1,...,Bm,A2,...,An.

?- (B1,...,Bm,A2,...,An)q.

where:

  • B0 :- B1,...,Bm is a renamed program clause.

  • q is a solution to the equation A1 = B0.

Full SLD-Resolution

?- A1,A2,...,An.

Yet another derivationSlide 21

?- X=X1, bill=Y1, father(X1,Y1).

?- father(X,bill).

?- X=adam, bill=bill.

?- true.

Answer: X=adam

Yet Another Derivation

?- parent(X,bill).

parent(X1,Y1) :- father(X1,Y1).

father(adam,bill).

And another oneSlide 22

X=adam

?- p(bill,Y).

?- f(X,Z1), p(Z1,Y).

?- X=X2, Z1=Y2, f(X2,Y2), p(Z1,Y).

?- bill=X3, Y=Y3, f(X3,Y3).

?- true.

?- X=X1, Y=Y1, p(X1,Z1), p(Z1,Y1).

?- f(bill,Y).

?- bill=bill, Y=carl.

?- X=adam,Z1=bill, p(Z1,Y).

?- p(X,Z1), p(Z1,Y).

Y=carl

And Another One...

?- gp(X,Y).

f(bill,carl).

p(X3,Y3) :- f(X3,Y3).

p(X2,Y2) :- f(X2,Y2).

gp(X1,Y1) :- p(X1,Z1),p(Z1,Y1).

f(adam,bill).

And a failed oneSlide 23

X=bill

?- p(carl,Y).

?- fail.

?- f(X,Z1), p(Z1,Y).

?- X=X2, Z1=Y2, f(X2,Y2), p(Z1,Y).

?- X=bill,Z1=carl, p(Z1,Y).

?- p(X,Z1), p(Z1,Y).

?- X=X1, Y=Y1, p(X1,Z1), p(Z1,Y1).

?- f(carl,Y).

?- carl=X3, Y=Y3, f(X3,Y3).

And a Failed One...

?- gp(X,Y).

p(X3,Y3) :- f(X3,Y3).

f(bill,carl).

p(X2,Y2) :- f(X2,Y2).

gp(X1,Y1) :- p(X1,Z1),p(Z1,Y1).

FAILURE!!!

Sld treeSlide 24

?- p(X,Z),p(Z,Y).

X=anne

X=adam

?- f(X,Z),p(Z,Y).

?- m(X,Z),p(Z,Y).

?- p(bill,Y).

?- p(bill,Y).

?- p(carl,Y).

?- f(carl,Y).

?- m(carl,Y).

?- f(bill,Y).

?- m(bill,Y).

?- f(bill,Y).

?- m(bill,Y).

?- fail.

?- fail.

?- true.

Y=carl

?- fail.

?- true.

Y=carl

?- fail.

SLD-Tree

?- gp(X,Y).

Example1Slide 25

Example

/* or(In1, In2, Out) */

or(0, 0, 0).

or(0, 1, 1).

or(1, 0, 1).

or(1, 1, 1).

/* nand(In1, In2, Out) */

nand(X, Y, Z) :-

and(X, Y, Tmp),

inv(Tmp, Z).

/* inv(In, Out) */

inv(0, 1).

inv(1, 0).

/* and(In1, In2, Out) */

and(0, 0, 0).

and(0, 1, 0).

and(1, 0, 0).

and(1, 1, 1).

DatabaseSlide 26

Database

lecturer(Lecturer,Course) :-

course(Course,_,Lecturer,_).

duration(Course,Length) :-

course(Course,time(_,S,F),_,_),

plus(S,Length,F).

teaches(Lect,Day) :-

course(_, time(Day,_,_), Lect, _).

occupied(Room,Day,Time) :-

course(_,time(Day,S,F),_,Room),

S =< Time,

Time =< F.

% Database

course(logic, time(monday, 8, 10), dave, a12).

...

RecursionSlide 27

b

d

f

a

c

e

g

Recursion

edge(a,b).

edge(a,c).

edge(b,d).

edge(c,d).

edge(d,e).

edge(f,g).

path(Node,Node).

path(Node1,Node3) :-

edge(Node1,Node2),

path(Node2,Node3).

List notationSlide 28

.

.

a

a

.

b

b

c

[]

c

List Notation

.(a, .(b, .(c, [])))

More on list notationSlide 29

More On List Notation

  • The empty list: []

  • A non-empty list: .(X,Y) or [X|Y]

    Syntactic Sugar:

  • [b] instead of [b|[]] and .(b, [])

  • [a,b] instead of [a|[b]] and [a|[b|[]]]

  • [a,b|X] instead of [a|[b|X]]

List manipulationSlide 30

List manipulation

list([ ]).

list([X|Xs]) :- list(Xs).

member(X,[X|Xs]).

member(X,[Y|Ys]) :- member(X,Ys).

append([ ],Ys,Ys).

append([X|Xs],Ys,[X|Zs]) :- append(Xs,Ys,Zs).

List manipulation1Slide 31

List Manipulation

% reverse(A, B)

% B is A in reverse order

reverse([ ],[ ]).

reverse([X|Xs],Zs) :- reverse(Xs,Ys), append(Ys,[X],Zs).

% Alternative version

reverse(Xs,Ys) :- reverse(Xs,[ ],Ys).

reverse([ ],Ys,Ys).

reverse([X|Xs],Acc,Ys) :- reverse(Xs,[X|Acc],Ys).

Insertion sortSlide 32

Insertion Sort

% sort(A,B)

% B is a sorted version of A

sort([X|Xs],Ys) :- sort(Xs,Zs), insert(X,Zs,Ys).

sort([ ],[ ]).

% insert(A,B,C)

% if B is a sorted list, then C is sorted

% and contains all elements in B plus A

insert(X,[ ],[X]).

insert(X,[Y|Ys],[Y|Zs]) :- X > Y, insert(X,Ys,Zs).

insert(X,[Y|Ys],[X,Y|Ys]) :- X =< Y.

Binary treesSlide 33

Binary Trees

% binary_tree(A)

% A is a binary tree

binary_tree(void).

binary_tree(tree(Element,Left,Right)) :-

binary_tree(Left), binary_tree(Right).

% tree_member(A,B)

% A is a node in the tree B

tree_member(X,tree(X,_,_)).

tree_member(X,tree(_,Left,_)) :- tree_member(X,Left).

tree_member(X,tree(_,_,Right)) :- tree_member(X,Right).

Built in predicatesSlide 34

Built In Predicates

  • setof(X, p(X), S)

    ~ S is the set of all X such that p(X)

  • bagof(X, p(X), B)

    ~ B is the sequence of all X such that p(X)

  • findall(X, p(X), B)

    B is the sequence of all X such that p(X)

NegationSlide 35

Negation

  • Prolog contains a weak form of negation

    called “negation as failure”.

  • Written: \+ p(a)

  • A query ?- \+ p(a) succeeds if the query ?- p(a) fails finitely.

  • Robust only when the goal contains no variables. (Use only as a test!)

Example negationSlide 36

a

b

Example Negation

on_top(X) :- \+ blocked(X).

blocked(X) :- on(Y, X).

on(a, b).

%----------------------------

?- on_top(a).

yes


Copyright © 2014 SlideServe. All rights reserved | Powered By DigitalOfficePro