Normal Forms

Equivalences can often be used to
*simplify* formulas,
to obtain equivalent
formulas of a certain syntactic form,
also called *normal forms*.

An advantage of normal forms
is that certain questions can often be easier
answered.
*Conjunctive* and *disjunctive forms*
are especially useful in this sense.

A propositional formula is said to be in conjunctive form if

- it contains only the logical connectives , and ,
- no logical connective occurs inside of a negation, and
- no conjunction occurs inside of a disjunction.

We speak of a disjunctive form if
the last condition is replaced by the condition
that *no disjunction occur inside any conjunction*>

For example, is neither in disjunctive nor conjunctive form, whereas is in disjunctive form, but not in conjunctive form.

Construction of Normal Forms

The construction of (disjunctive or conjunctive) normal forms can be done in stages, to ensure that all three conditions will be satisfied.

For instance, we have already seen that equivalences can be used to eliminate certain connectives:

Similar equivalences can be devised to eliminate other connectives, such as exclusive-or.

Exhaustive application of these equivalences will result in a formula containing no logical connectives other than negation, conjunction and disjunction.

Negation Normal Form

A formula that satisfies the first two conditions
is said to be in *negation normal form*.

The following additional equivalences can be employed to push negations inside of the other connectives:

Repeated application of this equivalences, from left to right, will result in a negation normal form.

Construction of Disjunctive and Conjunctive Forms

In the final stage of construction of disjunctive or conjunctive normal forms we just need to apply distributivity:

to obtain conjunctive forms, and

to obtain disjunctive forms.

Conjunctive forms are usually written
as ``products of sums (of literals),''
and disjunctive forms
as ``sums of products (of literals),''
where by a sum we mean a disjunction
and
by a product a conjunction
.
A literal is either a variable *p* or the negation thereof, .

*Theorem.*

A formula in conjunctive form is a tautology if, and only if, each one of its sums contains both a variable and its negation.A formula in disjunctive form is a contradiction if, and only if, each one of its products contains both a variable and its negation.

Clauses

Disjunctions of literals
are also called *clauses*.

Since a conjunction is true under a given truth assignment if, and only if, each formula is true, and each propositional formula is equivalent to a conjunctive form, we may conclude that each propositional formula can be represented in logically equivalent form as a collection of clauses.

For example, can be represented by the two clauses, and .

Each literal in a clause is either a propositional
variable (a ``positive literal'') or the negation
of a variable (a ``negative literal'').
If a clause contains at most one positive literal,
then it is called a *Horn clause*.

For example, and are Horn clauses, but is not a Horn clause.

An interesting aspect of Horn clauses is that
they can be interpreted as program rules and used
for computation, as is done in *logic programming*.

Logic Programming

A Horn clause is logically equivalent to the implication .

If the implication is known to be true,
and one wishes to prove *q*,
then it sufficient to show that are all true;
an observation that provides the logical basis for logic programming.

A *logic program* is a set of Horn clauses,
each containing exactly one positive literal
(and zero or more negative literals).
Such Horn clauses are usually written as backward implications

and called *program rules*.
More specifically, *q* is called the *head* of the rule,
and the sequence the *body* of the rule.
(Each rule must have a head, but the body may be empty.)

For example,

is a logic program of six rules. The first five rules have an empty body and represent facts (about the British royal family).P(Edward VII, George V)

P(Victoria, Edward VII)

P(Alexandra, George V)

P(George VI, Elizabeth II)

P(George V, George VI)

The last rule defines the grandparent relation in terms of the parent relation:
a person *x* is a grandparent of *y*
if there is a third person *z*, such that *x* is the parent of *z*,
and *z* the parent of *y*.

The use of variables, such as *x*, *y*, and *z*,
which denote individuals
goes beyond the scope of propositional logic,
but is crucial for the usefulness of logic programming.

Informally, the rule may be thought of as a schema representing all clauses obtained by substituting specific values for the variables, e.g.,

or

In addition to the program rules one needs to specify
a *goal* (or a list of goals),
e.g., *G*(Victoria, George V).

A computation with a logic program represents an attempt to derive the goal from the program rules (in an indirect way by deriving a contradiction in the form of the ``empty clause'' from the negation of the goal).

Resolution

For example, the negation of the above goal is written as a negative clause

We have also seen that
suitable values may be substituted for the variables in the
last program rule, so that the head is
*G*(Victoria, George V).

This indicates that the given goal may be *reduced* to subgoals

Both subgoals are present as program rules and hence can be deleted, which results in the empty clause. We conclude that the original goal logically follows from the program clauses.

The logical inference rule underlying such computations is called resolution.

The propositional version of resolution for Horn clauses is:

From and

derive .

Much of the power of logic programming derives from the fact that resolution can be generalized to effectively handle clauses with variables.

For instance, if one specifies the goal

the result of the computation will be a list of all grandchildren of Victoria. A discussion of these aspects of logical programming is beyond the scope of this course.

*
*

Tue Aug 24 17:14:13 EDT 1999