![Page 1: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/1.jpg)
1
CS2136:Paradigms of Computation
Class 07:
Creating & Altering the DatabaseProlog & Logic Programming
First-Order Predicate Calculus
Copyright 2001, 2002, 2003 Michael J. Ciaraldi and David Finkel
![Page 2: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/2.jpg)
2
Creating and Alteringthe Database
![Page 3: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/3.jpg)
3
Creating the Database
Some Prolog implementations let you type in facts and rules.
SWI-Prolog compiles facts and rules when you load in a Prolog source file.
![Page 4: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/4.jpg)
4
Creating the Database II
Clocksin & Mellish: consult(filename)
Adds clauses to the in-memory database.
reconsult(filename)Supersedes clauses for same predicate.Adds clauses for new predicates.
SWI-Prolog: consult(filename)
Acts like C & M reconsult.
![Page 5: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/5.jpg)
5
Altering the Database
Clocksin & Mellish: asserta(clause).
Inserts clause at beginning of database.
assertz(clause).Inserts clause at end of database.
retract(clause).Removes clause from database.
![Page 6: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/6.jpg)
6
Altering the Database II
SWI-Prolog: asserta, assertz, retract
Same as previous slide.
assert(clause)Same as assertz.
![Page 7: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/7.jpg)
7
Logic Programming
![Page 8: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/8.jpg)
8
Logic Programming
Basic Idea: Don’t tell the program what to do when. Tell it what is true and let it draw
conclusions.Looked at another way:
Don’t say how to solve the problem. Say what a solution looks like.
Yet another way: Declarative semantics. Not procedural semantics.
![Page 9: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/9.jpg)
9
Relating Prolog to Logic Programming
Consider the Prolog statement: mother(X,Y) :- parent(X,Y),female(Y).
This… Expresses a proposition we hypothesize
is true. Says how to show that someone is a
mother.
![Page 10: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/10.jpg)
10
Predicate Calculus
Not directly related to the differential or integral calculus you already know.
![Page 11: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/11.jpg)
11
What is “Calculus”? Calculus (from www.dictionary.com):
1. Pathology. An abnormal concretion in the body, usually formed of mineral salts and found in the gallbladder, kidney, or urinary bladder, for example.
2. Dentistry. Tartar.
(continued…)
![Page 12: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/12.jpg)
12
What is “Calculus”? Calculus (from www.dictionary.com):
3. Abbr. calc. Mathematicsa. The branch of mathematics that deals with
limits and the differentiation and integration of functions of one or more variables. [What we usually think of.]
b. A method of analysis or calculation using a special symbolic notation. [What we will talk about today.]
c. The combined mathematics of differential calculus and integral calculus. [What we usually think of.]
4. A system or method of calculation: “ [a] dazzling grasp of the nation's byzantine budget calculus” (David M. Alpern).
![Page 13: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/13.jpg)
13
Predicate Calculus:First- and Second-Order
predicate calculus - an extension of the propositional calculus that allows the use of predicates, logical statements which may include variables. First-order predicate calculus only allows simple variables. Second-order predicate calculus allows variables that may themselves be predicates. The language Prolog is, for the most part, a first-order predicate calculus system.
http://www.ai.usma.edu:8080/overview/GLOSSARY.HTM
![Page 14: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/14.jpg)
14
Predicate Calculus(the 50-minute version)
We have “Terms”, which can be either: Constants (like Prolog atoms). Variable symbols (like in Prolog). Compound terms (function symbol +
arguments), e.g.:wife(henry)distance(point1,X)
“Atomic Propositions” express relationships between objects. Predicate symbols + arguments, e.g.:
human(mary)likes(Man,wine(chianti))
![Page 15: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/15.jpg)
15
Differences betweenPC and Prolog
In Prolog, a structure can be: a goal an argument in another structure both
In PC: Function symbols are functors used to
construct arguments. Predicate symbols are functors used to
construct propositions.
![Page 16: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/16.jpg)
16
Making CompoundPropositions from AtomicLogical connectives:
, are any proposition.
Connective
PC Syntax
Book Syntax
Meaning
Negation ¬ ~ “not ”
Conjunction
& “ and ”
Disjunction # “ or ”
Implication -> “ implies ”
Equivalence
<-> “ is equivalent
to ”
![Page 17: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/17.jpg)
17
Implication: What does “->” (pronounced “ implies ”) mean?
Whenever is true, is true.This is equivalent to (~) # Does not imply causality.Truth table:
->
false false true
false true true
true false false
true true true
![Page 18: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/18.jpg)
18
Equivalence: What does “” (pronounced “ is equivalent to ”) mean?
Whenever is true, is true, and vice versa.
This is equivalent to (->) & (->) Also equivalent to (&) # (~&~)Truth table:
->
false false true
false true false
true false false
true true true
![Page 19: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/19.jpg)
19
QuantifiersMeaning of these propositions is only
defined when variables are introduced by quantifiers.
v is a variable, P is a proposition.
Quantifier PC Syntax
Book Syntax
Meaning
Universal v.P all(v,P) “P is true whatever v stands for”
Existential v.P exists(v,P) “There is something v can stand for, such that P is true”
![Page 20: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/20.jpg)
20
Universal Quantifier:What does “v.P” or “all(v,P)” mean?
For all v, P is true.Example:
all(X, man(X) -> human(X)) “For all X, if X is a man, X is human.” “All men are human.”
![Page 21: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/21.jpg)
21
Existential Quantifier:What does “v.P” or “exists(v,P)” mean?
There is a v, such that P is true.Example:
exists(Z, father(john,Z) & female(Z)) “There exists a Z, such that john is the
father of Z and Z is female.” “John has a daughter.”
![Page 22: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/22.jpg)
22
Quantifiers in Prolog I
In Prolog rules: For any variable in the head of the rule,
a universal quantifier. For any variable in the body of the rule
that doesn’t appear in the head, existential quantifier.
![Page 23: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/23.jpg)
23
Quantifiers in Prolog II
Example: mom(X) :- mother(X, Y). In English: X is a mom if X is the mother of
Y With quantifiers: for all X, X is a mom is there exists a Y so
that X is the mother of Y. Symbolically:X mom(X) :- Y mother(X, Y).
![Page 24: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/24.jpg)
24
Now What?
There are ways to manipulate the propositions into standard forms, and do things with them.
Beyond the scope of this course, but we can look at some things.
![Page 25: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/25.jpg)
25
Resolution
Suppose we take certain things to be true, what follows logically from them?
J. Alan Robinson discovered the Resolution Principle, which can determine this mechanically.
Fit two clauses together, then drop out the same atomic formula from both sides.
![Page 26: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/26.jpg)
26
Resolution ExampleIn this notation, “;” means “or”.Clauses:
sad(chris);angry(chris) :- workday(today), raining(today).
unpleasant(chris) :- angry(chris),tired(chris).Merge to get:
sad(chris);angry(chris);unpleasant(chris) :- workday(today),raining(today), angry(chris),tired(chris).
Simplify to: sad(chris);unpleasant(chris) :-
workday(today),raining(today),tired(chris).
![Page 27: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/27.jpg)
27
Problems With Resolution
Resolution may generate many clauses. How do you get them all? How do you know which ones you want?
Resolution does not guarantee that you can prove some clause is true.
Resolution can show if a set of clauses is consistent or inconsistent. Inconsistent if they resolve to the empty
clause “:- .”
![Page 28: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/28.jpg)
28
What Good Does This Do?
You can assert something is true by putting it on the left side of an “:-”. loyal(rover) :- .
You can assert something is false by putting it on the right side of an “:-”. :- loyal(rover).
So…
![Page 29: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/29.jpg)
29
Proving Through Resolution
Start with a set of clauses which are consistent.
Add the negation of the clause you are trying to prove.
See if they resolve to the empty clause, meaning they are inconsistent.
If so, the clause is true.
![Page 30: 1 CS2136: Paradigms of Computation Class 07: Creating & Altering the Database Prolog & Logic Programming First-Order Predicate Calculus Copyright 2001,](https://reader035.vdocuments.site/reader035/viewer/2022062421/56649cdf5503460f949a8f54/html5/thumbnails/30.jpg)
30
Next Time
More Prolog & FOPC!