prolog prolog: programming in logic prolog programs consist of clauses and rules. declarative...

Post on 21-Dec-2015

213 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Prolog

• Prolog: Programming in Logic• Prolog programs consist of clauses and

rules.• Declarative programming

– Emphasis is on data and relations between objects.

– No familiar procedural controls.– Built-in inference engine.

Where is declarative programming useful?

• Data-driven programming tasks– Verification– Natural Language– Expert Systems– Relational Databases– Diagnostic Systems

Logical Operators

A B A^B

0 0 0

0 1 0

1 0 0

1 1 1

AND: Conjunction

A B AvB

0 0 0

0 1 1

1 0 1

1 1 1

OR: Disjunction

NOT: Inversion

A !A

0 1

1 0

Logical Operators

A B A->B

0 0 1

0 1 1

1 0 0

1 1 1

Implication

A->B is equivalent to !AvB

A B A<->B

0 0 1

0 1 0

1 0 0

1 1 1

Equivalence

A<->B is equivalent to:A->B ^ B->A(A ^ B) v (!A ^ !B)

Propositional Calculus

• Represent facts as symbols.– Homer_likes_beer.– Lisa_likes_tofu.– !(Bart_likes_school)– Bart_likes_school -> Bart_does_homework.– Lisa_likes_school ^ Lisa_likes_music

• Easy, but overly verbose.

• No reuse.

Predicate Calculus• A predicate is a function that maps from

zero or more objects to {T,F}.– Likes(Homer, beer)– !Likes(Bart, school)– Likes(Bart, school) -> Does(Bart, homework).– Happy(Lisa).– Gives(Moe, Homer, beer) -> Happy(Homer).

• Predicates provides a syntactic shorthand for propositions.

• No extra representational power.

Inference Rules

• AND-elimination:– If A^B is true, then A is true.– likes(Homer,beer) ^ likes(Homer, food)->likes(Homer,beer)

• OR-introduction:– If A is true, then AvB is true.– likes(Homer,food)->likes(Homer,food)v likes(Homer,work).

• Modus Ponens:– If A->B is true, and A is true, then B is true.– likes(Lisa,school)->does(Lisa,homework) ^

likes(Lisa,school)-> Does(Lisa,homework)

Quantification

• We would like to be able to express facts such as:– “Everyone who likes school does their

homework.”– “No one who likes beef also likes tofu.”– “Someone likes beef.”

• This requires us to be able to quantify over variables in the domain.

First-Order Logic

• First order logic allows quantification over objects.

• Universal quantification: “For all x”x likes(x,school) -> does(x, homework).

“Everyone who likes school does their homework.”

• Existential quantification: “There exists an x”x likes(x,tofu).

“There exists someone who likes tofu.”

Computational Issues• Full FOL is too computationally difficult to

work with.– Nested quantifiers are semi-decidable.xyz likes(x,y) ^ likes(y,z).“Everyone likes a person who likes everyone.”– Implications with an AND in the consequent

are exponentially hard.x likes(x, school) -> does(x,homework) ^

attends(x,class)“Everyone who likes school does their homework

and attends class.”

Horn clauses

• Horn clauses are implications of the form:x ^ y ^ z -> a

• Only a single term in the consequent.

• Horn clause inference is computationally tractable.

• Prolog uses Horn clauses.

Knowledge Representation in Prolog

• Facts (unit clauses):– likes(homer, beer).

• Constants are lower case.

• Names of relations are lower case.

• Conjunctions:– likes(homer,beer).– likes(homer,food).

• Statement is represented as separate Prolog clauses.

<- ends with a period

Knowledge Representation in Prolog

• Rules– does(lisa,homework) :- likes(lisa,school).– Equivalent to:

• likes(lisa,school) ->does(lisa,homework)

– Read as: “Lisa does homework if she likes school.” or …

– “To prove that Lisa does homework, prove that she likes school.”

Variables

• Variables are all upper-case.

• Universal quantification is achieved by using variables in rules.– does(X,homework) :- likes(X,school).

• “Everyone who likes school does their homework.”

• “To prove that someone does their homework, prove that they like school.”

top related