1 / 21

Martin Kay Stanford University

Martin Kay Stanford University. Introduction to. Prolog. Topics. Books Starting and stopping Prolog Consulting and reconsulting files Assertions and queries Constants and variables Nondeterminism Lists Facts and rules. Books.

ziven
Download Presentation

Martin Kay Stanford University

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Martin Kay Stanford University Introduction to Prolog

  2. Topics Books Starting and stopping Prolog Consulting and reconsulting files Assertions and queries Constants and variables Nondeterminism Lists Facts and rules

  3. Books • Bratko, I. (1986) Prolog Programming for Artificial Intelligence. International Computer Science Series, Addison Wesley. • Clocksin, W. F. and C. S. Mellish (1981) Programming in Prolog. Springer-Verlag, Berlin. • König, E. and R. Seiffert (1989) Grudkurs Prolog für Linguisten. UTB für Wissenschaft; Uni-Taschenbücher, A. Franke Verlag, Tübingen. • O'Keefe, R. (1990) The Craft of Prolog. MIT Press, Cambridge, Massachusetts. • Ross, P. (1989) Advanced Prolog. Addison Weseley. • Sterling, L. and E. Shapiro (1986) The Art of Prolog. MIT Press, Cambridge, Massachusetts.

  4. Sicstus Prolog Swedish Institute of Computer Science (SICS) Setting the path environment variable (on Leland) elaine27:~> more .cshrc # @(#) Leland Systems .cshrc version 3.0.4 # elaine27:~> more .cshrc # @(#) Leland Systems .cshrc version 3.0.4 # .... set path=( /afs/ir/class/ling138/bin $path) ....

  5. The Herald The Period! Sicstus Prolog Swedish Institute of Computer Science (SICS) 1 ~ sicstus SICStus 2.1 #9: Fri Oct 21 16:31:41 PDT 1994 | ?- halt. 2 ~

  6. b a q p d r c

  7. b a q p d c r

  8. b a q p d c r

  9. b a q p d c r

  10. b a q p d c r Queries

  11. b a q p d c r Queries Now we can make this a real link!

  12. b a q p d c r

  13. Consulting files | ?- consult(maize). {consulting /tmp_mnt/tilde/kay/pl/parsers/maize.pl...} {/tmp_mnt/tilde/kay/pl/parsers/maize.pl consulted, 160 msec 1056 bytes} yes | ?- consult(‘maize.pl’). [maize]. [‘maize.pl’].

  14. Facts and Rules past(dive, dived). past_tense(dive, dove). pres_part(dive, diving). sing3(dive, dives). past_tense(write, wrote). past_part(write, written). pres_part(write, writing). sing3(write, writes). • • • • past_part(Verb, Word) :- past(Verb, Word). past_tense(Verb, Word) :- past(Verb, Word). Head Goal

  15. The =/2 operator | ?- X=foo. X = foo ? yes | ?- X=Y. Y = X ? yes | ?- foo(A, b)=foo(a, B). A = a, B = b ? yes

  16. Unification | ?- p(a, Q, b) = p(A, A, A). no | ?- p(a, Q, R) = p(A, A, A). A = a, Q = a, R = a yes | ?- p(q(a, a), r(X, X), s(Y, Y))=p(X, Y, Z). X = q(a,a), Y = r(q(a,a),q(a,a)), Z = s(r(q(a,a),q(a,a)),r(q(a,a),q(a,a))) ? yes

  17. Ordered Pairs | ?- X=[a | [b | [c | []]]]. X=[a, b, c] yes | ?- X=[a | b]. X=[a | b] yes

  18. member/2 | ?- member(b, [a,b,c]). yes | ?- member(X, [a, b, c]). X = a ? ; X = b ? ; X = c ? ; no | ?- member(a, [X, b, Y]). X = a ? ; Y = a ? ; no member(H, [H|_]). member(X, [_|T]) :- member(X, T).

  19. append/3 | ?- append([a, b, c], [p, q, r], X). X = [a,b,c,p,q,r] ? yes | ?- append([a, b, c], X, [a, b, c, d, e, f]). X = [d,e,f] ? yes | ?- append(X, [d, e, f],[a, b, c, d, e, f]). X = [a,b,c] ? yes append([], A, A). append([C|D], A, [C|B]) :- append(D, A, B).

  20. (Naive) reverse/2 | ?- reverse([a, b, c], X). X = [c,b,a] ? yes | ?- reverse(X, [a, b, c]). X = [c,b,a] ? yes | ?- X=[a, b, B, A], reverse(X, X). A = a, B = b, X = [a,b,b,a] ? yes reverse([], []). reverse([H|T], Rev) :- reverse(T, RT), append(RT, [H], Rev).

  21. Interrupting Prolog foo(a, b). ^C Prolog interruption (h for help)? a {Execution aborted} | ?-

More Related