Document

Chapter 16
Logic Programming
Languages
ISBN 0-321-19362-8
Presentation Notes
• Overall, your goal is to present this language to other
students in the class.
• Plan to have both yourself and partner(s) share the
presentation -- in approximately equal manner.
• You may use PowerPoint slides to show some general
information about the language – but keep the number of
slides small
• The PowerPoint slides should take no more than 5 minutes
or so. The remainder of your presentation will be a
demonstration of programs.
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-2
What should you tell us
about the language?
– What is the language paradigm?
– How does it fit into the historical evolution of programming
languages?
– What did you find different about the language from other
languages in the same paradigm?
– What features did you find helpful?
– What does this language offer to the programmer that make
it a language you would want to use?
– Is the language best suited for one particular type of
application? If so, what?
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-3
Feedback form
• Ratings are on a scale of 0 – 5
–
–
–
–
–
–
0 – not done
1 – could have been much better
2 – OK
3 – good
4 – better than most
5 – excellent!
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-4
Demonstrations
• Demonstrations
– One or Two well-chosen examples that show
strengths and weakness of language
– Common Program
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-5
Chapter 16 Topics
•
•
•
•
•
•
•
•
Introduction
A Brief Introduction to Predicate Calculus
Predicate Calculus and Proving Theorems
An Overview of Logic Programming
The Origins of Prolog
The Basic Elements of Prolog
Deficiencies of Prolog
Applications of Logic Programming
Copyright © 2004 Pearson Addison-Wesley. All rights
reserved.Westmont College
16-6
Introduction
• Logic programming language or declarative
programming language
• Express programs in a form of symbolic logic
• Use a logical inferencing process to produce
results
• Declarative rather that procedural:
– only specification of results are stated (not detailed
procedures for producing them)
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-7
Introduction
• Logic programming language uses a form of
symbolic logic as a programming language
• The only widely used logic language is Prolog
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-8
Introduction to Predicate Calculus
• Proposition: a logical statement that may or
may not be true
– Consists of objects and relationships of objects to
each other
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-9
Introduction to Predicate Calculus
• Symbolic logic can be used for the basic needs
of formal logic:
– express propositions
– express relationships between propositions
– describe how new propositions can be inferred from
other propositions
• Particular form of symbolic logic used for logic
programming called predicate calculus
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-10
Propositions
• Objects in logic programming propositions
are represented by simple terms: either
constants or variables
• Constant: a symbol that represents an object
• Variable: a symbol that can represent different
objects at different times
– different from variables in imperative languages
– more what is meant in mathematics
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-11
Propositions
• Atomic propositions consist of compound
terms
• Compound term: one element of a
mathematical relation,
–
–
–
–
written like a mathematical function
Mathematical function is a mapping
Can be written as a table or a list of tuples
so compound terms are elements of the tabular
definition of a function
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-12
Propositions
• Compound term composed of two parts
– Functor: function symbol that names the relationship
– Ordered list of parameters (tuple)
• Examples:
student(matt) {matt} is a 1-tuple in the relation named students
like(seth, OSX) {seth, OSX} is a 2-tuple in the relation named like
like(dan, windows)
like(greg, linux)
•
•
•
the relation like has 3 distinct elements, {seth, OSX}, {dan,windows}, and
{greg, linux}
all the simple terms (seth, OSX, dan, windows, greg, linux) are constants
there is no intrinsic semantics to the relations. could mean that seth likes
OSX or that OSX likes seth.
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-13
Propositions
• Propositions can be stated in two forms:
– Fact: proposition is assumed to be true
– Query: truth of proposition is to be determined
– the earlier propositions could be either
• Compound proposition:
– Have two or more atomic propositions
– Propositions are connected by operators
– similar to compound logic expressions in
imperative languages
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-14
Logical Operators
Name
Symbol
Example
Meaning
negation

a
not a
conjunction

ab
a and b
disjunction

ab
a or b
equivalence

ab
implication


ab
ab
a is equivalent to
b
a implies b
b implies a
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-15
Logical Operators
• Examples:
abc
abd
• operator  has the highest precedence
• operators , ,  all have higher precedence
than  and 
• above example equivalent to
(a  ( b))  d
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-16
Quantifiers
• Variables can appear in propositions, but only
when introduced by special symbols called
quantifiers
• predicate calculus includes two quantifiers
– see next slide
– X is a variable
– P is a proposition
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-17
Quantifiers
Name
Example
Meaning
universal
∀X.P
For all X, P is true
existential
∃X.P
There exists a value of X
such that P is true
the period between X and P simply separates the variable
from the proposition
quantifiers have higher precedence than any operator
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-18
Quantifiers
• Examples
∀X.(woman(x)  human(X))
∃X.(mother(mary, X)  male(X))
• First proposition means that for any value of
X, if X is a woman, then X is a human
• The second means that there exists a value of
X such that mary is the mother of X and X is a
male, i.e., mary has a son.
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-19
Clausal Form
•Too many ways to state the same thing
•Use a standard form for propositions
•Clausal form:
B1  B2  …  Bn  A1  A2  …  Am
means if all the As are true, then at least one B
is true
•Antecedent: right side
•Consequent: left side
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-20
Clausal Form
• Clausal form: characteristics
– Existential quantifiers are not required
– universal quantifiers are implicit in the use of variables in the
atomic propositions
– no operators other than conjunction and disjunction are
required
– conjunction and disjunction need appear only in the order
shown in the general clausal form
• disjunction on the left side
• conjunction on the right side
– all predicate calculus propositions can be algorithmically
converted to clausal form without loss of generality
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-21
Predicate Calculus and Proving
Theorems
• A use of propositions is to discover new
theorems that can be inferred from known
axioms and theorems
• Resolution: an inference principle that allows
inferred propositions to be computed from
given propositions
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-22
Predicate Calculus and Proving
Theorems
• Resolution: example:
– Suppose there are two propositions of the form:
P1  P2
Q1  Q2
– and suppose that P1 is identical to Q2
– then we could rename P1 and Q2 as T:
T  P2
Q1  T
– now because P2 implies T and T implies Q1 we could write:
Q 1  P2
– The process of inferring this proposition from the original
two propositions is resolution
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-23
Predicate Calculus and Proving
Theorems
• Resolution technique:
– Suppose there are two propositions of the form:
older(dorothy, john)  mother(dorothy, john)
wiser(dorothy, john)  older(dorothy, john)
– we can construct the following proposition using resolution:
wiser(dorothy, john)  mother(dorothy, john)
– The process:
• AND all the right hand side of all propositions to make the
right hand side of the new proposition.
• AND all the left hand sides of all propositions to make the
left hand side of the new propositions
• remove any term that appears on both sides
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-24
Predicate Calculus and Proving
Theorems
• Resolution technique: same process when
propositions have multiple terms on either or both
sides:
– Suppose there are two propositions of the form:
father(bob, jake)  mother(bob, jake)  parent(bob, jake)
grandfather(bob,fred)  father(bob, jake)  father(jake, fred)
– resolution says:
grandfather(bob,fred)  father(bob, jake)  mother(bob, jake)
 parent(bob, jake)  father(bob, jake)  father(jake, fred)
or
grandfather(bob,fred)  mother(bob, jake)
 parent(bob, jake)  father(jake, fred)
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-25
Predicate Calculus and Proving
Theorems
• Resolution is usually more complex than these
examples
– variables in propositions requires resolution to find
values for those variables that allow the matching
process to succeed
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-26
Resolution
• Unification: finding values for variables in
propositions that allows matching process to
succeed
• Instantiation: assigning temporary values to
variables to allow unification to succeed
• After instantiating a variable with a value, if
matching fails, may need to backtrack and
instantiate with a different value
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-27
Resolution
• A property of resolution is the ability to detect
any inconsistency in a given set of
propositions.
– allows resolution to be used to prove theorems
– given a set of propositions and a theorem to prove
– use the negation of the theorem as a new
proposition
– prove the theorem by finding an inconsistency in
the negated theorem using the propositions
– thus the original theorem must be true
– proof by contradiction
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-28
Theorem Proving
• Use proof by contradiction
• Hypotheses: a set of pertinent propositions
• Goal: negation of theorem stated as a
proposition
• Theorem is proved by finding an
inconsistency
• Theoretically, this is a valid and useful
process.
• Practically: takes too much time.
– it is finite, but a very large finite!
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-29
Theorem Proving
• Basis for logic programming
– much of what can be computed can be couched in
the form of a list of given facts and relationships
as hypotheses
– and a goal to be inferred from the hypotheses
using resolution
• When propositions are used for resolution,
only restricted kind of clausal form (Horn
clauses) can be used
– simplifies the resolution process
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-30
Theorem Proving
• Horn clause - can have only two forms
– Headed: single atomic proposition on left side
like(bob, trout)  likes(bob, fish)  fish(trout)
– Headless: empty left side (used to state facts)
father(bob, jake)
– the left side of a clausal form proposition is called
the head
• Most propositions can be stated as Horn
clauses
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-31
Overview of Logic Programming
• Declarative semantics
– There is a simple way to determine the meaning of
each statement
– Simpler than the semantics of imperative
languages
• Programming is nonprocedural
– Programs do not state now a result is to be
computed, but rather the form of the result
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-32
Example: Sorting a List
• Describe the characteristics of a sorted list,
not the process of rearranging a list
sort(old_list, new_list)  permute (old_list, new_list) 
sorted (new_list)
sorted (list)  ∀j such that 1 j < n, list(j)  list (j+1)
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-33
The Origins of Prolog
• University of Aix-Marseille
– Natural language processing
• University of Edinburgh
– Automated theorem proving
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-34
The Basic Elements of Prolog
•
•
•
•
•
Edinburgh Syntax
Term: a constant, variable, or structure
Constant: an atom or an integer
Atom: symbolic value of Prolog
Atom consists of either:
– a string of letters, digits, and underscores
beginning with a lowercase letter
– a string of printable ASCII characters delimited by
apostrophes
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-35
The Basic Elements of Prolog
• Variable: any string of letters, digits, and
underscores beginning with an uppercase
letter
• Instantiation: binding of a variable to a value
– Lasts only as long as it takes to satisfy one
complete goal
• Structure: represents atomic proposition
functor(parameter list)
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-36
Fact Statements
• Used for the hypotheses
• Headless Horn clauses
student(jonathan).
sophomore(ben).
brother(tyler, cj).
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-37
Rule Statements
• Used for the hypotheses
• Headed Horn clause
• Right side: antecedent (if part)
– May be single term or conjunction
• Left side: consequent (then part)
– Must be single term
• Conjunction: multiple terms separated by
logical AND operations (implied)
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-38
Rule Statements
parent(kim,kathy):- mother(kim,kathy).
• Can use variables (universal objects) to
generalize meaning:
parent(X,Y):- mother(X,Y).
sibling(X,Y):- mother(M,X),
mother(M,Y),
father(F,X),
father(F,Y).
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-39
Goal Statements
• For theorem proving, theorem is in form of
proposition that we want system to prove or
disprove – goal statement
• Same format as headless Horn
student(james)
• Conjunctive propositions and propositions
with variables also legal goals
father(X,joe)
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-40
Inferencing Process of Prolog
• Queries are called goals
• If a goal is a compound proposition, each of the facts
is a subgoal
• To prove a goal is true, must find a chain of inference
rules and/or facts. For goal Q:
B :- A
C :- B
…
Q :- P
• Process of proving a subgoal called matching,
satisfying, or resolution
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-41
Inferencing Process
• Bottom-up resolution, forward chaining
– Begin with facts and rules of database and attempt to find
sequence that leads to goal
– works well with a large set of possibly correct answers
• Top-down resolution, backward chaining
– begin with goal and attempt to find sequence that leads to set
of facts in database
– works well with a small set of possibly correct answers
• Prolog implementations use backward chaining
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-42
Inferencing Process
• When goal has more than one subgoal, can
use either
– Depth-first search: find a complete proof for the
first subgoal before working on others
– Breadth-first search: work on all subgoals in
parallel
• Prolog uses depth-first search
– Can be done with fewer computer resources
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-43
Inferencing Process
• With a goal with multiple subgoals, if fail to
show truth of one of subgoals, reconsider
previous subgoal to find an alternative
solution: backtracking
• Begin search where previous search left off
• Can take lots of time and space because may
find all possible proofs to every subgoal
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-44
Simple Arithmetic
• Prolog supports integer variables and integer
arithmetic
• is operator: takes an arithmetic expression as
right operand and variable as left operand
• A is B / 10 + C
• Not the same as an assignment statement!
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-45
Example
speed(ford,100).
speed(chevy,105).
speed(dodge,95).
speed(volvo,80).
time(ford,20).
time(chevy,21).
time(dodge,24).
time(volvo,24).
distance(X,Y) :speed(X,Speed),
time(X,Time),
Y is Speed * Time.
distance(ford, What).
returns 2000
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-46
Trace
• Built-in structure that displays instantiations at
each step
• Tracing model of execution - four events:
–
–
–
–
Call (beginning of attempt to satisfy goal)
Exit (when a goal has been satisfied)
Redo (when backtrack occurs)
Fail (when goal fails)
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-47
Example
likes(jake,chocolate).
likes(jake,apricots).
likes(darcie,licorice).
likes(darcie,apricots).
trace.
likes(jake,X),
likes(darcie,X).
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-48
List Structures
• Other basic data structure (besides atomic
propositions we have already seen): list
• List is a sequence of any number of elements
• Elements can be atoms, atomic propositions, or
other terms (including other lists)
[apple, prune, grape, kumquat]
[]
(empty list)
[X | Y]
(head X and tail Y)
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-49
Example
• Definition of append function:
append([], List, List).
append([Head | List_1], List_2, [Head
| List_3]) :append (List_1, List_2, List_3).
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-50
Example
• Definition of reverse function:
reverse([], []).
reverse([Head | Tail], List) :reverse (Tail, Result),
append (Result, [Head], List).
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-51
Deficiencies of Prolog
•
•
•
•
Resolution order control
The closed-world assumption
The negation problem
Intrinsic limitations
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-52
Applications of Logic
Programming
•
•
•
•
Relational database management systems
Expert systems
Natural language processing
Education
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-53
Conclusions
• Advantages:
– Prolog programs based on logic, so likely to be
more logically organized and written
– Processing is naturally parallel, so Prolog
interpreters can take advantage of multi-processor
machines
– Programs are concise, so development time is
decreased – good for prototyping
Copyright © 2004 Pearson Addison-Wesley. All rights reserved.
16-54