LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language...

60
Ahmed Sallam Slides based on original lecture slides Dr. Temur Kutsia LOGIC PROGRAMMING Lecture 2: Prolog as a language 2/27/2015 Lecture 2: Prolog as Language 1

Transcript of LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language...

Page 1: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Ahmed SallamSlides based on original lecture slides Dr. Temur Kutsia

LOG

IC PRO

GRA

MM

ING Lecture 2: Prolog as a language

2/27/2015

Lecture 2: Prolog as Language 1

Page 2: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Prolog as Language

Syntax

Equality

Arithmetic

Satisfying Goals

Structures and Trees

Lists

Recursive Search

Mapping

2/27/2015Lecture 2: Prolog as Language2

Page 3: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Syntax

Terms : constant Variable structure

2/27/2015Lecture 2: Prolog as Language3

Page 4: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Constants

2/27/2015Lecture 2: Prolog as Language4

Page 5: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Non-Constants

2/27/2015Lecture 2: Prolog as Language5

Page 6: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Variables

2/27/2015Lecture 2: Prolog as Language6

Page 7: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Structures

Collection of Objects, Components, grouped together in oneobject .

Help Organize . Make code more readable .

2/27/2015Lecture 2: Prolog as Language7

Page 8: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Structures

Example: Index Card for Library Author’s Name Title Date Publisher Name could be split also first, last, etc .

2/27/2015Lecture 2: Prolog as Language8

Page 9: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Examples

2/27/2015Lecture 2: Prolog as Language9

Page 10: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Questions

2/27/2015Lecture 2: Prolog as Language10

Page 11: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Prolog as Language

Syntax

Equality

Arithmetic

Satisfying Goals

Structures and Trees

Lists

Recursive Search

Mapping

2/27/2015Lecture 2: Prolog as Language11

Page 12: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Equality

2/27/2015Lecture 2: Prolog as Language12

Page 13: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Example: Instantiated

2/27/2015Lecture 2: Prolog as Language13

Page 14: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Example: Symbols

2/27/2015Lecture 2: Prolog as Language14

Page 15: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Arguments Instantiated

2/27/2015Lecture 2: Prolog as Language15

Page 16: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Arguments Instantiated

2/27/2015Lecture 2: Prolog as Language16

Page 17: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Equality

2/27/2015Lecture 2: Prolog as Language17

Page 18: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Prolog as Language

Syntax

Equality

Arithmetic

Satisfying Goals

Structures and Trees

Lists

Recursive Search

Mapping

2/27/2015Lecture 2: Prolog as Language18

Page 19: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Arithmetic Comparisons

2/27/2015Lecture 2: Prolog as Language19

Page 20: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Arithmetic

2/27/2015Lecture 2: Prolog as Language20

Page 21: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Example

2/27/2015Lecture 2: Prolog as Language21

Page 22: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Runs

2/27/2015Lecture 2: Prolog as Language22

Page 23: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Who was a Prince When

2/27/2015Lecture 2: Prolog as Language23

Page 24: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Invalid Question

2/27/2015Lecture 2: Prolog as Language24

Page 25: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Arithmetic Operations

2/27/2015Lecture 2: Prolog as Language25

Page 26: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Calculating

2/27/2015Lecture 2: Prolog as Language26

Page 27: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Questions

2/27/2015Lecture 2: Prolog as Language27

Page 28: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Questions

2/27/2015Lecture 2: Prolog as Language28

Page 29: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Prolog as Language

Syntax

Equality

Arithmetic

Satisfying Goals

Structures and Trees

Lists

Recursive Search

Mapping

2/27/2015Lecture 2: Prolog as Language29

Page 30: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

How Prolog Answers Questions

2/27/2015Lecture 2: Prolog as Language30

Page 31: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Matching

2/27/2015Lecture 2: Prolog as Language31

Page 32: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

How Is this Matched

2/27/2015Lecture 2: Prolog as Language32

Page 33: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Prolog as Language

Syntax

Equality

Arithmetic

Satisfying Goals

Structures and Trees

Lists

Recursive Search

Mapping

2/27/2015Lecture 2: Prolog as Language33

Page 34: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Representing Structures as Trees

2/27/2015Lecture 2: Prolog as Language34

Page 35: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Representing Structures as Trees

2/27/2015Lecture 2: Prolog as Language35

Page 36: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Parsing

2/27/2015Lecture 2: Prolog as Language36

Page 37: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Parsing

2/27/2015Lecture 2: Prolog as Language37

Page 38: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Parsing

2/27/2015Lecture 2: Prolog as Language38

Page 39: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Prolog as Language

Syntax

Equality

Arithmetic

Satisfying Goals

Structures and Trees

Lists

Recursive Search

Mapping

2/27/2015Lecture 2: Prolog as Language39

Page 40: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Lists

2/27/2015Lecture 2: Prolog as Language40

Page 41: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Lists

2/27/2015Lecture 2: Prolog as Language41

Page 42: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Lists as Trees

2/27/2015Lecture 2: Prolog as Language42

Page 43: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

List Manipulation

2/27/2015Lecture 2: Prolog as Language43

Page 44: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Head and Tail

2/27/2015Lecture 2: Prolog as Language

44

Page 45: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Unifying Lists

2/27/2015Lecture 2: Prolog as Language

45

Page 46: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Strings are Lists

2/27/2015Lecture 2: Prolog as Language46

Page 47: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Membership in a List

2/27/2015Lecture 2: Prolog as Language47

Page 48: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Membership in a List (Example)2/27/2015Lecture 2: Prolog as Language48

a. member(X,[X|_]). b. member(X,[_|Y]):-member(X,Y).------------? member(4, [1,2,4,-5,6,8]). T1.a member(4, [1|[2,4,-5,6,8]]). F1.b member(4,[_|[2,4,-5,6,8]]):- 2. member(4,[2,4,-5,6,8]). T2.a member(4,[2|[4,-5,6,8]]. F2.b member(4,[_|4,-5,6,8]):- 3. member(4,[4,-5,6,8]). T3.a member(4,[4|[-5,6,8]]). T3.b member ().

Page 49: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Prolog as Language

Syntax

Equality

Arithmetic

Satisfying Goals

Structures and Trees

Lists

Recursive Search

Mapping

2/27/2015Lecture 2: Prolog as Language49

Page 50: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Recursion

2/27/2015Lecture 2: Prolog as Language50

Page 51: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Member Success

2/27/2015Lecture 2: Prolog as Language51

Page 52: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Member Failure

2/27/2015Lecture 2: Prolog as Language52

Page 53: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Member. Questions

2/27/2015Lecture 2: Prolog as Language53

Page 54: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Recursion. Termination Problems

2/27/2015Lecture 2: Prolog as Language54

Page 55: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Recursion. Termination Problems

2/27/2015Lecture 2: Prolog as Language55

Page 56: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Prolog as Language

Syntax

Equality

Arithmetic

Satisfying Goals

Structures and Trees

Lists

Recursive Search

Mapping

2/27/2015Lecture 2: Prolog as Language56

Page 57: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Mapping ?

2/27/2015Lecture 2: Prolog as Language57

Page 58: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Mapping a Sentence to Another

2/27/2015Lecture 2: Prolog as Language58

Page 59: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Mapping a Sentence. PROLOG Program

2/27/2015Lecture 2: Prolog as Language59

Page 60: LOGIC PROGRAMMING Lecture 2: Prolog as a languageUnifying Lists Lecture 2: Prolog as Language 2/27/2015 45 Strings are Lists 46 Lecture 2: Prolog as Language 2/27/2015 Membership in

Boundary Conditions

2/27/2015Lecture 2: Prolog as Language60