Revised Resolution Refutation Procedure

procedure resolution(KB, Q)

   ;; KB is a set of consistent, true FOL sentences
   ;; Q is a goal sentence that we want to derive
   ;; return success if KB |- Q, and failure otherwise

   KB = union(KB, ~Q)

   KB = clause-form(KB)  ; convert sentences to clause form

   while false not in KB do

    {pick 2 clauses, C1 and C2, that contain literals that unify

     if none, return "failure"

     resolvent = resolution-rule(C1, C2)

     KB = union(KB, resolvent) }

   return "success"

end