Prolog Programming Volume 2 - PowerPoint PPT Presentation

About This Presentation
Title:

Prolog Programming Volume 2

Description:

[the, cardinal], [pulled, [off]], [each, [plum, coloured], shoe] Exercises ... – PowerPoint PPT presentation

Number of Views:54
Avg rating:3.0/5.0
Slides: 29
Provided by: williamc4
Category:

less

Transcript and Presenter's Notes

Title: Prolog Programming Volume 2


1
Prolog Programming(Volume 2)
  • Dr W.F. Clocksin

2
Lists
  • Lists are the same as other languages (such as
    ML) in that a list of terms of any length is
    composed of list cells that are consed
    together.
  • The list of length 0 is called nil, written .
  • The list of length n is .(head,tail), where tail
    is a list of length n-1.
  • So a list cell is a functor . of arity 2. Its
    first component is the head, and the second
    component is the tail.

3
Examples of lists
  • nil
  • .(a, nil)
  • .(a, .(b, nil)
  • .(a, .(b, .(c, .(d, .(e. nil)))))
  • .(a,b) (note this is a pair, not a proper list)
  • .(a, X) (this might be a list, or might not!)
  • .(a, .(b, nil)), .(c, nil))

4
They can be written as trees
a
a
nil
b
nil
a
b
a
X
a
b
c
a
a
nil
d
b
nil
e
nil
5
Prolog Syntax for Lists
  • Nil is written .
  • The list consisting of n elements t1, t2, ,tn is
    written t1, t2, ,tn.
  • .(X,Y) is written XY
  • X is written X
  • The term .(a, .(b, .(c,Y))) is written a,b,cY.
  • If Y is instantiated to , then the term is a
    list, and can be written a,b,c or simply
    a,b,c.

6
Exercises
  • Identify the heads and tails of these lists (if
    any)
  • a, b, c
  • a
  • the, cat, sat
  • the, cardinal, pulled, off, each, plum,
    coloured, shoe

7
Exercises
  • Identify the heads and tails of these lists (if
    any)
  • a b, c
  • a
  • the, cat, sat
  • the, cardinal, pulled, off, each, plum,
    coloured, shoe

8
Exercises
  • Identify the heads and tails of these lists (if
    any)
  • a, b, c
  • a
  • the, cat, sat
  • the, cardinal, pulled, off, each, plum,
    coloured, shoe

9
Exercises
  • Identify the heads and tails of these lists (if
    any)
  • a, b, c
  • a
  • (not a list, so doesnt have head and tail.
    nil is a constant)
  • the, cat, sat
  • the, cardinal, pulled, off, each, plum,
    coloured, shoe

10
Exercises
  • Identify the heads and tails of these lists (if
    any)
  • a, b, c
  • a
  • the, cat sat
  • the, cardinal, pulled, off, each, plum,
    coloured, shoe

11
Exercises
  • Identify the heads and tails of these lists (if
    any)
  • a, b, c
  • a
  • the, cat, sat
  • the, cardinal pulled, off, each, plum,
    coloured, shoe

12
Exercises
  • For each pair of terms, determine whether they
    unify, and if so, to which terms are the
    variables instantiated?
  • X, Y, Z john, likes, fish
  • cat XY
  • X,YZ mary, likes, wine (picture on next
    slide)
  • the,YZ X,answer, is, here
  • X, Y, X a, Z, Z
  • X, Y, X a, X, X

13
Remember
  • A variable may be instantiated to any term.

X
Y
Z
mary
likes
wine

mary, likes, wine X,YZ
14
Fun with Lists (Worksheet 5)
  • / member(Term, List) /
  • member(X, XT).
  • member(X, HT) - member(X, T).
  • Examples
  • ?- member(john, paul, john).
  • ?- member(X, paul, john).
  • ?- member(joe, marx, darwin, freud).
  • ?- member(foo, X).

15
Exercises
  • Here is a mystery predicate. What does it do?
  • mystery(X, A, B) - member(X, A), member(X, B).
  • ?- mystery(a, b, c, a, p, a, l).
  • ?- mystery(b, b, l, u, e, y, e, l, l, o, w).
  • ?- mystery(X, r, a, p, i, d, a, c, t, i, o,
    n).
  • ?- mystery(X, w, a, l, n, u, t, c, h, e, r, r,
    y).

16
A Brief Diversion intoAnonymous Variables
  • / member(Term, List) /
  • member(X, XT).
  • member(X, HT) - member(X, T).
  • member(X, X_).
  • member(X, _T) - member(X, T).

Notice T isnt used
Notice H isnt used
17
A Brief Diversion into Arithmetic
  • The built-in predicate is takes two arguments.
    It interprets its second as an arithmetic
    expression, and unifies it with the first. Also,
    is is an infix operator.
  • ?- X is 2 2 2.
  • X 6
  • ?- 10 is (2 0) 2 ltlt 4.
  • no
  • ?- 32 is (2 0) 2 ltlt 4.
  • yes

18
is
  • But is cannot solve equations, so the
    expression must be ground (contain no free
    variables.
  • ?- Y is 2 X.
  • no
  • ?- X is 15, Y is 2 X.
  • X 15, Y 30.

19
Worksheet 6 Length of a List
  • / length(List, Length) /
  • Naïve method
  • length(, 0).
  • length(HT, N) - length(T, NT), N is NT 1.

20
Worksheet 6
  • / length(List, Length) /
  • Tail-recursive method
  • length(L, N) - acc(L, 0, N).
  • / acc(List, Before, After) /
  • acc(, A, A).
  • acc(HT, A, N) - A1 is A 1, acc(T, A1, N).

21
Exercises
  • ?- length(apple, pear, N).
  • ?- length(alpha, 2).
  • ?- length(L, 3).
  • Modify length to give a procedure sum such that
    sum(L,N) succeeds if L is a list of integers and
    N is their sum.

22
Worksheet 7 Inner Product
  • A list of n integers can be used to represent an
    n-vector (a point in n-dimensional space). Given
    two vectors a and b, the inner product (dot
    product) of a and b is defined
  • As you might expect, there are naïve and
    tail-recursive ways to compute this.

23
Worksheet 7
  • The naïve method
  • inner(, , 0).
  • inner(AAs,BBs,N) -
  • inner(As, Bs, Ns), N is Ns (A B).

24
Worksheet 7
  • Tail-recursive method
  • inner(A, B, N) - dotaux(A, B, 0, N).
  • dotaux(, , V, V).
  • dotaux(AAs,BBs,N,Z) -
  • N1 is N (A B),
  • dotaux(As, Bs, N1, Z).

25
Worksheet 8 Maximum of a List
  • Tail-recursive method has a base case and two
    recursive cases
  • / max(List, Accumulator, Result) /
  • max(, A, A).
  • max(HT, A, M) - H gt A, max(T, H, M).
  • max(HT, A, M) - H lt A, max(T, A, M).
  • How to initialise the accumulator?

26
Worksheet 8
  • maximum(L, M) - max(L, -10000, M).
  • Magic numbers are a bad idea.
  • maximum(L, M) - max(L, minint, M)
  • Need to change definitions of arithmetic.
  • maximum(HT, M) - max(T, H, M).
  • And know that ?- maximum(,X) fails.

27
Worksheet 9
arc
Here we have added a new arc from d to a. If you
use the program from WS 4, some goals will cause
an infinite loop.
  • a(g, h).
  • a(d, a).
  • a(g, d).
  • a(e, d).
  • a(h, f).
  • a(e, f).
  • a(a, e).
  • a(a, b).
  • a(b, f).
  • a(b, c).
  • a(f, c).

a
b
c
e
d
f
g
h

Keep a trail of nodes visited so far. Visit
only legal nodes, not already on the trail.
Represent the trail as an accumulator, an extra
argument of path.
28
Worksheet 9
  • path(X, X, T).
  • path(X, Y, T) -
  • a(X, Z), legal(Z, T), path(Z, Y, ZT).
  • legal(Z, ).
  • legal(Z, HT) - Z \ H, legal(Z, T).
  • Notice that legal is like the negation of member.
Write a Comment
User Comments (0)
About PowerShow.com