joana c^orte-real [email protected] - 会津大学公式...

24
Introduction Prolog data structures Backtracking Conclusion Brief Introduction to Prolog Joana Cˆ orte-Real [email protected] CRACS & INESC TEC Faculty of Sciences University of Porto University of Aizu 5th December 2014 1 / 27

Upload: others

Post on 19-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Brief Introduction to Prolog

Joana [email protected]

CRACS & INESC TECFaculty of SciencesUniversity of Porto

University of Aizu5th December 2014

1 / 27

Page 2: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Overview

1 IntroductionIntroduction to PrologProlog SyntaxTutorial 1

2 Prolog data structuresListsTreesTutorial 2

3 BacktrackingTutorial 3

4 Conclusion

2 / 27

Page 3: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Introduction to PrologProlog SyntaxTutorial 1

Section 1

Introduction

3 / 27

Page 4: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Introduction to PrologProlog SyntaxTutorial 1

Programming paradigms

Imperative translation from machine language to user commands

Object object-oriented, versatile and recent

Declarative detachment between program’s goal and executiondetails

Functional concerned with recursion, patternmatching, ...

Logic focus on automatically reasoning aboutknowledge in the program

4 / 27

Page 5: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Introduction to PrologProlog SyntaxTutorial 1

Introduction to Prolog

Prolog represents Horn Clauses - which are a subset of FirstOrder Logics - where each clause can have at most onepositive literal in the head.

head:−body.

A Prolog program is a set of facts and/or rules definingrelations between entities.

Facts represent relations which are assumed to be true(axioms)

Rules can be true or false, depending on other relations in theprogram

A Prolog program is resolved by computing the consequentsof rules.

5 / 27

Page 6: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Introduction to PrologProlog SyntaxTutorial 1

Prolog syntax 1

Characters Letters and numbers

Terms can be

variables Person, Fatherconstants mary, ’The Family’

compound family(’mary&tom’, date(25, feb,1954))

Symbols :- ; , .

Comments can be used for

line %Commenttext /* Also a comment */

6 / 27

Page 7: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Introduction to PrologProlog SyntaxTutorial 1

Prolog syntax 2

Operators + - * /

Unification = finds a set of variable substitutions that make twoterms exacty the same.

Arithmetic Prolog does not evaluate mathematical expressionsunless the operator is is used

numbers is > < =\=terms == \==

7 / 27

Page 8: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Introduction to PrologProlog SyntaxTutorial 1

Family - facts

%Fact s T1mothe r o f (mary , john ) .mothe r o f (mary , anne ) .f a t h e r o f ( tom , anne ) .f a t h e r o f ( tom , john ) .

%Query T1?−mothe r o f (mary , Person ) .

8 / 27

Page 9: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Introduction to PrologProlog SyntaxTutorial 1

Observations

There are two predicates in this example: mother of/2 andfather of/2.

pred/N represents predicate pred(arg1, arg2, ..., argN),with arity of N arguments.

These predicates have no body and so they are called facts.

Facts can be seen as a multi-relational database in Prolog.

10 / 27

Page 10: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

ListsTreesTutorial 2

Section 2

Prolog data structures

11 / 27

Page 11: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

ListsTreesTutorial 2

Data structures: List

A few examples:

[]: empty list.

[ the,men,[like,to,fish]]

[a,V1,b,[X,Y]]

List is composed of: [Head|Tail]Head: first element of the list (can be of any type).Tail: remaining elements as a list.

List Head Tail[a,b,c] a [b,c]

[a] a []

[] no head no tail

12 / 27

Page 12: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

ListsTreesTutorial 2

Equality of Lists

Unifications can happen inside lists

The empty list does not have head or tail

This is used as a stop criterion in list recursion

Examples:[X,Y,Z] = [john,likes,fish] X=john, Y=likes, Z=fish

[cat] = [X|Y] X=cat, Y=[]

[] = [X|Y] will always fail

13 / 27

Page 13: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

ListsTreesTutorial 2

Data structures: Tree

Tree below can be represented as either a+b*c or +(a,*(b,c))

+

/ \

a *

/ \

b c

Trees can be used to represent concept such as:sentence(noun(john),verb phrase(verb(likes),noun(mary)))

sentence

/ \

noun verb_phrase

/ / \

john verb noun

| |

likes mary14 / 27

Page 14: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

ListsTreesTutorial 2

Family - rules

%Fact s T2f a t h e r o f ( tom , b i l l ) .mothe r o f (mary , j a n e ) .

%Rule T2s i b l i n g ( Person1 , Person2 ) :−

mothe r o f (Mother , Person1 ) ,mothe r o f (Mother , Person2 ) ,Person1\==Person2 .

s i b l i n g ( Person1 , Person2 ) :−f a t h e r o f ( Father , Person1 ) ,f a t h e r o f ( Father , Person2 ) ,Person1\==Person2 .

%Query T2?− s i b l i n g ( anne , Person ) .

15 / 27

Page 15: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

ListsTreesTutorial 2

Observations

findall/3 predicate gathers all possible solutions for the queryin argument 2 in a list.

Procedural interpretation: to solve sibling/2, predicatesmother of/2 and father of/2 must be evaluated first.

The resolution mechanism (SLD resolution) builds anexecution tree.

17 / 27

Page 16: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

ListsTreesTutorial 2

Execution tree for sibling

18 / 27

Page 17: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Tutorial 3

Section 3

Backtracking

19 / 27

Page 18: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Tutorial 3

Obtaining multiple solutions in Prolog

Backtracking in Prolog can be used to obtain multiplesolutions for a goal (predicate fails vs user-induced failure).

When Prolog is computing a goal, every choice it makes isstored as a choice point.

If a given goal fails, it can be backtracked (choices undone)until the previous choice point is restored.

From there, Prolog starts looking for a new alternative forsolving the goal.

20 / 27

Page 19: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Tutorial 3

Family - recursive

%Fact s T3f a t h e r o f ( roge r , tom) .f a t h e r o f ( greg , r o g e r ) .

%Rule T3ma l e an c e s t o r ( Person1 , Person2 , 1 ) :−

f a t h e r o f ( Person1 , Person2 ) .ma l e an c e s t o r ( Person1 , Person2 , L e v e l ) :−

f a t h e r o f ( Person1 , NewPerson ) ,ma l e an c e s t o r ( NewPerson , Person2 ,

NewLevel ) ,L e v e l i s NewLevel+1.

%Query T3?−ma l e an c e s t o r (P , anne , 2 ) .

21 / 27

Page 20: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Tutorial 3

Observations

Declarative interpretation of query: are greg and anne relatedthrough the male line?

male ancestor/3 can solve both the level of the relation andfind a person who is related to someone else.

Note that recursion must be made with new variables everytime: NewLevel, NewPerson.

23 / 27

Page 21: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Tutorial 3

Execution tree for male ancestor

24 / 27

Page 22: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Section 4

Conclusion

25 / 27

Page 23: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Conclusions

Prolog allows for an almost direct match between a FOLalgorithm and its execution syntax.

Because Prolog is based on FOL, if the facts are true, thenthe program will produce true results.

Prolog’s declarative nature is particularly suited to build andconsult multi-relational data.

There are many Prolog systems in the literature with differentfeatures such as Yap Prolog1, SWI-Prolog2, SICStus Prolog3, etc.

1www.dcc.fc.up.pt/ vsc/Yap/documentation.html2www.swi-prolog.org3sicstus.sics.se

26 / 27

Page 24: Joana C^orte-Real jcr@dcc.fc.up - 会津大学公式 ...web-ext.u-aizu.ac.jp/~hitoshi/RESEARCH/BriefIntroductionToProlog_students.pdfIntroduction Prolog data structures Backtracking

IntroductionProlog data structures

BacktrackingConclusion

Thank you

Joana Corte-Real

27 / 27