Vous êtes sur la page 1sur 5

Resolution.

Resolution theorem proving works by showing the negation of the theorem, to be proved
cannot be true. This is called proof by refutation.

To use resolution, the axioms involved in the proof must be expressed in a logic form
called clause form. Logic sentences in clause form contain no quantifiers, implications or
conjunctions.

Clause 1:Not(Hairy(X)) Or Dog(X)


is an example of a sentence in clause form.

Resolution theorem proving works by producing resolvents.


Two clauses can be resolved to produce a new clause(i.e. its resolvent), if one clause
contains the negation of a predicate in the other formula.
The resolvent consists of those literals in both clauses less the opposing literals.
The following clause
Clause 2: Hairy(X)
could be resolved with Clause 1. to produce the resolvent Dog(X).

It might be that two literals are not quite direct opposites but only can be matched by
appropriate substitutions. Finding appropriate substitutions is called unification and the
substitution is called a unifier.

For example, if clause 2 were Hairy(Y) then it could only be resolved with clause 1
using the unifier {Y / X} i.e. Y substituted by X.

To illustrate Resolution theorem proving we use clause 1 and and the latter version of
clause 2, i.e. Hairy(Y).

The theorem we want to prove is that X is a dog, i.e. Dog(X). So we negate this clause
to produce clause 3, Not(Dog(X)).
Resolving clause 1 and clause 2 using the unifier {Y/ X} we get clause 4, Dog(X).
Adding this and clause 3 to the set of clauses we get:

Clause 1:Not(Hairy(X)) Or Dog(X).


Clause 2:Hairy(Y).
Clause 3:Not(Dog(X).
Clause 4: Dog(X).

Now, all these clauses are supposed to be true but we have a contradiction between clause
3 and clause 4, so the refutation of the theorem, i.e. clause 3 is inconsistent with the
original set of clauses. Therefore we can assume the theorem to be proved.
Laws of Logic

X f(X) == X( f (X)
X f(X) == X( f (X)
X f(X) === Yf(Y)
X f(X) == Y f(Y)

X (p(X) q(X)) === X(p(X) Yq(Y))


X (p(X) q(X)) === X (p(X) Yq(Y))

Skolemization

Dropping the existential quantifier.


We can do this in two ways via a skolem constant and a skolem function.

Consider
X dog(X).
We can just give the dog that exists a name, say rover and replace the above
expression with
dog(rover)
rover is called a skolem constant

X Y f(X,Y) with a function of X instead of Y


We can replace the above with
X f(X,f1(X))
f1(X) is a skolem function

Example
1 X Y mother(X,Y) Everybody has a mother. Can be replaced by
2 X mother(X,m(X)) where m(X) is a skolem function which returns the mother of
X

Similarly we can replace expressions of the form

Convert the following expression to clause form.

X( f (X) Y( m(X,Y))) X Z((a(X,Z) b(X,Z)) c(Z,3))

Reduce
X( f (X) Y( m(X,Y))) X Z((a(X,Z) b(X,Z)) c(Z,3))
Negation locally scoped so next get rid of

X( f (X) ( m(X,q(X)))) X Z((a(X,Z) b(X,Z)) c(Z,3))


Change universally quantified names

X( f (X) ( m(X,q(X)))) W Z((a(W,Z) b(W,Z)) c(Z,3))


Move quantifiers to the left

X W Z ( f (X) ( m(X,q(X)))) ((a(W,Z) b(W,Z)) c(Z,3))


Drop quantifiers

( f (X) ( m(X,q(X)))) ((a(W,Z) b(W,Z)) c(Z,3))

Conjunts of disjuncts so three clauses

( f (X) ( m(X,q(X))))

((a(W,Z) b(W,Z))

c(Z,3))

Finally make variable names unique in each clause.

( f (X) ( m(X,q(X))))
((a(W,Z) b(W,Z))
c(Z1,3))

4:
a) Outline an algorithm for performing unification
Function Unify(E1, E2);
begin
case
both E1 and E2 are constants or the empty list

if E1 = E2 then return {} else return FAIL

E1 is a variable: if E1 occurs in E2 then return FAIL


else return {E2/E1};

E2 is a variable: if E2 occurs in E1 then return FAIL


else return {E1/E2};

otherwise
begin
HE1:= head of E1
HE2:= head of E2
SUBS1 = UNIFY(HE1,HE2);
IF SUBS1 = FAIL THEN RETURN FAIL;

TE1 := APPLY( SUBS1, REST OF E1)


TE2 := APPLY( SUBS1, REST OF E2)

SUBS2:= UNIFY(TE1,TE2);
IF SUBS2 = FAIL THEN RETURN FAIL; ELSE RETURN THE COMPOSITION OF SUBS1 AND
SUBS2.
END
end end.

Using the algorithm presented in part a), unify the following pairs of expressions

i) password( mary, favourite(Y,X)) with password(X, favourite(toy,f(X))

Fails because eventually mary and f(mary) which cannot be unified are invalidly
matched.

ii) p(X,a,Y) with p(Z,Z,b)


{X/Z, a/X,bY}

iii) story(X, m(X), Y, Z) with story(baby_bear, Y1, d(X), goldilocks)


{{ baby_bear/X, m(baby_bear)/Y1, d(baby_bear)/Y, goldilocks/ Z}

Given the following set of clauses use resolution to prove the axiom : expensive(f1car)

1: fast(X) big(X)
2: big(Y) economical(Y) showy(f1car)
3: fast(U) new(U)
4: showy(T) high_tax(T)
5: new(G)
6: high_tax(S)
7: economical(Z) expensive(Z)

1: fast(X) big(X)
2: big(Y) economical(Y) showy(f1car)
3: fast(U) new(U)
4: showy(T) high_tax(T)
5: new(G)
6: high_tax(S)
7: economical(Z) expensive(Z)
To Prove EXPENSIVE(f1car)
ADD 8:NOT EXPENSIVE(f1car)

Resolve 1 and 2 with {X/Y} to get


9: FAST(X) OR ECONOMICAL(X) OR SHOWY(f1car)

Resolve 9 and 3 with {X/U} to get


10: NEW(X) OR ECONOMICAL(X) OR SHOWY(f1car)

Resolve 10 and 5 with {X/G} to get


11:ECONOMICAL(X) OR SHOWY(f1car)

Resolve 11 and 7 with {X/Z} to get


12:EXPENSIVE(X) OR SHOWY(f1car)

Resolve 12 and 8 with {f1car/X} to get


13: SHOWY(f1car)

Resolve 13 and 4 with {f1car/T} to get


14: HIGH_TAX(f1car)

Resolve 14 and 6 with {f1car/S} to get


15: [] QED.

Vous aimerez peut-être aussi