Download Chapter 16 Logic Programming Languages Chapter 16 Topics

Document related concepts

Lambda calculus wikipedia , lookup

Corecursion wikipedia , lookup

Transcript
Chapter 16
Logic Programming Languages
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
Introduction
Definition: logic programming is programming that
uses a form of symbolic logic as a
programming language
Definition: logic programming languages are
languages based on symbolic logic
(also called declarative languages)
Use a logical inferencing process to produce results
Declarative rather that procedural:
only specification of results are stated
(not detailed procedures for producing them)
Advantages
Programs are based on logic
– likely to be logically organized and
written
Processing is naturally parallel
– interpreters can take advantage of
multi-processor machines
Programs are concise
– development time is decreased
– good for prototyping
A Brief Introduction to
Predicate Calculus
Overview
Propositions
Clausal Form
Predicate Calculus
Overview
Definition: a proposition is a logical statement
that is true or not true
Consists of
1. objects, and
2. relationships of objects to each other
Definition: formal logic is a system of
describing propositions and
checking them for validity
Predicate Calculus
Overview
Definition: symbolic logic is a system meeting the
three basic needs of formal logic:
(The system must be able to)
1. express propositions
2. express relationships between propositions
3. describe proposition inference
(used to create new propositions from other
propositions)
The particular form of symbolic logic used for logic
programming is called
First Order Predicate Calculus
Predicate Calculus
Propositions - Objects
Objects in 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)
Predicate Calculus
Proposition Types
Atomic propositions
• consist of compound terms
Compound term
• one element of a mathematical relation
• written like a mathematical function
– A mathematical function is a mapping
– Can be written as a table
Predicate Calculus
Propositions – Compound Terms
A compound term is composed of two parts:
1. Functor = function symbol providing a name
2. Ordered list of parameters (tuple)
Examples:
student(jon)
like(seth, OSX)
like(nick, windows)
like(jim, linux)
Predicate Calculus
Proposition Forms
Propositions can be stated in two forms:
Fact: proposition is assumed to be true
Query: truth of proposition is to be determined
Compound proposition:
Have two or more atomic propositions
Propositions are connected by operators
Predicate Calculus
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
a is equivalent
to b
implication


a  b
a  b
a implies b
b implies a
Predicate Calculus
Quantifiers
Name
Example
Meaning
universal
X.P
For all X, P is true
X.P
There exists a value of X
such that P is true
existential
Predicate Calculus
Clausal Form
TOO MANY WAYS TO STATE THE SAME THING!
So…use a standard form for propositions, called
Clausal form:
B1  B2  ...  Bn  A1  A2  ...  Am
this means: if all the As are true,
then at least one B is true
Antecedent: right side
B1  B2  …  Bn  A1  A2  …  Am
Consequent: left side
B1  B2  …  Bn  A1  A2  …  Am
Predicate Calculus
and Proving Theorems
One use of propositions is to discover new
theorems that can be inferred from known
axioms and theorems
Definition: Resolution is
a method of inferencing
that allows propositions to be computed
from given propositions
Resolution
Really a form of data reduction!
Suppose
P1  P2
Q1  Q2
If P1 and Q2 are identical, then
Q1  P2
But it’s more complex than this...
Resolution
Definition: Unification is finding values for
variables in propositions that allows matching
process to succeed
Definition: Instantiation is assigning
temporary values to variables to allow
unification to succeed
After instantiating a variable with a value,
if matching fails,
then it may be necessary to backtrack and
instantiate with a different value
Theorem Proving
Proof by Contradiction
Definition: The hypotheses is a set of
pertinent propositions
Definition: The goal is the negation of the
theorem stated as a proposition
Theorem is proved by finding an inconsistency
Theorem Proving
When propositions are used for resolution,
only a restricted “clausal form” can be used:
A Horn clause can have only two forms:
Headed:
single atomic proposition on left side
Headless:
empty left side (used to state facts)
Most propositions
can be stated as
Horn clauses
An 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
Logic Programming is nonprocedural !
Logic programs do not state
how a result is to be computed,
but rather the form of the result.
An Overview of
Logic Programming
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)
A
The Basic Elements of Prolog
Edinburgh Syntax
Term
Constant
Atom
a constant, variable, or structure
an atom or an integer
a symbolic value of Prolog
An 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
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>)
Fact Statements
Used for the hypotheses
Headless Horn clauses
student(jonathan).
sophomore(ben).
brother(tyler, cj).
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
(usually implied)
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)
Resolution
Definition: Unification is finding values for
variables in propositions that allows matching
process to succeed
Definition: Instantiation is assigning
temporary values to variables to allow
unification to succeed
After instantiating a variable with a value,
if matching fails,
then it may be necessary to backtrack and
instantiate with a different value
Theorem Proving
Proof by Contradiction
Definition: The hypotheses is a set of
pertinent propositions
Definition: The goal is the negation of the
theorem stated as a proposition
Theorem is proved by finding an inconsistency
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)
Inferencing Process
Bottom-up resolution (forward chaining)
• Begin with facts and rules, then try to find
a sequence that leads to the goal
• Good for a large set of possible answers
Top-down resolution (backward chaining)
• Begin with the goal, then try to find a
sequence that leads to a set of facts
already known
• Good for a small set of possible answers
Prolog implementations use backward chaining
Inferencing Process
if
When seeking a goal with multiple subgoals,
the truth of one of the subgoals cannot be shown,
then
reconsider the previous subgoal to find an
alternative solution (called “backtracking”),
beginning the search where the previous search
left off
This can take lots of time and space because it may
be necessary to find all possible proofs to every
subgoal
Simple Arithmetic
Prolog supports
integer variables and integer arithmetic
The is binary operator takes
• right operand: an arithmetic expression
• left operand: a variable
A is B / 10 + C
Not the same as an assignment statement!
List Structures
Other basic data structure
(besides atomic propositions): 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)
Prolog append Function
Definition
append([],List,List).
append([Head|List_1],
List_2,
[Head|List_3]) :append(List_1, List_2, List_3).
Prolog reverse Function
Definition
reverse([],[]).
reverse([Head|Tail],List) :reverse(Tail,Result),
append(Result,[Head],List).
Rule Statements
parent(kim,kathy):- mother(kim,kathy).
Can use variables
(universal objects)
to generalize meaning:
parent(X,Y)
:- mother(X,Y).
grandparent(X,Z) :- parent(X,Y),
parent(Y,Z).
sibling(X,Y)
:- mother(M,X),
mother(M,Y),
father(F,X),
father(F,Y).
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 is called
matching, satisfying, or resolution
Inferencing Process
When goal has more than one subgoal,
it is possible to 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
Requires fewer computer resources
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
Trace Model
Prolog Example 1
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(chevy, Chevy_Distance).
Prolog Example 1
trace.
distance(chevy, Chevy_Distance).
(1)
(2)
(2)
(3)
(3)
(4)
(4)
(1)
1
2
2
2
2
2
2
1
Call:
Call:
Exit:
Call:
Exit:
Call:
Exit:
Exit:
distance(chevy, _0)?
speed(chevy, _5)?
speed(chevy, 105)
time(chevy, _6)?
time(chevy, 21)?
_0 is 105*21?
2205 is 105*21
distance(chevy, 2205)
Chevy_Distance = 2205
Prolog Example 2
likes(jake,chocolate).
likes(jake,apricots).
likes(darcie,licorice).
likes(darcie,apricots).
trace.
likes(jake,X),
likes(darcie,X).
Prolog Example 2
trace.
likes(jake,X), likes(darcie,X).
(1)
(1)
(2)
(2)
(1)
(1)
(3)
(3)
1
1
1
1
1
1
1
1
Call:
Exit:
Call:
Fail:
Redo:
Exit:
Call:
Exit:
X = apricots
likes(jake, _0)?
likes(jake, chocolate)?
likes(darcie, chocolate)?
likes(darcie, chocolate)?
likes(jake, _0)?
likes(jake, apricots)?
likes(darcie, apricots)?
likes(darcie, apricots)?
Prolog append Function
Definition
append([],List,List).
append([Head|List_1],
List_2,
[Head|List_3]) :append(List_1, List_2, List_3).
Prolog reverse Function
Definition
reverse([],[]).
reverse([Head|Tail],List) :reverse(Tail,Result),
append(Result,[Head],List).
Prolog reverse Function
Definition
% Here is a more efficient
(iterative/tail recursive) version.
reverse([],[]).
reverse(L,RL) :- reverse(L,[],RL).
reverse([],RL,RL).
reverse([X|L],PRL,RL) :reverse(L,[X|PRL],RL).
Prolog member Function
Definition
member(Element, [Element | _]).
member(Element, [_ | List]) :member(Element, List).
Logic Programming
Advantages
• Prolog programs are based on logic
– they are likely to be more
logically organized and written
• Processing is naturally parallel
– Prolog interpreters can take
advantage of multi-processor
machines
• Programs are concise
– development time is decreased
– good for prototyping
Logic Programming
Deficiencies
Resolution Order Control
Closed-World Assumption
The Negation Problem
Intrinsic Limitations
Resolution Order Control
• Rule order (clause order) determines the
order in which solutions are found
• Goal order determines the search tree
• Prolog uses Left-to-Right Resolution
– Left recursion causes infinite loops
– Same problems as Recursive Descent
• Special explicit control of backtracking
– “Cut” operator ( ! )
– A goal that is always satisfied
– Cannot be resatisfied after backtracking
Closed-World Assumption
• Prolog cannot prove that a goal is false
• True/Fail system, not a True/False system
The Negation Problem
Negatives are hard to prove
The Horn clause is positive logic
B  A1  A2  ...  An
B can be shown to be true, but not false
Intrinsic Limitations
Prolog cannot sort well, unless the programmer
provides the method
New inferencing techniques may correct this
Logic Programming
Applications
Relational Database Management Systems
Expert Systems
Natural Language Processing