Download presentation

Presentation is loading. Please wait.

Published byKamryn Brinkworth Modified over 2 years ago

1
1Lecture 12 Introduction to Prolog SWI-Prolog

2
2Lecture 12 Introduction to Prolog Welcome to SWI-Prolog (Version 4.0.9) Copyright (c) 1990-2000 University of Amsterdam. Copy policy: GPL-2 (see www.gnu.org) For help, use ?- help(Topic). or ?- apropos(Word). ?- SWI-Prolog You may query Prolog now. Use the built-in Predicate “halt” to exit Prolog.

3
3Lecture 12 Introduction to Prolog ?- append([abc,def],[ghi,lmn],L). L = [abc, def, ghi, lmn] Yes ?- append([abc,def],L,[abc,def,ghi,lmn]). L = [ghi, lmn] Yes ?- Query mode

4
4Lecture 12 Introduction to Prolog ?- [user]. |: Do not forget the period at the end of your input. At the “|:” prompt, type in what you want entered into your database. male(john). female(mary). father(john,mary). great(massey). has_a_job(mary). After the last fact is entered and at the “|:” prompt, enter a ctrl-D to exit the consult mode. An example is shown on the next slide. Consult mode You can enter consult mode by typing in “[user]” at the “?-” Prompt:

5
5Lecture 12 Introduction to Prolog ?- [user]. |: likes(tom,jerry). |: likes(mary,john). |: likes(tom,mouse). |: likes(tom,jerry). |: likes(jerry,cheeze). |: likes(mary,fruit). |: likes(john,book). |: knows(mary,book). |: knows(tom,john). |: % user compiled 0.01 sec, 64 bytes Yes ?- listing. likes(tom, jerry). likes(mary, john). likes(tom, mouse). likes(tom, jerry). likes(jerry, cheeze). likes(mary, fruit). likes(john, book). knows(mary,book). knows(tom,john). Yes

6
6Lecture 12 Introduction to Prolog listing. listing(likes/2). Listing your predicates

7
7Lecture 12 Introduction to Prolog ?- listing(likes/2). /* we could have said “listing(likes).” in this case*/ likes(tom, jerry). likes(mary, john). likes(tom, mouse). likes(tom, jerry). likes(jerry, cheeze). likes(john,book). ?- listing(knows). knows(mary,book). knows(tom,john).

8
8Lecture 12 Introduction to Prolog trace. notrace. Or simply n. spy(likes/2). nospy Tracing your program

9
9Lecture 12 Introduction to Prolog Call: (7) likes(_G332, _G333) ? creep Exit: (7) likes(tom, jerry) ? creep X = tom Y = jerry ; Redo: (7) likes(_G332, _G333) ? creep Exit: (7) likes(mary, john) ? creep X = mary Y = john ; Redo: (7) likes(_G332, _G333) ? creep Exit: (7) likes(tom, mouse) ? creep X = tom Y = mouse ; Redo: (7) likes(_G332, _G333) ? creep Exit: (7) likes(tom, jerry) ? creep X = tom Y = jerry ; Redo: (7) likes(_G332, _G333) ? creep Exit: (7) likes(jerry, cheeze) ? creep ?- trace. Yes [trace] ?- likes(X,Y).

10
10Lecture 12 Introduction to Prolog X = jerry Y = cheeze ; Redo: (7) likes(_G332, _G333) ? creep Exit: (7) likes(mary, fruit) ? creep X = mary Y = fruit ; Redo: (7) likes(_G332, _G333) ? creep Exit: (7) likes(john, book) ? creep X = john Y = book ; Fail: (7) likes(_G332, _G333) ? creep No

11
11Lecture 12 Introduction to Prolog Structures

12
12Lecture 12 Introduction to Prolog ?- owns(john,book(prolog,author( _ ),year( X ),edition( _ ))),X >1990. owns(john,book(prolog,author(clocksin_and_mellish),year(1994),edition(4))). owns(victoria,book(prolog,author(bratko),year(2001),edition(3))). owns(john,book(prolog,clocksin_and_mellish)). owns(victoria,book(prolog,bratko)). owns(john, book). owns(victoria, book). owns(george,book).

13
13Lecture 12 Introduction to Prolog Arithmetic

14
14Lecture 12 Introduction to Prolog ?- A is 2+3, B is A-1, C is A*2, D is C/B, E is C // B. A = 5 B = 4 C = 10 D = 2.5 E = 2 +additionX + Y - subtractionX - Y *multiplicationX * Y /divisionX / Y //division (integer)X // Y modmodulo (remainder)X mod Y **powerX ** Y isequalsZ is X + Y Arithmetic Operators

15
15Lecture 12 Introduction to Prolog population(us,275000). population(china,1262000). population(nz,4000). Population(india,1000000). land(us,3000). land(china,4000). land(nz,250). land(india,3288). concen(X,Y):- population(X,P), land(X,L), Y is P / L.

16
16Lecture 12 Introduction to Prolog ?- concen(X,Y). X = us Y = 91.6667 Yes ?- concen(X,Y). X = us Y = 91.6667 ; X = china Y = 315.5 ; X = nz Y = 16 ; X = india Y = 304.136 ; No

17
17Lecture 12 Introduction to Prolog Comparison

18
18Lecture 12 Introduction to Prolog X \= Y True if X not equal to Y X < Y True if X is less than Y X > Y True if X is greater than Y X =< Y True if X is less than or equal to Y X >= Y True if X is greater than or equal to Y Example: Given two positive integers X and Y, their greatest common devisor “D” is found according to the following: if X = Y then D = X if X < Y then D = greatest common devisor of X and Y – X if X > Y then D = do the same as above with X and Y interchanged greatest common devisor of 6 and 6 is 6 greatest common devisor of 27 and 9 is 9 greatest common devisor of 20 and 15 is 5 X = Y True if X equals to Y

19
19Lecture 12 Introduction to Prolog gcd(X,Y,D) :- X < Y, Z is Y – X, gcd(X, Z, D). gcd(X,Y,D) :- Y < X, gcd(Y, X, D). We could have written the last clause above, as gcd(X,Y,D) :- Y < X, Z is X – Y, gcd(Z, Y, D). ?- gcd(20,15,D). D = 5 Yes ?- gcd(0,15,D). ERROR: Out of local stack gcd(X,X,X).

20
20Lecture 12 Introduction to Prolog fact(0,1). fact(N,F) :- N > 0, N1 is N – 1, fact(N1, F1), F is N * F1. ?- edit(fact). % d:/prolog/fact.pl compiled 0.00 sec, 64 bytes Yes ?- fact(6,X). X = 720 Yes ?- fact(3,X). X = 6 Yes Another Example n*(n-1)…2*1 n=1,2,3… n!= 1 n=0

21
21Lecture 12 Introduction to Prolog Lists

22
22Lecture 12 Introduction to Prolog The list is the main data structure in Prolog. A list may be empty: [ ] or it may contain one or more terms (constants, variables or structures). [a,b,c,d,e] [5,8,3,9,7] [the, boy, run] A list can be split into a head and a tail: [H|T]. grades(john, [70,87,90,58]). ?- grades(john, [H|T]). H = 70 T = [87,90,58]

23
23Lecture 12 Introduction to Prolog Heads and tails of lists List Head Tail [1,2,3]1[2,3] [red,blue,[green,yellow]]red[blue,[green,yellow]] [ X+Y, a-b] X+Y[a-b] [the,[boy,run]]the[[boy,run]] [[a],b,c,d][a][b,c,d] [ ] ____

24
24Lecture 12 Introduction to Prolog ?- [a, b, c] = [Head | Tail]. Head = a Tail = [b, c] ?- [the,[boy,run]]=[Head|Tail]. Head = the Tail = [[boy, run]] ?- [a, b, c] = [X, Y | Tail]. X = a Y = b Tail = [c] ?- [a, b, c] = [X|Y,Z]. No

25
25Lecture 12 Introduction to Prolog Converting a structure to a list ?- likes(john,mary) =.. X. X = [likes, john, mary] Anything in double is equivalent to a list of ASCII values: ?- "abc"=X. X = [97, 98, 99]

26
26Lecture 12 Introduction to Prolog member(X,[Y| _ ] ) :- X = Y. member(X, [ _ | Y]) :- member(X, Y). It would be easier to write this as: member(X,[X| _ ]). member(X, [ _ | Y]) :- member(X, Y). ?- member(1, [3,4,5,8,1,9]). Yes ?- member(X, [prolog, c, ada, haskell]). X= prolog; X= c X= ada; X= haskell; No Recursion and Lists

27
27Lecture 12 Introduction to Prolog Other Examples change(you, i). change(are, [am, not]). change(french, australian). change(do, no). change(X, X). /* catchall */ alter([ ], [ ]). alter([H|T], [X|Y]) :- change(H, X), alter(T,Y). ?- alter([you,are,french],R). R = [i, [am, not], australian] Yes ?- alter([you,are,a,computer],R). R = [i, [am, not], a, computer] Yes ?-

28
28Lecture 12 Introduction to Prolog asserta/1. assertz/1 assert/1 retract/1 retractall/1 Example: assertz(fib(N,F)).

29
29Lecture 12 Introduction to Prolog :-dynamic fib fib(1,1). fib(2,1). fib(N,F) :- N > 2, N1 is N-1, fib(N1,F1), N2 is N-2, fib(N2,F2), F is F1 + F2, asserta(fib(N,F)). ?- fib(8, F). F = 21 ?- fib(6,F). F = 8

30
30Lecture 12 Introduction to Prolog F(6) + f(5)f(4) + f(3) f(2) f(2) f(1) + 1 + f(4) f(3) + f(3) f(2) 1 + f(2) f(1) + 1 1 1 1 1

Similar presentations

OK

Introduction to PROLOG ME 409 Lab - 1. Introduction to PROLOG.

Introduction to PROLOG ME 409 Lab - 1. Introduction to PROLOG.

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google

Ppt on abstract art painting Ppt on security features of atmosphere Ppt on company law board Ppt on global warming for class 7 Ppt on cartesian product Ppt on 3d shapes Ppt on new product marketing Ppt on ganga river pollution Ppt on summary writing worksheets Ppt on power sector in india