CPS 352/543, 430/542 Lecture notes:
Overview of firstorder predicate logic
Coverage:
(CPS 352/543) [COPL] §§16.116.3 (pp. 617624),
[PLPP] §§12.112.3 (pp. 539552), and
(CPS 430/542) [FCDB] §§10.110.3 (pp. 463492)
What types of logics are there?
 propositional logic,
a proposition logical statement which is either true
or false (e.g., Socrates is a man).
 predicate logic (also called quantified logic)
(e.g., Man(Socrates))
Logic programming
 recurring theme: mismatch between formal systems and computer systems
 logic programming is based on formal logic
 `formal logic was developed to provide a method for
describing propositions, with the goal of allowing
those formally stated propositions to be checked for
validity' [COPL]
 `symbolic logic can be used for the three basic needs of formal logic: to
 express propositions,
 express relationships between propositions, and
 to describe how new propositions can be inferred from other
propositions which are assumed to be true' [COPL]
 the form of symbolic logic relevant to logic programming
is called firstorder predicate calculus
 essence of logic programming: `a collection of propositions are assumed to
be axioms (i.e., universal truths) and from these axioms, a desired fact is
proved by applying the rules of inference in some automated way' [PLPP].
Propositions
Propositional Logic (courtesy Randal Nelson and Tom LeBlanc,
Predicate Logic (courtesy Randal Nelson and Tom LeBlanc,
University of Rochester)
 atomic propositions:
 examples:
man(socrates).
friend(larry, sallie).
 man is called the functor
 larry, sallie is the ordered list of parameters
 when the functor and the ordered list of parameters are
written together in the form of a function as
one element of a relation, the result is called
a compound term
 no intrinsic semantics (they can mean whatever you
want them to mean)
 man(socrates). can be a fact or query
 compound
propositions: two or more atomic propositions connected by the
following logical connectors, or operators:
Concept 
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 implies b 
implication  ⊂  a ⊂ b 
b implies a 
(precedence proceeds topdown)
examples:
a ∨ b ⊃ c
a ∨ ¬b ⊃ d ⇔
(a ∨ (¬b)) ⊃ d
a ⊃ b ⇔ ¬ a ∨ b
 entailment (semantic consequence):
 P = Q
 read left to right says: `P entails Q'
 read right to left says: `Q follows from P' or
`Q is a semantic consequence of P'
 means that all of the models (i.e., true rows in the truth table) on the
left hand side must also be models on the right hand side
 for instance, a ∧ b = a ∨ b
 entailment (=) is not implication (⊃)
 implication is a statment, entailment is a metastatement
 quantifiers (introduce variables):
Quantifier  Example  Meaning 
universal  ∀ X.P  ∀ X,
P is true 
existential  ∃ X.P 
∃ a value of X such that P is true 
 examples:
∀ X.(USpresident(X) ⊃ UScitizen(X)).
∃ X.(USpresident(X) ∧ servedmorethan2terms(X)).
∃ X.(hascar(larry, X) ∧ sportscar(X)).
 scope is attached to atomic proposition
 use parentheses to indicate scope
 quantifiers have highest precedence
 great deal of redundancy in predicate calculus
 one proposition can be stated several different ways
 fine for logicians, but poses a problem if we are to implement
symbolic logic in a computer system
Clausal form
 a standard (simplified) form for propositions: B_{1} ∨
B_{2} ∨ ... ∨ B_{n} ⊂
A_{1} ∧
A_{2} ∧ ... ∧ A_{m}.
 A's and B's are terms
 left hand side is consequent
 right hand side is antecedent
 interpretation: if all of the A's are true, then
at least one of the B's must be true
 examples (courtesy [COPL]):
likes(bob, trout) ⊂ likes(bob, fish) ∧ fish(trout).
father(louis, al) ∨ father(louis, violet) ⊂
father(al, bob) ∧ mother(violet, bob) ∧ grandfather(louis, bob).
 advantages
 existential quantifiers are unnecessary
 universal quantifiers are implicit in the
use of variables in the atomic propositions
 no operators other than conjunction and disjunction are required
 all predicate calculus propositions can be converted to clausal form
Horn clauses
 `when propositions are used for resolution, only a restricted kind
of clausal form called a Horn clause
can be used, which further simplifies the resolutions process' [COPL]
 Horn clause: a proposition with 0 or 1 terms in the consequent
 headless Horn clause:
a proposition with 0 terms in the consequent (e.g.,
{} ⊂ man(jake). (or false ⊂ man(jake).)
(called a goal or query in PROLOG))
 headed Horn clause: a proposition with 1 atomic
term in the consequent (e.g.,
 likes(bob, trout) ⊂ {}. (or likes(bob, trout) ⊂ true.)
(called a fact in PROLOG)
 likes(bob, trout) ⊂ like(bob, fish) ∧ fish(trout).
(called a rule in PROLOG)
)
 `most, but not all, propositions can be stated as Horn clauses' [COPL]
(e.g., p(a) and (∃x, not(p(x)))
[PLPP], pp. 565566)
logic  PROLOG 
headless Horn clause  goal/query 
headed Horn clause  fact/rule 
Conversion examples
(courtesy [PLPP])
 basic idea: `remove or (∨) connectives by writing separate clauses
and treat the lack of quantifiers by assuming that variables
appearing in the head are universally quantified, while variables
appearing in the body (not also in the head) are existentially
quantified' [PLPP]
 greatest common divisor:
 specification of GCD (proposition):
the gcd of u and 0 is u
the gcd of u and v,
if v is not 0, is the same as the gcd of v and the
remainder of dividing v into u
 FOPL:
∀ u, gcd(u, 0, u).
∀ u, ∀ v, ∀ w,
gcd(u, v, w) ⊂ ∼ zero(v)
∧ gcd(v, u mod v, w).
 Horn clauses:
gcd(u, 0, u).
gcd(u, v, w) ⊂ ¬ zero(v) ∧ gcd(v,
u mod v, w).
 grandparent:
 specification of grandparent (proposition):
x is a grandparent of y if x is the parent of someone who is the
parent of y
 FOPL:
∀ x, ∀ y, (∃ z,
grandparent(x,y) ⊂ parent(x,z)
∧ parent(z,y)).
 Horn clause:
grandparent(x,y) ⊂ parent(x,z)
∧ parent(z,y).
remember, universal quantifier is implicit and
existential quantifier is not required:
all variables on lhs of ⊂ are universally quantified and those on
rhs (which do not appear on the lhs) are existentially quantified
 mammal:
 specification of mammal (proposition):
∀ x, if x is a mammal, then x has two or four legs
 FOPL:
∀ x, legs(x,2) ∨ legs(x,4) ⊂ mammal(x).
 Horn clauses:
legs(x,2) ⊂ mammal(x) ∧ ¬ legs(x,4).
legs(x,4) ⊂ mammal(x) ∧ ¬ legs(x,2).
 `in general the more connectives which appear on the lhs of the ⊂, the
harder to translate into a set of Horn clauses' [PLPP]
 skolemization: a technique to eliminate existential
quantifiers (courtesy Thoralf Skolem) involving Skolem constants
and functions
Use of all of this:
proving theorems (P = ?)
 what can we infer from known axioms and theorems?
 need a deductive apparatus known as rules of inference
Resolution
Resolution examples
 example (courtesy [PLPP]):
mammal(human) ⊂ {}.
{} ⊂ mammal(human).
mammal(human) ⊂ mammal(human).
{} ⊂ {} (proved!)
 another example (courtesy [PLPP]):
legs(x,2) ⊂ mammal(x) ∧ arms(x, 2).
legs(x,4) ⊂ mammal(x) ∧ arms(x, 0).
mammal(horse) ⊂ {}.
arms(horse,0) ⊂ {}.
{} ⊂ legs(horse, 4).
legs(x,4) ⊂ mammal(x) ∧ arms(x,0) ∧
legs(horse, 4). (using the second rule above)
now to cancel out, we need unification (bind x to horse)
legs(horse,4) ⊂ mammal(x) ∧ arms(x,0) ∧ legs(horse, 4).
{} ⊂ mammal(x) ∧ arms(x,0).
mammal(horse) ⊂ mammal(horse) ∧ arms(horse,0). (using the third rule above)
{} ⊂ arms(horse,0).
arms(horse,0) ⊂ arms(horse,0). (using the fourth rule above)
{} ⊂ {}. (proved!)
References
[COPL] 
R.W. Sebesta.
Concepts of Programming Languages.
AddisonWesley, Boston, MA, Sixth edition, 2003. 
[FCDB] 
J.D. Ullman and J. Widom. A First Course in Database Systems.
Prentice Hall, Upper Saddle River, NJ, Second edition, 2002.

[PLPP] 
K.C. Louden.
Programming Languages: Principles and Practice.
Brooks/Cole, Pacific Grove, CA, Second edition, 2002.

