Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
201801 CSE240 Lecture 23
1. CSE240 – Introduction to
Programming Languages
Lecture 23:
Programming with Prolog II
Javier Gonzalez-Sanchez
javiergs@asu.edu
javiergs.engineering.asu.edu
Office Hours: By appointment
2. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 2
Install a Prolog Interpreter
SWI - Prolog
http://www.swi-prolog.org/download/stable
3. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 3
Install a Prolog Interpreter
To enter rules from the command line, type this :
[user].
This puts you in a mode where you can enter facts and rules. Otherwise you get this kind of
message:
ERROR: Undefined procedure: (DWIM could not correct goal)
You can then enter facts (or rules) e.g. :
father(me,sarah).
After having entered the knowledge, type CONTROL-D to come back to the mode where you
can enter questions. Then you can ask:
?- father(me,X).
X = sarah
To quit:
halt.
5. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 5
Natural Language Predicate Logic Type of Predicate
A car is fast. fast(car). fact
A rose is red. red(rose). fact
Bill likes the car if the car is fast. likes(bill, car) :- fast(car). rule
Humidity is high if it rains high(humidity):- rains(). rule
Jane is mother of Elaine mother_of(jane, elaine). fact
Jane is mother of Mike mother_of(jane, mike). fact
David is father of Jesse father_of(david, jesse). fact
Jesse is father of Obed father_of(jesse, obed). fact
Grandmother X of Z if (X is mother of Y
and (Y is mother of Z or Y is father of Z)
grandmother_of(X, Z) :- mother_of(X, Y),
( mother_of(Y, Z); father_of(Y, Z) ).
rule
6. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 6
Predicate Logic
• Facts: What is known, e.g.,
Bill likes car and bike, and he travels with one of them
likes(bill, car), likes(bill, bike)
travels(bill, car); travels(bill, bike)
• Rules: What you can infer from the given facts. Rules enable you to
infer facts from other facts, e.g.,
Bill is the father of Joe, if Joe is the son of bill.
father(bill, joe) :- son(joe, bill).
, means AND
; means OR
7. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 7
Prolog
• PROLOG (PROgramming LOGic)
• Interpreter.
• Deductive database: set of statements and a deduction system.
• Facts and Rules
• Queries
• Upper-Case variables
• Lower-Case constants and names
8. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 8
Simple Facts
• Facts and rules creates a database, so, step 1, provide data
% facts:
exam_easy.
arizona_hot.
july_4_is_independence_day.
• step 2, run queries
?- exam_easy.
true
?- arizona_hot.
true
?- july_4_is_independence_day
true
9. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 9
Facts with Arguments
likes(john,mary).
eats(fred,oranges).
age(john,32).
age(ian,2).
?- eats(fred,oranges).
true
?- eats(mike,apples).
false
?- age(ian,two).
false
10. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 10
Facts with Arguments
likes(john,mary).
eats(fred,oranges).
age(john,32).
age(ian,2).
?- eats(fred,X).
X = oranges
?- eats(mike,X).
false
?- age(ian,Y).
Y = 2
?- likes (WhoX, WhoY).
WhoX = john,
WhoY = mary
11. Javier Gonzalez-Sanchez | CSE 240 | Fall 2017 | 11
Facts and Rules
% rules and facts:
mortal(X) :- human(X).
human(socrates).
?- mortal(socrates).
true
?- mortal(P).
P = socrates
12. CSE240 – Introduction to Programming Languages
Javier Gonzalez-Sanchez
javiergs@asu.edu
Fall 2017
Disclaimer. These slides can only be used as study material for the class CSE240 at ASU. They cannot be distributed or used for another purpose.