27
Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

  • Upload
    may-day

  • View
    224

  • Download
    1

Embed Size (px)

DESCRIPTION

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. 3 Logic Programming

Citation preview

Page 1: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

Logic Programming

Dr. Yasser Nada Fall 2010/2011

Lecture 1

1Logic Programming

Page 2: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

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.

2Logic Programming

Page 3: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

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.

3Logic Programming

Page 4: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

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..

4Logic Programming

Page 5: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

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.

5Logic Programming

Page 6: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

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.

6Logic Programming

Page 7: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

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.

7Logic Programming

Page 8: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

Grading

8Logic Programming

Assignment 10%

Attendance 10%

Midterm 30%

Final 50%

Page 9: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

9Logic Programming

Page 10: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

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.

10Logic Programming

Page 11: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

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

11Logic Programming

Page 12: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

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.

12Logic Programming

Page 13: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

First Order Predicate • Represent relation between objects:

• own(ahmed, car).• friend(ali, ahmed).• father(sami, ali).• brother(kareem, ali).

13Logic Programming

Page 14: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

• 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, ….

14

Prolog

Logic Programming

Page 15: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

• 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).

15

Prolog

Logic Programming

Page 16: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

• 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’

16

Atoms

Logic Programming

Page 17: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

• 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,

….

17

Variables

Logic Programming

Page 18: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

• 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).

18

Predicates

Logic Programming

Page 19: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

like(ali, car).like(ahmed, car).father(salem, ali).father(salem, ahmed).brother(X,Y) :- father(P,X), father(P,Y).friend(X,Y) :- like(X,C), like(Y,C).

19

Prolog Program Example

Logic Programming

Predicate name

Predicate arguments

Predicate End

if

and

Page 20: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

• 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.

20

Goals

Logic Programming

Page 21: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

• 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.

21

Answers

Logic Programming

Page 22: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

• ?- 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

22

Examples

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).

Page 23: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

• 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).

23

Rules

Logic Programming

Page 24: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

• 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 Ciao-

1.10p5Win32.zip

24

Prolog

Logic Programming

Page 25: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

• 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: ?-

25

Ciao installation under Windows XP

Logic Programming

Page 26: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

• 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:

• ?-

26

Ciao installation under Windows Vista

Logic Programming

Page 27: Logic Programming Dr. Yasser Nada Fall 2010/2011 Lecture 1 1 Logic Programming

• Comments– % single line comment– /* multiple line

comment */• To quit Ciao, type

– ?- exit.– (or just control-D)

27

Miscellaneous

Logic Programming