Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
Chapter 2 Syntax and meaning of Prolog Programs type PROLOG symbol, integer, real, char domains variable name = type predicates relation(variable name, variable name, …) goal run(X). clauses relation(value,value,…). conclusion :- condition. conclusion if condition. 344-302 LP and Prolog 2 Chapter 2 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 344-302 LP and Prolog 3 Chapter 2 PREDEFINED DOMAINS char 1 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" 344-302 LP and Prolog 4 Chapter 2 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" 344-302 LP and Prolog Include a file during compilation. 5 Chapter 2 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) 344-302 LP and Prolog 6 Chapter 2 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) 344-302 LP and Prolog 7 Chapter 2 EDITOR display(String) (string) - (i) edit(InputString,OutputString) (string,string) - (i,o) edit(InputString,OutputString,Headstr,Headstr2,Msg,P os,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,Ms g,Pos,Helpfilename,RetStatus) (string,string,string,string,string,integer,string ,integer) - (i,o,i,i,i,i,i,o) 344-302 LP and Prolog 8 Chapter 2 WINDOW SYSTEM makewindow(WindowNo,ScrAtt,FrameAtt,Framestr,Row,Col umn,Height,Width) (integer,integer,integer,string,integer,integer,in teger,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) 344-302 LP and Prolog 9 Chapter 2 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,_) 344-302 LP and Prolog 10 Chapter 2 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 344-302 LP and Prolog 11 Chapter 2 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, 344-302 LP and Prolog 12 5 <> 9 Chapter 2 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). FACTS likes(john, football). likes(tom, baseball). likes(eric, swimming). likes(mark, tennis). likes(bill, Activity) if likes(mark, Activity) :- 344-302 LP and Prolog likes(tom, Activity). likes(ellen, Activity). 13 RULES Chapter 2 bear.pro ?black(X),big(X) predicates ?brown(X),big(X) big(symbol) small(symbol) ?big(X),black(X) brown(symbol) black(symbol) gray(symbol) dark(symbol) ?black(X),big(X) No solution ?brown(X),big(X) X=bear ?big(X),black(X) No solution clauses big(bear). big(elephant). small(cat). brown(bear). black(cat). gray(elephant). dark(Z) :- black(Z). dark(Z) :- brown(Z). 344-302 LP and Prolog 14 Chapter 2 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). 344-302 LP and Prolog 15 Chapter 2 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. 344-302 LP and Prolog 16 Chapter 2 sister Z parent X parent Y sister For any X and Y, X is a sister of Y if 1. Both X and Y have the same parent, and 2. X is a female. sister(X,Y) :- parent(Z,X), parent(Z,Y), female(X). 344-302 LP and Prolog 17 Chapter 2 predecessor A parent B parent C parent D parent E 344-302 LP and Prolog 18 Chapter 2 predecessor A predecessor(X,Z) :parent(X,Y1), parent(Y1,Y2), parent(Y2,Z). parent B parent C predecessor(X,Z) :parent(X,Y1), parent(Y1,Y2), parent(Y2,Y3), parent(Y3,Z). parent D parent E 344-302 LP and Prolog predecessor(X,Z) :parent(X,Y), parent(Y,Z). 19 Chapter 2 Parent1.Pro predicates pam parent(symbol,symbol) predecessor(symbol,symbol) bob clauses parent(pam,bob). ann parent(tom,bob). parent(bob,ann). parent(ann,jim). jim parent(jim,joe). parent(joe,john). joe parent(john,jack). parent(tom,liz). john jack 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) 344-302 LP and Prolog parent(Y3,Z). 20 Chapter 2 predecessor A 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 B parent C parent D parent E 344-302 LP and Prolog 21 Chapter 2 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). 344-302 LP and Prolog 22 Chapter 2 ISA Relationship Animal kingdom isa Plant kingdom isa isa Animal isa isa Dog Human Cat isa isa Suwit plant isa Sunee Mew 344-302 LP and Prolog Flower isa isa Toop isa Rose 23 isa Carnation Chapter 2 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). 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. isa(white,cat). is(X,Z) :- isa(X,Z). is(X,Z) :- isa(X,Y), is(Y,Z). 344-302 LP and Prolog 24 Chapter 2