Computer Science Stack Exchange is a question and answer site for students, researchers and practitioners of computer science. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Assume I have an incomplete knowledge base, for example:

(rich(dave), poor(dave))  // dave is either poor or rich

(not rich(dave), not poor(dave))  // dave is not poor and rich at the same time.

My questions are: 1. If I do resolution on the above clauses, will I get the empty clause? and 2. If Yes, Does that mean my knowledge base is inconsistent?

share|cite|improve this question

migrated from Nov 5 '12 at 16:45

This question came from our site for theoretical computer scientists and researchers in related fields.

All the resolution tutorials I have found only resolve one predicate at a time, and I don't know how to handle the above. – Aida T. Nov 5 '12 at 2:27
up vote 0 down vote accepted

The theory is not inconsistent and trivially admits two different models :

  • a first one in which dave is rich but not poor;
  • a second one in which dave is poor but not rich.

You're maybe confusing the "empty clause" which contains no literal, thus being always false, with the "true clause" which contains both a literal and its negation, thus being always true. Applying resolution leads to the "true clause" resolvent, not the "empty clause".

share|cite|improve this answer
Thank you. Does this mean in resolution, ALWAYS one predicate is resolved in each step, right? – Aida T. Nov 17 '12 at 17:47
Understanding "resolved" as "deleted" : yes.… – Romuald Nov 18 '12 at 19:20

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.