In this chapter, we study the class of Horn functions. The importance of Horn functions is supported by their basic role in complexity theory (see, e.g., Schaefer [807]), by the number of applications involving these functions, and, last but not least, by the beautiful mathematical properties that they exhibit.
Horn expressions and Horn logic were introduced first in formal logic by McKinsey [638] and Horn [509] and were later recognized as providing a proper setting for universal algebra by Galvin [367], Malcev [657], and McNulty [640]. Horn logic proved particularly useful and gained prominence in logic programming [19, 185, 488, 489, 494, 521, 552, 582, 648, 656, 721, 855, 816], artificial intelligence [186, 277, 318, 612, 853], and in database theory through its proximity to functional dependencies in relational databases [179, 267, 319, 320, 646, 647, 797]. The basic principles of Horn logic have been implemented in several widely used software products, including the programming language PROLOG and the query language DATALOG for relational databases [494, 648]. Though many of the cited papers are about first-order logic, the simplicity, expressive power, and algorithmic tractability of propositional Horn formulae are at the heart of these applications.
Basic definitions and properties
Horn functions, just like monotone and quadratic functions, are customarily defined by the syntax of their DNF (or CNF) expressions. It is important to note, however, that this syntactical property of a particular representation of a Horn function propagates, in fact, to all its prime representations.