Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 Logic Programming Text Book • Prolog Programming, A First Course, by Paula Brna, 2001 • References: – Leon Starling.

Download Report

Transcript Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 Logic Programming Text Book • Prolog Programming, A First Course, by Paula Brna, 2001 • References: – Leon Starling.

Logic Programming
Dr. Yasser Nada
Fall 2010/2011
Lecture 1
Logic Programming
1
Text Book
• Prolog Programming, A First Course,
by Paula Brna, 2001
• References:
– Leon Starling and Ehud Shapiro, The art of
Prolog. 1989.
– Ivan Brotko, Prolog Programming for Artificial
Intelligence. 1986.
Logic Programming
2
Course Description
• This course will introduce the theory and
concepts of logic programming. Prolog will
be studied as a logic programming
approach for declarative logic
programming.
Logic Programming
3
Course Objectives
• Upon completion of the course, student
should:
– Knowledge of concepts and theories of logic
programming.
– Become familiar with Prolog language syntax.
– Be able to solve problems in Prolog.
– Be able to use knowledge in a suitable form to
be used in Prolog language..
Logic Programming
4
Course Policy
• Students are expected to participate and attend the class
in time. Students are responsible to submit assignments
in time. Exams will be a combination of lectures in class
and homework assignments. Late homework submission
will be subject to penalties. If an assignment is submitted
late, a penalty of 10 percent of that assignment's grade
will be assessed for each day it is late. A homework
paper will not be accepted after graded papers have
been returned, after a solution has been distributed, or
after the final examination.
Logic Programming
5
Absence Policy
• Students absent that exceeds (25%
lectures) are being considered dropped
from the course. After 3 lectures absent a
warning is issued for the student. After
another 3 lectures absent student will be
dropped from the class.
Logic Programming
6
Examination
• There will be no makeup exams except
under emergencies. If a student cannot
attend the exam, then student must make
arrangement with the instructor prior to
the planned absence. The emergency
makeup exam will be either written or
oral.
Logic Programming
7
Grading
Assignment
10%
Attendance
10%
Midterm
30%
Final
50%
Logic Programming
8
Logic Programming
9
What is Logic Programming
• Two types of programming languages:
– Imperative languages (C, C++, VB, C#, Java, …).
– Declarative languages (prolog, lisp, …).
• Logic programming is a type of
programming called declarative
programming.
Logic Programming
10
Imperative Languages
• They are also called procedural languages.
• Programmer gives all steps to solve a problem. He
must know an algorithm to solve a problem.
• Example: find average of list of numbers:
• Input total
• Input number
• Average = total/number
• Print Average
Logic Programming
11
Declarative Languages
• Programmer describe the problem without the
control flow, then the system will solve the
problem.
• Programmer must know the relations between
objects to solve the problem.
• Programmer does not need to know an
algorithm to solve the problem.
• Declarative languages consists of:
– Program or theory.
– Computation which is deduction.
Logic Programming
12
First Order Predicate
• Represent relation between objects:
•
•
•
•
own(ahmed, car).
friend(ali, ahmed).
father(sami, ali).
brother(kareem, ali).
Logic Programming
13
Prolog
• It is a declarative language (not completely
declarative) based on first order logic.
• Prolog means Programming in Logic.
• It consists of:
– Facts.
– Rules.
– Goal
• Used in AI: NLP, expert systems, games,
automated answering system, ….
Logic Programming
14
Prolog
• Prolog Program consist of:
– Facts: asserts a property to an object, or relation
between two or more objects:
• parent(ali, salem).
• own(ali, car).
– Rules: allow to infer a relationship or a property
based on a precondition:
• parent(X,Y) :- father(F,X), father(P,Y).
– Goal: Query or questions asked by user.
• parent(ali, Y).
Logic Programming
15
Atoms
• Atom is
– a sequence of alphanumeric characters
– usually starting with lower case letter
– or, a string enclosed in single quotes
– They represent constants.
• Examples:
– ali, salem, a, b, c, a1, a2, b3, c5, …
– ‘Mr. Ali’, ’Dr. Sultan’
Logic Programming
16
Variables
• A variable is
• a sequence of alphanumeric characters
• usually starting with an uppercase letter
• Examples:
• X, Y, Z, Parent, Child, Foo, X1, Y1, X2, X5, X6,
….
Logic Programming
17
Predicates
• A predicate has the form
– p(t1,...,tn)
– where p is an atom and t1...tn are variables or atoms.
– n is the number of arguments of predicate p (written
as p/n which represents the signature of predicate).
– Predicates can be of 0-arg, 1-arg, 2-arg, …
• Examples:
– father(ali, ahmed).
Logic Programming
18
Prolog Program Example
Predicate name
like(ali, car).
like(ahmed, car).
Predicate arguments
father(salem, ali).
Predicate End
father(salem, ahmed).
brother(X,Y) :- father(P,X), father(P,Y).
friend(X,Y) :- like(X,C), like(Y,C).
and
if
Logic Programming
19
Goals
• A goal is a conjunction of predicates
– p(X,Y),q(Y,Z),t(Z,W).
– A goal is the question or query asked by the
user. Prolog will try to find an answer for the
goal.
Logic Programming
20
Answers
• Given a goal, Prolog searches for
answer(s):
– “yes” (possibly with answer substitution)
– “no” (if no answer or no more answer found).
– Substitutions are bindings of variables that
make goal true.
Logic Programming
21
Examples
• ?- father(X,ali).
– X = salem ? ;
– no
• ?- father(X,Y), brother(Y,Z).
– X = salem, Y = ali, Z = ahmed
– yes
– ?;
– X = salem, Y=ahmed, Z=ali
– Yes
– ?;
– no
Logic Programming
male(ali).
male(ahmed).
male(salem).
father(salem, ali).
father(salem, ahmed).
brother(X,Y) :- father(P,X),
father(P,Y),
male(X), male(Y).
22
Rules
• A rule is an assertion of the form
– p(ts) :- q(ts’), ..., r(ts’’).
– where ts, ts’, ts’’ are atoms or variables
• “p(ts) holds if q(ts’) holds and ... And r(ts’’)
holds”
• Example:
– brother(X,Y) :- father(Z,X), father(Z,Y).
Logic Programming
23
Prolog
• You can try prolog by downloading prolog
compiler:
– Ciao:
http://clip.dia.fi.upm.es/Software/Ciao/Latest/download.html
– Choose Windows version,
• For Windows Vista: current version 1.13.0.
• For Windows XP: select version Ciao1.10p5Win32.zip
Logic Programming
24
Ciao installation under Windows
XP
•
•
•
•
After downloading ciao-1.10pWin32.zip, extract it in C:\
Then goto C:\Ciao-1.10p5Win32
Double click on the file: install.bat
Then type ciaosh at the DOS prompt, the prolog prompt
appears: ?-
Logic Programming
25
Ciao installation under Windows
Vista
• After downloading CiaoDE-1.13.0-XXXX.exe, double click
on it to run.
• At the desktop you will find a file: ciaosh shortcut. Double
click on it and the Prolog prompt appears:
• ?-
Logic Programming
26
Miscellaneous
• Comments
– % single line comment
– /* multiple
line
comment */
• To quit Ciao, type
– ?- exit.
– (or just control-D)
Logic Programming
27