Upload
christian-caymo
View
224
Download
0
Embed Size (px)
Citation preview
8/3/2019 Csci360 12 Logic Programming
1/49
1
CSCI 360
Survey Of ProgrammingLanguages
12 Logic Programming
Spring, 2008Doug L Hoffman, PhD
8/3/2019 Csci360 12 Logic Programming
2/49
Page 2
CSCI 360 Survey Of 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
8/3/2019 Csci360 12 Logic Programming
3/49
Page 3
CSCI 360 Survey Of Programming Languages
Introduction
Logicprogramming language or declarativeprogramming language
Express programs in a form of symbolic logic Use a logical inferencing process to produce
results
Declarativerather that procedural:
Only specification of resultsare stated (not detailedproceduresfor producing them)
8/3/2019 Csci360 12 Logic Programming
4/49
4
Predicate Calculus
CSCI 360 Survey Of Programming Languages
8/3/2019 Csci360 12 Logic Programming
5/49
Page 5
CSCI 360 Survey Of Programming Languages
Proposition
A logical statement that may or may not be true
Consists of objects and relationships of objects toeach other
8/3/2019 Csci360 12 Logic Programming
6/49
Page 6
CSCI 360 Survey Of Programming Languages
Symbolic Logic
Logic which can be used for the basic needs offormal 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 predicatecalculus
8/3/2019 Csci360 12 Logic Programming
7/49Page 7
CSCI 360 Survey Of Programming Languages
Object Representation
Objects in propositions are represented by simpleterms: 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
8/3/2019 Csci360 12 Logic Programming
8/49Page 8
CSCI 360 Survey Of Programming Languages
Compound Terms
Atomic propositionsconsist 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
8/3/2019 Csci360 12 Logic Programming
9/49Page 9
CSCI 360 Survey Of Programming Languages
Parts of a Compound Term
Compound term composed of two parts
Functor: function symbol that names the relationship
Ordered list of parameters (tuple)
Examples:
student(jon)
like(seth, OSX)
like(nick, windows)
like(jim, linux)
8/3/2019 Csci360 12 Logic Programming
10/49Page 10
CSCI 360 Survey Of Programming Languages
Forms of a Proposition
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
8/3/2019 Csci360 12 Logic Programming
11/49Page 11
CSCI 360 Survey Of Programming Languages
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
8/3/2019 Csci360 12 Logic Programming
12/49Page 12
CSCI 360 Survey Of Programming Languages
Quantifiers
Name Example Meaning
universal X.P For all X, P is true
existential X.P There exists a value of X such thatP is true
8/3/2019 Csci360 12 Logic Programming
13/49Page 13
CSCI 360 Survey Of Programming Languages
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
8/3/2019 Csci360 12 Logic Programming
14/49Page 14
CSCI 360 Survey Of Programming Languages
Predicate Calculus and Proving Theorems
A use of propositions is to discover new theoremsthat can be inferred from known axioms andtheorems
Resolution: an inference principle that allowsinferred propositions to be computed from givenpropositions
8/3/2019 Csci360 12 Logic Programming
15/49Page 15
CSCI 360 Survey Of Programming Languages
Resolution
Unification: finding values for variables inpropositions that allows matching process tosucceed
Instantiation: assigning temporary values tovariables to allow unification to succeed
After instantiating a variable with a value, ifmatching fails, may need to backtrackandinstantiate with a different value
8/3/2019 Csci360 12 Logic Programming
16/49Page 16
CSCI 360 Survey Of Programming Languages
Proof by Contradiction
Hypotheses: a set of pertinent propositions
Goal: negation of theorem stated as a proposition
Theorem is proved by finding an inconsistency
8/3/2019 Csci360 12 Logic Programming
17/49Page 17
CSCI 360 Survey Of Programming Languages
Theorem Proving
Basis for logic programming
When propositions used for resolution, onlyrestricted form can be used
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
8/3/2019 Csci360 12 Logic Programming
18/49Page 18
CSCI 360 Survey Of Programming Languages
Overview of Logic Programming
Declarative semantics
There is a simple way to determine the meaning of eachstatement
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
8/3/2019 Csci360 12 Logic Programming
19/49Page 19
CSCI 360 Survey Of Programming Languages
Example: Sorting a List
Describe the characteristics of a sorted list, not theprocess 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)
8/3/2019 Csci360 12 Logic Programming
20/49Page 20
CSCI 360 Survey Of Programming Languages
The Origins of Prolog
University of Aix-Marseille
Natural language processing
University of Edinburgh
Automated theorem proving
8/3/2019 Csci360 12 Logic Programming
21/49Page 21
CSCI 360 Survey Of Programming Languages
Terms
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 witha lowercase letter
a string of printable ASCII characters delimited byapostrophes
8/3/2019 Csci360 12 Logic Programming
22/49Page 22
CSCI 360 Survey Of Programming Languages
Terms: Variables and Structures
Variable: any string of letters, digits, andunderscores beginning with an uppercase letter
Instantiation: binding of a variable to a value
Lasts only as long as it takes to satisfy one completegoal
Structure: represents atomic proposition
functor(parameter list)
8/3/2019 Csci360 12 Logic Programming
23/49Page 23
CSCI 360 Survey Of Programming Languages
Fact Statements
Used for the hypotheses
Headless Horn clauses
female(shelley).
male(bill).
father(bill, jake).
8/3/2019 Csci360 12 Logic Programming
24/49
Page 24
CSCI 360 Survey Of Programming Languages
Rule Statements
Used for the hypotheses
Headed Horn clause
Right side: antecedent(ifpart) May be single term or conjunction
Left side: consequent(thenpart)
Must be single term
Conjunction: multiple terms separated by logicalAND operations (implied)
8/3/2019 Csci360 12 Logic Programming
25/49
Page 25
CSCI 360 Survey Of Programming Languages
Example Rules
ancestor(mary,shelley):- mother(mary,shelley).
Can use variables (universalobjects) to generalizemeaning:
parent(X,Y):- mother(X,Y).
parent(X,Y):- father(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).
8/3/2019 Csci360 12 Logic Programming
26/49
Page 26
CSCI 360 Survey Of Programming Languages
Goal Statements
For theorem proving, theorem is in form ofproposition that we want system to prove ordisprovegoal statement
Same format as headless Horn
man(fred)
Conjunctive propositions and propositions with
variables also legal goalsfather(X,mike)
8/3/2019 Csci360 12 Logic Programming
27/49
Page 27
CSCI 360 Survey Of Programming Languages
Inferencing Process of Prolog
Queries are called goals
If a goal is a compound proposition, each of the facts is asubgoal
To prove a goal is true, must find a chain of inference rulesand/or facts. For goal Q:
B :- A
C :- B
Q :- P Process of proving a subgoal called matching, satisfying, or
resolution
8/3/2019 Csci360 12 Logic Programming
28/49
Page 28
CSCI 360 Survey Of Programming Languages
Approaches
Bottom-up resolution, forward chaining
Begin with facts and rules of database and attempt to find sequencethat 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 offacts in database
Works well with a small set of possibly correct answers Prolog implementations use backward chaining
8/3/2019 Csci360 12 Logic Programming
29/49
Page 29
CSCI 360 Survey Of Programming Languages
Subgoal Strategies
When goal has more than one subgoal, can useeither
Depth-first search: find a complete proof for the firstsubgoal 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
8/3/2019 Csci360 12 Logic Programming
30/49
Page 30
CSCI 360 Survey Of Programming Languages
Backtracking
With a goal with multiple subgoals, if fail to showtruth of one of subgoals, reconsider previoussubgoal to find an alternative solution: backtracking
Begin search where previous search left off
Can take lots of time and space because may findall possible proofs to every subgoal
8/3/2019 Csci360 12 Logic Programming
31/49
Page 31
CSCI 360 Survey Of Programming Languages
Simple Arithmetic
Prolog supports integer variables and integerarithmetic
isoperator: takes an arithmetic expression as
right operand and variable as left operand
A is B / 17 + C
Not the same as an assignment statement!
8/3/2019 Csci360 12 Logic Programming
32/49
Page 32
CSCI 360 Survey Of Programming Languages
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 isSpeed * Time.
8/3/2019 Csci360 12 Logic Programming
33/49
Page 33
CSCI 360 Survey Of Programming Languages
Practical Matters
Loading a file?- consult('lists.pl').
?- reconsult('lists.pro').
?- [file1,file2,file3].
Exiting gprolog?- halt. or ^D
Manually enter code
?- [user].
^D
To see your code
?- listing.
8/3/2019 Csci360 12 Logic Programming
34/49
Page 34
CSCI 360 Survey Of Programming Languages
Trace
Built-in structure that displays instantiations ateach step
Tracing modelof 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)
8/3/2019 Csci360 12 Logic Programming
35/49
Page 35
CSCI 360 Survey Of Programming Languages
Example
likes(jake,chocolate).
likes(jake,apricots).
likes(darcie,licorice).
likes(darcie,apricots).
trace.
likes(jake,X),
likes(darcie,X).
8/3/2019 Csci360 12 Logic Programming
36/49
Page 36
CSCI 360 Survey Of Programming Languages
Example: Factorial Definition
factorial(0,1).
factorial(N,F) :- N>0,
N1 is N-1,
factorial(N1,F1),F is N * F1.
The Prolog goal to calculate the factorial of the number 3
responds with a value for W, the goal variable:
?- factorial(3,W).
W=6
8/3/2019 Csci360 12 Logic Programming
37/49
Page 37
CSCI 360 Survey Of Programming Languages
Example: Factorial Definition with Trace
?- trace.% The debugger will first creep -- showing everythingyes[trace]?- factorial(3,X).(1) 0 Call: factorial(3,_8140) ?
(1) 1 Head [2]: factorial(3,_8140) ?(2) 1 Call (built-in): 3>0 ?(2) 1 Done (built-in): 3>0 ?(3) 1 Call (built-in): _8256 is 3-1 ?(3) 1 Done (built-in): 2 is 3-1 ?
(4) 1 Call: factorial(2, _8270) ?...(1) 0 Exit: factorial(3,6) ?
X=6[trace]?- notrace.
% The debugger is switched off
8/3/2019 Csci360 12 Logic Programming
38/49
Page 38
CSCI 360 Survey Of Programming Languages
Negation as Failure
The negation-as-failure 'not' predicate could be defined inprolog as follows:
not(P) :- call(P), !, fail.
not(P).
The goal ?-call(P) forces an attempt to satisfy the goal P.
Gprolog uses \+ operator instead of not.
Another way one can write the 'not' definition is using the
Prolog implication operator '->' :
not(P) :- (call(P) -> fail ; true).
The body can be read "if call(P) succeeds (i.e., if P succeeds
as a goal) then fail, otherwise succeed". The semicolon ';'
appearing here has the meaning of exclusive logical-or.
8/3/2019 Csci360 12 Logic Programming
39/49
Page 39
CSCI 360 Survey Of Programming Languages
Example
It is important to realize that in a goal ?-not(g), if g hasvariables, and some instance of these variables lead tosatisfaction of g, then ?-not(g) fails.
For example, consider the following 'bachelor program:
bachelor(P) :- male(P), not(married(P)).
male(henry).male(tom).
married(tom).
8/3/2019 Csci360 12 Logic Programming
40/49
Page 40
CSCI 360 Survey Of Programming Languages
Example
Then?- bachelor(henry).yes?- bachelor(tom).no?- bachelor(Who).
Who= henry ;no?- not(married(Who)).no.
The first three responses are correct and as expected but the answer
to the fourth query might have been unexpected.The goal ?-not(married(Who)) fails because for the variable bindingWho=tom, married(Who) succeeds, and so the negative goal fails.
Thus, negative goals ?-not(g) with variables cannot be expected toproduce bindings of the variables for which the goal g fails.
CSC S O
8/3/2019 Csci360 12 Logic Programming
41/49
41
List Structures
CSCI 360 Survey Of Programming Languages
CSCI 360 S Of P i L
8/3/2019 Csci360 12 Logic Programming
42/49
Page 42
CSCI 360 Survey Of Programming Languages
List Structures
Other basic data structure (besides atomicpropositions we have already seen): list
Listis a sequence of any number of elements
Elements can be atoms, atomic propositions, orother terms (including other lists)
[apple, prune, grape, kumquat]
[] (empty list)[X | Y] (head X and tail Y)
CSCI 360 S Of P i L
8/3/2019 Csci360 12 Logic Programming
43/49
Page 43
CSCI 360 Survey Of Programming Languages
Append Example
append([], List, List).append([Head | List_1], List_2, [Head | List_3]) :-
append (List_1, List_2, List_3).
CSCI 360 S Of P i L
8/3/2019 Csci360 12 Logic Programming
44/49
Page 44
CSCI 360 Survey Of Programming Languages
Reverse Example
reverse([], []).
reverse([Head | Tail], List) :-
reverse (Tail, Result),
append (Result, [Head], List).
CSCI 360 S Of P i L
8/3/2019 Csci360 12 Logic Programming
45/49
Page 45
CSCI 360 Survey Of Programming Languages
Deficiencies of Prolog
Resolution order control
The closed-world assumption
The negation problem
Intrinsic limitations
CSCI 360 S Of P i L
8/3/2019 Csci360 12 Logic Programming
46/49
Page 46
CSCI 360 Survey Of Programming Languages
Applications of Logic Programming
Relational database managementsystems
Expert systems
Natural language processing
CSCI 360 S r e Of Programming Lang ages
8/3/2019 Csci360 12 Logic Programming
47/49
47
Summary
CSCI 360 Survey Of Programming Languages
CSCI 360 Survey Of Programming Languages
8/3/2019 Csci360 12 Logic Programming
48/49
Page 48
CSCI 360 Survey Of Programming Languages
Summary
Symbolic logic provides basis for logicprogramming
Logic programs should be nonprocedural
Prolog statements are facts, rules, or goals Resolution is the primary activity of a Prolog
interpreter
Although there are a number of drawbacks with thecurrent state of logic programming it has been usedin a number of areas
CSCI 360 Survey Of Programming Languages
8/3/2019 Csci360 12 Logic Programming
49/49
CSCI 360 Survey Of Programming Languages
Next Time
Exception Handling
and
Event Handling