# Truth function

In logic, a **truth function**^{[1]} is a function that accepts truth values as input and produces a unique truth value as output. In other words: The input and output of a truth function are all truth values; a truth function will always output exactly one truth value; and inputting the same truth value(s) will always output the same truth value. The typical example is in propositional logic, wherein a compound statement is constructed using individual statements connected by logical connectives; if the truth value of the compound statement is entirely determined by the truth value(s) of the constituent statement(s), the compound statement is called a truth function, and any logical connectives used are said to be **truth functional**.^{[2]}

Classical propositional logic is a truth-functional logic,^{[3]} in that every statement has exactly one truth value which is either true or false, and every logical connective is truth functional (with a correspondent truth table), thus every compound statement is a truth function.^{[4]} On the other hand, modal logic is non-truth-functional.

A logical connective is truth-functional if the truth-value of a compound sentence is a function of the truth-value of its sub-sentences. A class of connectives is truth-functional if each of its members is. For example, the connective "*and*" is truth-functional since a sentence like "*Apples are fruits and carrots are vegetables*" is true *if, and only if* each of its sub-sentences "*apples are fruits*" and "*carrots are vegetables*" is true, and it is false otherwise. Some connectives of a natural language, such as English, are not truth-functional.

Connectives of the form "x *believes that* ..." are typical examples of connectives that are not truth-functional. If e.g. Mary mistakenly believes that Al Gore was President of the USA on April 20, 2000, but she does not believe that the moon is made of green cheese, then the sentence

*Mary believes that Al Gore was President of the USA on April 20, 2000*"

is false. In both cases, each component sentence (i.e. "*Al Gore was president of the USA on April 20, 2000*" and "*the moon is made of green cheese*") is false, but each compound sentence formed by prefixing the phrase "*Mary believes that*" differs in truth-value. That is, the truth-value of a sentence of the form "*Mary believes that...*" is not determined solely by the truth-value of its component sentence, and hence the (unary) connective (or simply *operator* since it is unary) is non-truth-functional.

The class of classical logic connectives (e.g. &, →) used in the construction of formulas is truth-functional. Their values for various truth-values as argument are usually given by truth tables. Truth-functional propositional calculus is a formal system whose formulae may be interpreted as either true or false.

In two-valued logic, there are sixteen possible truth functions, also called Boolean functions, of two inputs *P* and *Q*. Any of these functions corresponds to a truth table of a certain logical connective in classical logic, including several degenerate cases such as a function not depending on one or both of its arguments. Truth and falsehood are denoted as 1 and 0, respectively, in the following truth tables for sake of brevity.

Because a function may be expressed as a composition, a truth-functional logical calculus does not need to have dedicated symbols for all of the above-mentioned functions to be functionally complete. This is expressed in a propositional calculus as logical equivalence of certain compound statements. For example, classical logic has ¬*P* ∨ *Q* equivalent to *P* → *Q*. The conditional operator "→" is therefore not necessary for a classical-based logical system if "¬" (not) and "∨" (or) are already in use.

The following are the minimal functionally complete sets of operators whose arities do not exceed 2:^{[5]}

Some truth functions possess properties which may be expressed in the theorems containing the corresponding connective. Some of those properties that a binary truth function (or a corresponding logical connective) may have are:

A set of truth functions is functionally complete if and only if for each of the following five properties it contains at least one member lacking it:

"Not" is a unary operator, it takes a single term (¬*P*). The rest are binary operators, taking two terms to make a compound statement (*P* ∧ *Q*, *P* ∨ *Q*, *P* → *Q*, *P* ↔ *Q*).

The set of logical operators Ω may be partitioned into disjoint subsets as follows:

Instead of using truth tables, logical connective symbols can be interpreted by means of an interpretation function and a functionally complete set of truth-functions (Gamut 1991), as detailed by the principle of compositionality of meaning.
Let *I* be an interpretation function, let *Φ*, *Ψ* be any two sentences and let the truth function *f*_{nand} be defined as:

Then, for convenience, *f*_{not}, *f*_{or} *f*_{and} and so on are defined by means of *f*_{nand}:

Logical operators are implemented as logic gates in digital circuits. Practically all digital circuits (the major exception is DRAM) are built up from NAND, NOR, NOT, and transmission gates. NAND and NOR gates with 3 or more inputs rather than the usual 2 inputs are fairly common, although they are logically equivalent to a cascade of 2-input gates. All other operators are implemented by breaking them down into a logically equivalent combination of 2 or more of the above logic gates.

The "logical equivalence" of "NAND alone", "NOR alone", and "NOT and AND" is similar to Turing equivalence.

The fact that all truth functions can be expressed with NOR alone is demonstrated by the Apollo guidance computer.