1 / 25

Chapter 2

Chapter 2. Syntax and meaning of Prolog Programs. type symbol, integer, real, char. PROLOG. domains variable name = type predicates relation (variable name, variable name, … ) goal run(X). clauses relation( value ,value, … ).

gaetan
Télécharger la présentation

Chapter 2

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. Chapter 2 Syntax and meaning of Prolog Programs

  2. type symbol, integer, real, char PROLOG domains variable name = type predicates relation(variable name, variable name,…) goal run(X). clauses relation(value,value,…). conclusion :- condition. conclusion if condition. Chapter 2

  3. TURBO PROLOG ftp://172.28.80.6/older/DosProgram/TPROLOG Alt + Enter = Big Screen F1 : Help F2 : Save F3 : Load F6 : Next/Switch F8 : Previous Goal F9 : Compile F10 : Step (For trace) / End Alt + T : Trace ON/OFF Set up  window size  edit Use arrow key to adjust the size Chapter 2

  4. PREDEFINED DOMAINS char1 byte characters integer 2 byte integer numbers real 8 byte floating point numbers symbol strings inserted in the internal symbol table string sequences of chars "hello world\n" Chapter 2

  5. SUMMARY OF PROGRAM SECTIONS Options must precede the other sections CONSTANTS const1 = definition const2 = definition [GLOBAL] DOMAINS dom [,dom] = [reference] declaration1; declaration2 listdom = dom* dom = <basisdom> [GLOBAL] DATABASE [ - <databasename> ] [determ] pred1(....) pred2(.....) GLOBAL PREDICATES [determ|nondeterm] pred1(.........) -(i,i,o,..)(i,o,i,..) [ language c|pascal|fortran ] [ as "name" ] pred2(........) PREDICATES [determ|nondeterm] pred1(.........) pred2(........) CLAUSES p(....):-p1(...), p2(.....), ... . p(....):-p1(...), p2(.....), ... . include"filename" Include a file during compilation. Chapter 2

  6. MISCELLANEOUS random(RealVariable) (real) - (o) random(MaxValue,RandomInt) (integer,integer) - (i,o) sound(Duration,Frequency) (integer,integer) - (i,i) beep date(Year,Month,Day) (integer,integer,integer) - (o,o,o) (i,i,i) time(Hours,Minutes,Seconds,Hundredths) (integer,integer,integer,integer) - (o,o,o,o) (i,i,i,i) trace(on/off) (string) - (i) (o) Chapter 2

  7. ERROR & BREAK CONTROL trap (PredicateCall,ExitCode,Predicate ToCallOnError) exit exit (ExitCode) (integer) - (i) if exit to DOS then the DOS errorlevel task processing variable will contain the value given to the exit predicate. break (on/off) (string) - (i) (o) Chapter 2

  8. EDITOR display(String) (string) - (i) edit(InputString,OutputString) (string,string) - (i,o) edit(InputString,OutputString,Headstr,Headstr2,Msg,Pos,Helpfilename, EditMode,Indent,Insert,TextMode,RetPos,RetStatus) (string,string,string,string,string,integer,string,integer,integer,integer,integer,integer,integer) - (i,o,i,i,i,i,i,i,i,i,i,o,o) If the user saves the text from the editor, HeadStr2 will be used as the file name. editmsg(InputString,OutputString,Headstr,Headstr2,Msg,Pos,Helpfilename,RetStatus) (string,string,string,string,string,integer,string,integer) - (i,o,i,i,i,i,i,o) Chapter 2

  9. WINDOW SYSTEM makewindow(WindowNo,ScrAtt,FrameAtt,Framestr,Row,Column,Height,Width) (integer,integer,integer,string,integer,integer,integer,integer) shiftwindow(WindowNo) (integer) - (i) (o) gotowindow(WindowNo) (integer) - (i) resizewindow(StartRow,NoOfRows,StartCol,NoOfCols) (integer,integer,integer,integer) - (i,i,i,i) colorsetup(Main_Frame) (integer) - (i) Chapter 2

  10. INPUT readln(StringVariable) (string) - (o) readint(IntgVariable) (integer) - (o) readreal(RealVariable) (real) - (o) readchar(CharVariable) (char) - (o) keypressed unreadchar(CharToBePushedBack) (Char) - (i) readterm( Domain, Variable ) (DomainName,Domain) - (i,_) Chapter 2

  11. OUTPUT write( Variable|Constant * ) nl writef( FormatString, Variable|Constant* ) In the format string the following options are known after a percentage sign: %d Normal decimal number. (chars and integers) %u As an unsigned integer. (chars and integers) %R As a database reference number. (database reference numbers) %X As a long hexadecimal number. (strings, database reference numb). %x As a hexadecimal number. (chars and integers). %s Strings. (symbols and strings). %c As a char. (chars and integers). %g Reals in shortest posible format (default for reals) %e Reals in exponetial notation %f Reals in fixed notation %lf Only for C compatibility (fixed reals) \n - newline \t - tabulator \nnn - character with code nnn Chapter 2

  12. PROLOG_HELP ARITHMETIC Arithmetic operators: +, -, *, /, mod, div Relational operators: >, <, =, >=, <=, <>, >< Functions: sin, cos, tan, arctan, ln, log, exp, sqrt, round, trunc, abs EX: 1 + 2 = 2 + 1, X = 5/2, X = 5 mod 2, 5 <> 9 Chapter 2

  13. TURBO PROLOG Use the example from the EXAMPLE directory to try to program. Start with EX03EX01.PRO predicates likes(symbol,symbol) clauses likes(ellen, tennis). likes(john, football). FACTS likes(tom, baseball). likes(eric, swimming). likes(mark, tennis). likes(bill, Activity) if likes(tom, Activity). likes(mark, Activity) :-likes(ellen, Activity). RULES Chapter 2

  14. bear.pro ?black(X),big(X) ?brown(X),big(X) ?big(X),black(X) • predicates • big(symbol) • small(symbol) • brown(symbol) • black(symbol) • gray(symbol) • dark(symbol) • clauses • big(bear). • big(elephant). • small(cat). • brown(bear). • black(cat). • gray(elephant). • dark(Z) :- black(Z). • dark(Z) :- brown(Z). ?black(X),big(X) No solution ?brown(X),big(X) X=bear ?big(X),black(X) No solution Chapter 2

  15. EX04EX02.PRO • domains • brand, color = symbol • age, price = integer • mileage = real • predicates • car(brand, mileage, age, color, price) • clauses • car(chrysler, 130000, 3, red, 12000). • car(ford, 90000, 4, gray, 25000). • car(datsun, 8000, 1, red, 30000). Chapter 2

  16. SUM, MULTIPLY : EX04EX01 • domains • product, sum = integer • predicates • add_em_up(sum, sum, sum) • multiply_em(product, product, product) • clauses • add_em_up(X, Y, Sum) :- Sum = X + Y. • multiply_em(X, Y, Product) :- Product = X * Y. Chapter 2

  17. Z X Y sister parent parent sister For any X and Y, X is a sister of Y if Both X and Y have the same parent, and X is a female. sister(X,Y) :- parent(Z,X), parent(Z,Y), female(X). Chapter 2

  18. A B C E D predecessor parent parent parent parent Chapter 2

  19. A B C E D predecessor predecessor(X,Z) :- parent(X,Y), parent(Y,Z). predecessor(X,Z) :- parent(X,Y1), parent(Y1,Y2), parent(Y2,Z). parent parent predecessor(X,Z) :- parent(X,Y1), parent(Y1,Y2), parent(Y2,Y3), parent(Y3,Z). parent parent Chapter 2

  20. ann bob pam jim john joe jack Parent1.Pro • predicates • parent(symbol,symbol) • predecessor(symbol,symbol) • clauses • parent(pam,bob). • parent(tom,bob). • parent(bob,ann). • parent(ann,jim). • parent(jim,joe). • parent(joe,john). • parent(john,jack). • parent(tom,liz). • predecessor(X,Z) :- parent(X,Z). • predecessor(X,Z) :- parent(X,Y), parent(Y,Z). predecessor(X,Z) :- parent(X,Y1),parent(Y1,Y2),parent(Y2,Z). • predecessor(X,Z) :- parent(X,Y1),parent(Y1,Y2),parent(Y2,Y3) • parent(Y3,Z). Chapter 2

  21. A B C E D predecessor For all X and Z, X is a predecessor of Z if there is a Y such that 1. X is a parent of Y and 2. Y is a predecessor of Z. parent parent parent parent Chapter 2

  22. Parent2.Pro • predicates • parent(symbol,symbol) • predecessor(symbol,symbol) • clauses • parent(pam,bob). • parent(tom,bob). • parent(bob,ann). • parent(ann,jim). • parent(jim,joe). • parent(joe,john). • parent(john,jack). • parent(tom,liz). • predecessor(X,Z) :- parent(X,Z). • predecessor(X,Z) :- parent(X,Y), predecessor(Y,Z). Chapter 2

  23. ISA Relationship Animal kingdom Plant kingdom isa isa isa Animal Human plant isa isa isa isa isa Dog Cat Suwit Sunee Flower isa isa isa isa Toop Mew Rose Carnation Chapter 2

  24. isa1.Pro • predicates • isa(symbol,symbol) • is(symbol,symbol) • clauses • isa(human,animal_kingdom). • isa(plant,plant_kingdon). • isa(flower,plant). • isa(rose,flower). • isa(carnation,flower). • isa(suwit,human). • isa(sunee,human). • isa(dog,animal). • isa(animal,animal_kingdom). • isa(cat,animal). • isa(toop,dog). • isa(mew,cat). • isa(white,cat). For all X and Z, X is a predecessor of Z if there is a Y such that 1. X is a parent of Y and 2. Y is a predecessor of Z. • is(X,Z) :- isa(X,Z). • is(X,Z) :- isa(X,Y), is(Y,Z). Chapter 2

  25. You can't cross the sea merely by standing and staring the water

More Related