Resolution for Predicate Calculus

The resolution step is still valid for predicate calculus, i.e., if clause C1 contains a literal L and clause C2 contains ¬ L, then the resolvent of C1 and C2 is a logical consequence of C1 and C2 and may be added to the set of clauses without changing its truth value.

However, since L in C1 and ¬ L in C2 may contain different arguments, we must do something to make L in C1 and ¬ L in C2 exactly complementary.

Since every variable is universally quantified, we are justified in substituting any term for a variable. Thus, we need to find a set of substitutions of terms for variables that will make the literals L in C1 and ¬ L in C2 exactly the same. The process of finding this set of substitutions is called unification. We wish to find the most general unifier of two clauses, which will preserve as many variables as possible.

Example: C1 = P(z) &or Q(z), C2 = ¬ P(f(x)) &or R(x) . If we substitute f(x) for z in C1, C1 becomes P(f(x)) &or Q(f(x)) . The resolvent is Q(f(x)) &or R(x) .