This action might not be possible to undo. Are you sure you want to continue?

BooksAudiobooksComicsSheet Music### Categories

### Categories

Scribd Selects Books

Hand-picked favorites from

our editors

our editors

Scribd Selects Audiobooks

Hand-picked favorites from

our editors

our editors

Scribd Selects Comics

Hand-picked favorites from

our editors

our editors

Scribd Selects Sheet Music

Hand-picked favorites from

our editors

our editors

Top Books

What's trending, bestsellers,

award-winners & more

award-winners & more

Top Audiobooks

What's trending, bestsellers,

award-winners & more

award-winners & more

Top Comics

What's trending, bestsellers,

award-winners & more

award-winners & more

Top Sheet Music

What's trending, bestsellers,

award-winners & more

award-winners & more

P. 1

Prolog Notes|Views: 75|Likes: 0

Published by Andreas Michael

Prolog Notes

Prolog Notes

See more

See less

https://www.scribd.com/doc/125995220/Prolog-Notes

02/18/2013

text

original

- Facts, Rules, and Queries
- 1.1 Some simple examples
- 1.1.1 Knowledge Base 1
- 1.1.2 Knowledge Base 2
- 1.1.3 Knowledge Base 3
- 1.1.4 Knowledge Base 4
- 1.1.5 Knowledge Base 5
- 1.2 Prolog Syntax
- 1.2.1 Atoms
- 1.2.2 Numbers
- 1.2.3 Variables
- 1.2.4 Complex terms
- 1.3 Exercises
- 1.4 Practical Session 1
- Matching and Proof Search
- 2.1 Matching
- 2.1.1 Examples
- 2.1.2 The occurs check
- 2.1.3 Programming with matching
- 2.2 Proof Search
- 2.3 Exercises
- 2.4 Practical Session 2
- Recursion
- 3.1 Recursive deﬁnitions
- 3.1.1 Example 1: Eating
- 3.1.2 Example 2: Descendant
- 3.1.3 Example 3: Successor
- 3.1.4 Example 3: Addition
- 3.2 Clause ordering, goal ordering, and termination
- 3.3 Exercises
- 3.4 Practical Session 3
- 4.1 Lists
- 4.2 Member
- 4.3 Recursing down lists
- 4.4 Exercises
- 4.5 Practical Session 4
- Arithmetic
- 5.1 Arithmetic in Prolog
- 5.2 A closer look
- 5.3 Arithmetic and lists
- 5.4 Comparing integers
- 5.5 Exercises
- 5.6 Practical Session 5
- More Lists
- 6.1 Append
- 6.1.1 Deﬁning append
- 6.1.2 Using append
- 6.2 Reversing a list
- 6.2.1 Naive reverse using append
- 6.2.2 Reverse using an accumulator
- 6.3 Exercises
- 6.4 Practical Session 6
- Deﬁnite Clause Grammars
- 7.1 Context free grammars
- 7.1.1 CFG recognition using append
- 7.1.2 CFG recognition using difference lists
- 7.2 Deﬁnite clause grammars
- 7.2.1 A ﬁrst example
- 7.2.2 Adding recursive rules
- 7.2.3 A DCG for a simple formal language
- 7.3 Exercises
- 7.4 Practical Session 7
- More Deﬁnite Clause Grammars
- 8.1 Extra arguments
- 8.1.1 Context free grammars with features
- 8.1.2 Building parse trees
- 8.1.3 Beyond context free languages
- 8.2 Extra goals
- 8.2.1 Separating rules and lexicon
- 8.3 Concluding remarks
- 8.4 Exercises
- 8.5 Practical Session 8
- A Closer Look at Terms
- 9.1 Comparing terms
- 9.2 Terms with a special notation
- 9.2.1 Arithmetic terms
- 9.2.2 Lists as terms
- 9.3 Examining Terms
- 9.3.1 Types of Terms
- 9.3.2 The Structure of Terms
- 9.4 Operators
- 9.4.1 Properties of operators
- 9.4.2 Deﬁning operators
- 9.5 Exercises
- 9.6 Practical Session
- 10.1 The cut
- 10.2 If-then-else
- 10.3 Negation as failure
- 10.4 Exercises
- 10.5 Practical Session 10
- Database Manipulation and Collecting Solutions
- 11.1 Database manipulation
- 11.2 Collecting solutions
- 11.2.1 findall/3
- 11.2.2 bagof/3
- 11.2.3 setof/3
- 11.3 Exercises
- 11.4 Practical Session 11
- 12.1 Splitting Programs Over Files
- 12.1.1 Reading in Programs
- 12.1.2 Modules
- 12.1.3 Libraries
- 12.2 Writing To and Reading From Files
- 12.3 Practical Session
- 12.3.1 Step 1
- 12.3.2 Step 2
- 12.3.3 Step 3
- 12.3.4 Step 4
- 12.3.5 Step 5
- 12.3.6 Step 6

When working with knowledge base KB4 in the previous chapter, we introduced the

term*matching*. Wesaid, e.g. that Prolog matches` woman(X)` with` woman(mia)`, thereby

instantiating the variable` X` to` mia`. We will now have a close look at what* matching
*means.

Recall that there are three types of term:

1. Constants. These can either be atoms (such as` vincent`) or numbers (such as

`24`).

2. Variables.

3. Complex terms. These have the form:` functor(term_1,...,term_n)`.

We are now going to deﬁne when two terms match. The basic idea is this:

Two terms match, if they are equal or if they contain variables that can be

instantiated in such a way that the resulting terms are equal.

That means that the terms` mia` and` mia` match, because they are the same atom. Sim-

ilarly, the terms` 42` and` 42` match, because they are the same number, the terms` X
`and

`woman(mia)` match, because they are the same complex term. The terms` woman(mia)
`and

them contains a variable that could be instantiated to make them the same).

Now, what about the terms` mia` and` X`? They are not the same. However, the variable` X
`can be instantiated to

**18
**

Chapter 2. Matching and Proof Search

deﬁnition,` mia` and` X` match. Similarly, the terms` woman(X)` and` woman(mia)` match,

because theycan bemadeequal byinstantiating` X`to`mia`. Howabout` loves(vincent,X)
`and

terms equal, and therefore they don’t match. Do you see why? Instantiating

`vincent` wouldgive ustheterms`loves(vincent,vincent)` and`loves(vincent,mia)`,

which are obviously not equal. However, instantiating` X` to mia, would yield the terms

`loves(vincent,mia)` and` loves(mia,mia)`, which aren’t equal either.

Usually, we are not only interested in the fact that two terms match, but we also want

to know in what way the variables have to be instantiated to make them equal. And

Prolog gives us this information. In fact, when Prolog matches two terms it performs

all the necessary instantiations, so that the terms really are equal afterwards. This

functionality together with the fact that we are allowed to build complex terms (that is,

*recursively structured* terms) makes matching a quite powerful mechanism. And as we

said in the previous chapter: matching is one of the fundamental ideas in Prolog.

Here’s a more precise deﬁnition for matching which not only tells us* when* two terms

match, but one which also tells us* what we have to do* to the variables to make the

terms equal.

1. If` term1` and` term2` are constants, then` term1` and` term2` match if and only if

they are the same atom, or the same number.

2. If` term1` is a variable and` term2` is any type of term, then` term1` and` term2
`match, and

and

instantiated to

each other, and we say that they share values.)

3. If` term1` and` term2` are complex terms, then they match if and only if:

(a) They have the same functor and arity.

(b) All their corresponding arguments match

(c) and the variable instantiations are compatible. (I.e. it is not possible to

instantiate variable` X` to` mia`, when matching one pair of arguments, and to

then instantiate` X` to` vincent`, when matching another pair of arguments.)

4. Two terms match if and only if it follows from the previous three clauses that

they match.

Note the* form* of this deﬁnition. The ﬁrst clause tells us when two constants match.

The second term clause tells us when two terms, one of which is a variable, match:

such terms will* always* match (variables match with* anything*). Just as importantly,

this clause also tells what instantiations we have to perform to make the two terms the

same. Finally, the third clause tells us when two complex terms match.

Thefourth clause isalso very important: ittells us that the ﬁrstthree clauses completely

deﬁne when two terms match. If two terms can’t be shown to match using Clauses 1-3,

then they* don’t* match. For example,` batman` does not match with` daughter(ink)`.

Why not? Well, the ﬁrst term is a constant, the second is a complex term. But none

of the ﬁrst three clauses tell us how to match two such terms, hence (by clause 4) they

don’t match.

2.1. Matching

**19
**

Article CRM

Article BPR Methods

TCO - Cloud Computing

How E-Services Satisfy Customer Needs

How E-Services Satisfy Customer Needs

Value Co-creation

Introduction to KM

Value Co-creation (1)

Value Co-creation (1)

Talent 3.0

BPR[1]

McKinsey Quarterly

Mode 2

Mode 1

Problem_A

odigos thermomonosis

Energy Efficiency Policies and Measures in Cyprus

Worked Examples of u Value

AI Foundation of Intelligent Agent2

6 Trees

Άσκηση 9

AIBook.01

Mathimatika b Gymnasiou b Tefchos[1]

Mathimatika a Gymnasiou a Tefchos

- Read and print without ads
- Download to keep your version
- Edit, email or read offline

Prolog

Tutorial Prolog

Prolog

Prolog

Prolog

prolog

Emacs Lisp

Lisp Book

Basic Lisp Techniques - David J. Cooper Jr

Lisp

Auto Lisp

Are you sure?

This action might not be possible to undo. Are you sure you want to continue?

CANCEL

OK

You've been reading!

NO, THANKS

OK

scribd