In this subsection we introduce a special class of formulae which are of particular interest for logic programming. Furthermore it turns out that these formulae admit an efficient test for satisfiability.
A formula is a Horn formula if it is in CNF and every disjunction contains at most one positive literal. Horn clauses are clauses, which contain at most one positive literal.
where t r u e is a tautology and f a l s e is an unsatisfiable formula.
In clause form this can be written as
and in the context of logic programming this is written as:
For Horn formula there is an efficient algorithm to test satisfiability of a formula F :
The above algorithm is correct and stops after n steps, where n is the number of atoms in the formula.
As an immediate consequence we see, that a Horn formula is satisfiable if there is no subformula of the form A 1 ∧ ⋯ ∧ A n → f a l s e \land \cdots \land A_\to false> .
Let F be a propositional logical formulae and S a subset atomic formula occurring in F . Let T S ( F ) (F)> be the formula which results from F by replacing all occurrences of an atomic formulae A ∈ S by ¬ A . Example: T < A >( A ∧ B ) = ¬ A ∧ B >(A\land B)=\lnot A\land B> . Prove or disprove: There exists an S for
Apply the marking algorithm to the following formula F.
Which is a least model?
( A ∨ ¬ D ∨ ¬ E ) ∧ ( B ∨ ¬ C ) ∧ ( ¬ B ∨ ¬ D ) ∧ D ∧ ( ¬ D ∨ E )
Decide which one of the indicated CNFs are Horn formulae and transform then into a conjunction of implications: