Top Banner
programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar
45

Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Jan 17, 2016

Download

Documents

Gregory Bailey
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

programmaing in logic

Apurva PatilGayatri KharavlikarMeenakshi BorseManjiri BankarNikita AlaiShruti Govilkar

Page 2: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

PROgramming in LOGicEmphasis on what rather than

how

Problem in Declarative Form

Basic Machine

Logic Machine

Basic Machine

Logic Machine

Page 3: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

LOGIC PROGRAMMING

science of reasoning algorithm = logic + control purely based on rules and facts

artificial intelligence declarative

Page 4: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

HISTORYCreated in 1972 by Philippe Roussel

and Alain ColmerauerBased on Robert Kowalski’s procedural

interpretation of Horn clauses

Page 5: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

TWO TYPES OF PROGRAMMING LANGUAGES

Procedural (BASIC, Fortran, C++, Java)

Declarative (LISP, Prolog) In procedural programming, we tell the

computer how to solve a problem. In declarative programming, we tell the

computer what problem we want solved.

Page 6: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

INTRODUCTION TO PROLOG

Prolog is the most widely used language to have been inspired by logic programming research. Some features:

Prolog uses logical variables. These are not the same as variables in other languages. Programmers can use them as ‘holes’ in data structures that are gradually filled in as computation proceeds.

Page 7: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

…MOREClauses provide a convenient

way to express case analysis and nondeterminism.

Sometimes it is necessary to use control features that are not part of ‘logic’.

A Prolog program can also be seen as a relational database containing rules as well as facts.

Page 8: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

WHAT A PROGRAM LOOKS LIKE/* At the Zoo */ bigger(elephant, horse).bigger(elephant, horse).bigger(horse, donkey).bigger(donkey, dog).bigger(donkey, monkey).

-Query:?- bigger(donkey, dog).Yesis_bigger(X, Y) :- bigger(X, Z), is_bigger(Z, Y).

Page 9: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

PROLOG IS A DECLARATIVE LANGUAGEClauses are statements about what is

true about a problem, instead of instructions how to accomplish the solution.

The Prolog system uses the clauses to work out how to accomplish the solution by searching through the space of possible solutions.

Not all problems have pure declarative specifications. Sometimes extralogical statements are needed.

Page 10: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

A Typical Prolog programCompute_length ([],0).Compute_length ([Head|Tail], Length):-

Compute_length (Tail,Tail_length),Length is Tail_length+1.

High level explanation:The length of a list is 1 plus the length of the tail of the list, obtained by removing the first element of the list.

This is a declarative description of the computation.

Page 11: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Fundamentals(absolute basics for writing Prolog Programs)

Page 12: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

FactsJohn likes Mary

◦ like(john,mary)Names of relationship and objects

must begin with a lower-case letter.Relationship is written first (typically

the predicate of the sentence).Objects are written separated by

commas and are enclosed by a pair of round brackets.

The full stop character ‘.’ must come at the end of a fact.

Page 13: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

More facts

Predicate Interpretation

valuable(gold) Gold is valuable.

owns(john,gold) John owns gold.

father(john,mary) John is the father of Mary

gives (john,book,mary)

John gives the book to Mary

Page 14: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

RulesStatements about objects and their

relationshipsExpess

◦ If-then conditions I use an umbrella if there is a rain use(i, umbrella) :- occur(rain).

◦ Generalizations All men are mortal mortal(X) :- man(X).

◦ Definitions An animal is a bird if it has feathers bird(X) :- animal(X), has_feather(X).

Page 15: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Syntax<head> :- <body>Read ‘:-’ as ‘if’.E.G.

◦likes(john,X) :- likes(X,cricket).◦“John likes X if X likes cricket”.◦i.e., “John likes anyone who likes

cricket”.Rules always end with ‘.’.

Page 16: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Question Answering in presence of rulesFacts

◦male (ram).◦male (shyam).◦female (sita).◦female (gita).◦parents (shyam, gita, ram).◦parents (sita, gita, ram).

Page 17: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Question Answering: Y/N type: is sita the sister of shyam?

female(sita)parents(sita,M,F) parents(shyam,M,F)

parents(sita,gita,ram)parents(shyam,gita,ram)

success

?- sister_of (sita, shyam)

Page 18: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Complete Syntax of Terms Term

Constant VariableCompound Term

Atom Numberalpha17gross_payjohn_smithdyspepsia+=/=’12Q&A’

01571.6182.04e-27-13.6

likes(john, mary)book(dickens, Z, cricket)f(x)[1, 3, g(a), 7, 9]-(+(15, 17), t)15 + 17 - t

XGross_payDiagnosis_257_

Names an individual Stands for an individualunable to be named when program is written

Names an individualthat has parts

Page 19: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Compound Terms

parents(spot, fido, rover)

The parents of Spot are Fido and Rover.

Functor (an atom) components (any terms)

It is possible to depict the term as a tree:

parents

roverfidospot

Page 20: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

VariablesVariables always start with an

upper case alphabetic character or an underscore

◦?- likes (john,X).◦?- likes (john, Something).

But not ◦?- likes (john,something)

Page 21: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

ConjunctionsUse ‘,’ and pronounce it as and.Example

◦ Facts: likes(mary,food). likes(mary,tea). likes(john,tea). likes(john,mary).

?- likes(mary,X),likes(john,X).

Page 22: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Both facts and rules are predicate definitions.

‘Predicate’ is the name given to the word occurring before the bracket in a fact or rule:

parent(jane,alan).

By defining a predicate you are specifying relationship between objects.

Predicate Definitions

Predicate name

Page 23: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

ClausesPredicate definitions consist of clauses.

e.g. mother(jane,alan). = Fact parent(P1,P2):- mother(P1,P2). = Rule

A clause consists of a headand sometimes a body.

Facts don’t have a body because they are always true.

head body

Page 24: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

ArgumentsA predicate head consists of a predicate name

and sometimes some arguments contained within brackets and separated by commas.

mother(jane,alan).

Arguments also consist of terms, which can be:Constants e.g. jane,Variables e.g. Person1, orCompound terms

Predicate name Arguments

Page 25: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

ArityThe number of arguments a predicate

has is called its arity.

greetings is a predicate with no arguments.The arity of greetings is zero =

greetings/0

By including more arguments predicates can be made more specific .greetings(hamish) = greetings/1

The predicate can then behave differently depending on the arguments passed to it.

Page 26: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Backtracking (an inherent property of prolog programming)

likes(mary,X),likes(john,X)

likes(mary,food)likes(mary,tea)likes(john,tea)likes(john,mary)

1. First goal succeeds. X=food2. Satisfy likes(john,food)

Page 27: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Backtracking (continued)

Returning to a marked place and trying to resatisfy is called Backtracking

likes(mary,X),likes(john,X)

likes(mary,food)likes(mary,tea)likes(john,tea)likes(john,mary)

1. Second goal fails2. Return to marked place and try to resatisfy the first goal

Page 28: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Backtracking (continued)

likes(mary,X),likes(john,X)

likes(mary,food)likes(mary,tea)likes(john,tea)likes(john,mary)

1. First goal succeeds again, X=tea2. Attempt to satisfy the likes(john,tea)

Page 29: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Backtracking (continued)

likes(mary,X),likes(john,X)

likes(mary,food)likes(mary,tea)likes(john,tea)likes(john,mary)

1. Second goal also suceeds2. Prolog notifies success and waits for a reply

Page 30: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Structure of Programs

Programs consist of procedures.Procedures consist of clauses.Each clause is a fact or a rule.Programs are executed by posing queries.

An example…

Page 31: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Example

elephant(george).elephant(mary).elephant(X) :- grey(X), mammal(X), hasTrunk(X).

Procedure for elephant

Predicate

Clauses

Rule

Facts

Page 32: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Example

?- elephant(george).

yes

?- elephant(jane).

no

Queries

Replies

Page 33: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Body of a (rule) clause contains goals.

likes(mary, X) :- human(X), honest(X).

Head Body

Goals

Page 34: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Interpretation of ClausesClauses can be given a declarative reading or a

procedural reading.

H :- G1, G2, …, Gn.

“That H is provable follows from goals G1, G2, …, Gn being provable.”

“To execute procedure H, the procedures called by goals G1, G2, …, Gn are executed first.”

Declarative reading:

Procedural reading:

Form of clause:

Page 35: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

EXAMPLE

berkshire

wiltshire

surrey

hampshire sussex

kent

How to represent this relation?Note that borders are symmetric.

(a) Representing a symmetric relation.(b) Implementing a strange ticket condition.

Page 36: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Contd...

border(sussex, kent).border(sussex, surrey).border(surrey, kent).border(hampshire, sussex).border(hampshire, surrey).border(hampshire, berkshire).border(berkshire, surrey).border(wiltshire, hampshire).border(wiltshire, berkshire).

This relation representsone ‘direction’ of border: What about the other?

(a) Say border(kent, sussex).border(sussex, kent).

(b) Sayadjacent(X, Y) :- border(X, Y).adjacent(X, Y) :- border(Y, X).

Page 37: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Contd...

valid(X, Y) :- adjacent(X, Z), adjacent(Z, Y)

Now a somewhat strange type of discount ticket. For theticket to be valid, one must pass through an intermediate county.

A valid ticket between a start and end county obeys the following rule:

Page 38: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Contd...border(sussex, kent).border(sussex, surrey).border(surrey, kent).border(hampshire, sussex).border(hampshire, surrey).border(hampshire, berkshire).border(berkshire, surrey).border(wiltshire, hampshire).border(wiltshire, berkshire).

adjacent(X, Y) :- border(X, Y).adjacent(X, Y) :- border(Y, X).

?- valid(wiltshire, sussex).?- valid(wiltshire, kent).?- valid(hampshire, hampshire).?- valid(X, kent).?- valid(sussex, X).?- valid(X, Y).

valid(X, Y) :-adjacent(X,

Z), adjacent(Z, Y)

Page 39: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

How to save prolog file:Save as Filename.plConflict with PerlAlternative extension can be

filename.pro or filename.prNo capitalsC:/MyDocument //errorC:/mydocumentTo exit prolog- ‘halt’

Page 40: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Different editors:SWI Prolog

◦Extra libraries◦Built in predicates

GNU Prolog◦Support constraints logic

programmingVisual Prolog

◦A complete development environment for object oriented extension to prolog

And many more…

Page 41: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

SIGNIFICANT FEATURESSimplicity

Regularity

Intelligent systems

Expert systems

Natural language systems

Relational database systems

Page 42: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

ADVANTAGES:-

Logic based languages are able to represent the real world more accurately.

Prolog is able to derive new rules from the existing rules contained within the knowledge base.

Strong ties to formal logicMany algorithms become trivially

simple to implement

Page 43: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

DISADVANTAGES:-

-It can be very difficult to design a database that accurately represents relationships.

Prolog is not best suited to solving complex arithmetical computations.

Complicated syntaxDifficult to understand programs at first sight

Prolog programs are not best suited to the current PC architecture (sequential execution) and are best optimised on parallel architectures (fifth generation computers).

Page 44: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

APPLICATIONS:

Target User:◦Expert Systems (Knowledge

Representation and Inferencing)◦Natural Language Processing◦Relational Databases◦Artificial intelligence

Page 45: Programmaing in logic Apurva Patil Gayatri Kharavlikar Meenakshi Borse Manjiri Bankar Nikita Alai Shruti Govilkar.

Thank u..!!