2

Most things I've seen on processing boolean logic formulas says first to convert it to CNF or DNF form. Wikipedia says it is "useful in automated theorem proving", but not much more.

Wondering why it is necessary to perform this step, what aspect of it is being taken advantage of in which algorithm, etc. Without knowing more, it seems that some standard algorithm would've taken advantage of this feature, then all subsequent papers would have stated it as a requirement. But perhaps it's not necessary.

Lance
  • 75,200
  • 93
  • 289
  • 503

1 Answers1

2

In many fields algorithms are simpler if the input is first normalized.

In the case of logic formulas the main issue is that they can be nested arbitrarily deeply. Hence it intuitively makes sense to flatten them and give them a regular structure.

It turns out that transformation into clauses, especially if they are Horn clauses, is the most useful. They are what procedures like SDL resolution or DPLL work with. These are fundamental tools in logic programming, automated theorem proving, model checking, planning, etc.

  • It still says "difficult to work with" which is basically the same thing as it is useful to convert. Wondering why specifically. I (think) I understand the significance of clauses, and can see why one might want to transform into them. But I don't know what the actual reasons are why you would do that, which is what the question is about. – Lance Jul 21 '18 at 01:01
  • Thank you, I guess it makes sense, that is what I figured. It is because other procedures are built on it essentially. – Lance Jul 21 '18 at 02:23