Download Chapter

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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
Related documents