In logic, and in particular in propositional calculus, a Horn clause is a proposition of the general type (p and q and ... and t) implies u, where the number of propositions combined by ands is as large as we like.

These play a basic role, for example, in logic programming. The reasons for that are probably concealed rather than revealed by an alternate way of writing such a clause, within classical logic: namely as

(not p) or ... or (not t) or u.

This definition is to be found in some logic texts, but it would be less appropriate to explain why Horn clauses are important for constructive logic. However, this form shows that Horn clauses are a subset of conjunctive normal form in which all but one of the terms are negated.

The relevance of Horn clauses to theorem proving by first order resolution is that the resolution of two Horn clauses is a Horn clause. In automated theorem proving, this can lead to greater efficiencies in representation of the clauses on a computer. In fact, Prolog is a programming language constructed entirely out of Horn clauses.

The name "Horn clause" comes from the logician Alfred Horn, who first pointed out the significance of such clauses in 1951, in the article "On sentences which are true of direct unions of algebras", Journal of Symbolic Logic, 16, 14-21.

This article was originally based on material from FOLDOC, used with permission. Update as needed.