on deduction via resolution

A SIMPLE SUBSET OF THE STEPS INVOLVED
IN THEOREM PROVING USING RESOLUTION
Steps 1 and 2 could be combined
1. Formulate statements such as:
a. “A implies B” or “when A then B” as: B if A
b. “All A’s do something” as: do(that) something if an A (using a predicate
such as A(x))
2. Change:
a. A if (B and C and D) to:
b. A if (B or C or D) to:
3. Use one of the following:
a. To prove A, make a new rule
b. To show for what x, A(x) is true, make a new rule
4. Given e.g. A or B or C, try, by substitutions if necessary, to obtain a clause of the
form
, then deduce B or C or D or E. One can represent this
graphically as:
A or B or C
B or C or D or E
5. Apply steps such as step 4 in such a way as to finally deduce a contradiction to
some rule B, i.e. to deduce .
6. To prove results such as 3b, examine the sequence of substitutions starting with
the X in the new rule
e.g. if the sequence is x  y  t  John, then A(John) is true and John is
the answer.
EXAMPLE. Consider the following set of statements:
1. Marcus is a Pompeian man
2. Pompeians are all Romans.
3. All Romans either hate Caeser, or else are loyal to him.
4. A man will not attempt to assassinate a ruler whom he is loyal to.
5. Caeser is a ruler
6. Marcus tried to assassinate Caeser.
Promblem: show that the above facts imply that some specific person hates Caeser.1
One now has to invent appropriate predicates for use in expressing the above facts:
such as:
man(x) to mean x is a man
pompeian(x) to mean x is a Pompeian
roman(x) to mean x is a Roman
ruler(x) to mean x is a ruler
hates(x, y) to mean x hates y
isLoyalTo(x, y) to mean x is loyal to y
tryAssassinate(x,y) to mean x tried to assassinate y.
1
Since Marcus is the only person referred to by name in these rules, one can expect the answer as to who hates
Caeser to be Marcus. But the problem here is to prove that this is so from the given facts. Also, in a more
extensive example, there may be many more rules that refer to many other people.
Using the above predicates, the data could be expressed as described in step 1 above,
as ,e.g.:
1. man(Marcus)
2. Pompeian(Marcus)
3. Roman(x) if Pompeian(x)
4. hate(x, Caeser) or loyalto(x, Caeser) if Roman(x)
we need rule 5 to make the “or” exclusive.
5. hate(x, Caeser) or loyalto(x, Caeser) if Roman(x)
8. tryAssassinate(x,y) if man(x) or ruler(y) or LoyalTo(x,y)
7. ruler(Caeser)
8. tryAssassinate(Marcus, Caeser)
Transforming these rules as described earlier into a form useful for theorem proving, we
get:
1. man(Marcus)
2. Pompeian(Marcus)
3. Roman(k) or Pompeian(k)
4. hate(s,Caeser) or loyalto(s, Caeser) or Roman(x)
5. hate(s,Caeser) or loyalto(s,Caeser) or Roman(x)
6. tryAssassinate(t,y) or man(t) or ruler(y) or loyalto(t,y)
7. ruler(Caeser)
8. tryAssassinate(Marcus, Caeser)
So now to determine who hates Caeser, we introduce a new rule, that nobody hates
Ceaser:
9. hates(x, Caeser)
(which means: for all x, x does not hate Caeser).
We then attempt to show, using resolution, that rule 8 is in contradiction to the other
rules. In this proof there will a series of substitutions for x, which will result in the
contradiction by substituting a value of x for which hates(x, Caeser) is true.
Note that, in order to make the substitutions clear, we use different variables in the
different rules
There is no algorithm for picking which clauses to use in any part of the proof. It’s a
matter of thinking ahead combined with trial and error. The wrong choice at some point
can make it impossible to proceed to the proof required, while on the other hand there
may be many possible correct proofs. Here is a proof for the above example
9. hates(x, Caeser)
4. hate(s,Caeser) or loyalto(s,Caeser) or Roman(x) )
x →s
loyalto(s,Caeser) or Roman(s)
3. Roman(k) or Pompeian(k)
s→k
isLoyalTo(k, Caeser) or Pompeian(x)
2. Pompeian(Marcus)
k→Marcus
loyalto(Marcus,Caeser)
6. tryAssassinate(t,y) or man(t) or ruler(y) or loyalto(t,y)
t→Marcus y→Caeser
tryAssassinate(Marcus,Caeser) or man(Marcus) or ruler(Caeser)
tryAssassinate(Marcus,Caeser) or man(Marcus)
tryAssassinate(Marcus,Caeser)
7. ruler(Caeser)
1. man(Marcus)
which is in contradiction to rule 8
The series of substitutions made in producing this contradiction, starting with the x in
hates(x, Caeser) was;
x → s → k → Marcus
We conclude that hates(Marcus, Caeser), i.e. Marcus hates Caeser.