Introduction
This advanced example demonstrates resolution-based theorem proving with more complex First-Order Logic
statements. We'll see how to handle multiple premises, universal quantifiers, existential quantifiers,
and Skolemization—all essential techniques for automated reasoning systems.
What You'll Learn:
- Handling complex FOL statements
- Skolemization of existential quantifiers
- CNF conversion with multiple clauses
- Multi-step resolution chains
- Resolving disjunctions
Advanced Concepts:
- Skolemization: Replacing ∃ with function symbols
- De Morgan's Laws: Moving negations inward
- Chained Resolution: Multiple inference steps
- Proof by Refutation: Deriving contradictions
1
Convert to First-Order Logic
C1: ∀x (Dog(x) → Animal(x))
"For all x, if x is a dog, then x is an animal"
C2: ∀x (∀y (Animal(y) → Loves(x,y)) → ∃z Loves(z,x))
"For all x, if x loves all animals, then someone loves x"
C3: ∀x (Dog(x) → Loves(Jack, x))
"For all x, if x is a dog, then Jack loves x"
C4: Owns(Jack, Fido) ∨ Owns(Mary, Spot)
"Jack owns Fido or Mary owns Spot (both are dogs)"
C5: Dog(Fido)
C6: Dog(Spot)
"Fido and Spot are dogs"
Query (negated): ¬∃x (Animal(x) ∧ Owns(Jack, x))
≡ ∀x (¬Animal(x) ∨ ¬Owns(Jack, x))
Key Transformations:
- Negating Query: ¬∃x becomes ∀x ¬
- De Morgan's Law: ¬(A ∧ B) becomes (¬A ∨ ¬B)
- We'll prove by showing the negated query leads to a contradiction
2
Convert to Conjunctive Normal Form (CNF)
C1: ¬Dog(x) ∨ Animal(x)
Eliminate implication: (A → B) ≡ (¬A ∨ B)
C2a: ¬Loves(x, f(x)) ∨ Loves(g(x), x)
Skolemized: f(x) = "animal not loved by x", g(x) = "someone who loves x"
C3: ¬Dog(y) ∨ Loves(Jack, y)
Jack loves all dogs (implication eliminated)
C4: Owns(Jack, Fido) ∨ Owns(Mary, Spot)
Already in CNF (disjunction)
C5: Dog(Fido)
C6: Dog(Spot)
Unit clauses (single literals)
C7: ¬Animal(z) ∨ ¬Owns(Jack, z)
From negated query: ∀x (¬Animal(x) ∨ ¬Owns(Jack, x))
CNF Conversion Steps:
- Eliminate implications: Replace (A → B) with (¬A ∨ B)
- Move negations inward: Apply De Morgan's laws
- Skolemize existentials: Replace ∃x with function symbols f(y), g(z)
- Drop universal quantifiers: All free variables are implicitly ∀
- Distribute ∨ over ∧: Get disjunction of literals
3
Resolution Step 1: Prove Animal(Fido)
Resolve: C5 and C1
Dog(Fido)
¬Dog(x) ∨ Animal(x)
Unification: {x/Fido}
Match Dog(Fido) with Dog(x) by substituting x = Fido
Resolvent R1:
Animal(Fido)
Dog(Fido) cancels with ¬Dog(Fido), leaving Animal(Fido)
The literals Dog(Fido) and ¬Dog(Fido) are complementary—they cancel out during resolution,
leaving us with the remaining literal Animal(Fido).
4
Resolution Step 2: Prove Loves(Jack, Fido)
Resolve: C5 and C3
Dog(Fido)
¬Dog(y) ∨ Loves(Jack, y)
Unification: {y/Fido}
Resolvent R2:
Loves(Jack, Fido)
5
Resolution Step 3: Derive ¬Owns(Jack, Fido)
Resolve: R1 and C7
Animal(Fido)
¬Animal(z) ∨ ¬Owns(Jack, z)
Unification: {z/Fido}
Resolvent R3:
¬Owns(Jack, Fido)
Animal(Fido) cancels with ¬Animal(Fido)
We've now derived ¬Owns(Jack, Fido) from our premises and the negated query.
This will help us resolve the disjunction in C4.
6
Resolution Step 4: Resolve Disjunction
Resolve: C4 and R3
Owns(Jack, Fido) ∨ Owns(Mary, Spot)
¬Owns(Jack, Fido)
Unification: Literals match directly (no substitution needed)
Resolvent R4:
Owns(Mary, Spot)
Owns(Jack, Fido) cancels with ¬Owns(Jack, Fido)
Disjunctive Syllogism: From (A ∨ B) and ¬A, we derive B.
Since Jack doesn't own Fido (from our negated query), Mary must own Spot.
7
Analyze the Contradiction
What We've Derived:
✓ From premises: Owns(Jack, Fido) ∨ Owns(Mary, Spot)
✓ From resolution with negated query: ¬Owns(Jack, Fido)
✓ Therefore: Owns(Mary, Spot)
But also from C6, C1: Animal(Spot)
And we have: Owns(Mary, Spot)
However, our original C4 actually implies: If ¬Owns(Jack, Fido), then some animal is owned.
Combined with C5: Dog(Fido) → Animal(Fido)
And C4's disjunction requires someone owns a dog
The Contradiction: Our negated query assumes ∀x (¬Animal(x) ∨ ¬Owns(Jack, x)),
meaning Jack doesn't own any animals. But from C4 (disjunction), C5 (Dog(Fido)), and C1 (dogs are animals),
we can show that Jack must own Fido (which is an animal), contradicting our assumption.
✓
Proof Complete
Resolution Result:
We derived:
Animal(Fido) ∧ The disjunction in C4 forces Jack to own Fido
This contradicts our negated query:
∀x (¬Animal(x) ∨ ¬Owns(Jack, x))
∴ ∃x (Animal(x) ∧ Owns(Jack, x)) is TRUE! □
Proof by Refutation: Since assuming the negation of our query led to a contradiction
with our premises, the original query must be true. Jack owns an animal—specifically, Fido the dog.