A gate (or set of gates) that is functionally complete can also be called a universal gate (or a universal set of gates).
In a context ofpropositional logic, functionally complete sets of connectives are also called (expressively)adequate.[3]
From the point of view ofdigital electronics, functional completeness means that every possiblelogic gate can be realized as a network of gates of the types prescribed by the set. In particular, all logic gates can be assembled from either only binaryNAND gates, or only binaryNOR gates.
Modern texts on logic typically take as primitive some subset of the connectives:conjunction ();disjunction ();negation ();material conditional (); and possibly thebiconditional (). Further connectives can be defined, if so desired, by defining them in terms of these primitives. For example, NOR (the negation of the disjunction, sometimes denoted) can be expressed as conjunction of two negations:
Similarly, the negation of the conjunction, NAND (sometimes denoted as), can be defined in terms of disjunction and negation. Every binary connective can be defined in terms of, which means that set is functionally complete. However, it contains redundancy: this set is not aminimal functionally complete set, because the conditional and biconditional can be defined in terms of the other connectives as
It follows that the smaller set is also functionally complete. (Its functional completeness is also proved by theDisjunctive Normal Form Theorem.)[4] But this is still not minimal, as can be defined as
Alternatively, may be defined in terms of in a similar manner, or may be defined in terms of:
No further simplifications are possible. Hence, every two-element set of connectives containing and one of is a minimal functionally completesubset of.
Given theBoolean domainB = {0, 1}, a setF of Boolean functionsfi :Bni →B isfunctionally complete if theclone onB generated by the basic functionsfi contains all functionsf :Bn →B, for allstrictly positive integersn ≥ 1. In other words, the set is functionally complete if every Boolean function that takes at least one variable can be expressed in terms of the functionsfi. Since every Boolean function of at least one variable can be expressed in terms of binary Boolean functions,F is functionally complete if and only if every binary Boolean function can be expressed in terms of the functions inF.
A more natural condition would be that the clone generated byF consist of all functionsf :Bn →B, for all integersn ≥ 0. However, the examples given above are not functionally complete in this stronger sense because it is not possible to write anullary function, i.e. a constant expression, in terms ofF ifF itself does not contain at least one nullary function. With this stronger definition, the smallest functionally complete sets would have 2 elements.
Another natural condition would be that the clone generated byF together with the two nullary constant functions be functionally complete or, equivalently, functionally complete in the strong sense of the previous paragraph. The example of the Boolean function given byS(x,y,z) =z ifx =y andS(x,y,z) =x otherwise shows that this condition is strictly weaker than functional completeness.[5][6][7]
Emil Post proved that a set of logical connectives is functionally complete if and only if it is not a subset of any of the following sets of connectives:
Themonotonic connectives; changing the truth value of any connected variables fromF toT without changing any fromT toF never makes these connectives change their return value fromT toF, e.g..
Theaffine connectives, such that each connected variable either always or never affects the truth value these connectives return, e.g..
Theself-dual connectives, which are equal to their ownde Morgan dual; if the truth values of all variables are reversed, so is the truth value these connectives return, e.g.,maj(p,q,r).
Thetruth-preserving connectives; they return thetruth valueT under any interpretation that assignsT to all variables, e.g..
Thefalsity-preserving connectives; they return the truth valueF under any interpretation that assignsF to all variables, e.g..
Post gave a complete description of thelattice of allclones (sets of operations closed under composition and containing all projections) on the two-element set{T,F}, nowadays calledPost's lattice, which implies the above result as a simple corollary: the five mentioned sets of connectives are exactly the maximal nontrivial clones.[8]
When a single logical connective or Boolean operator is functionally complete by itself, it is called aSheffer function[9] or sometimes asole sufficient operator. There are nounary operators with this property.NAND andNOR, which aredual to each other, are the only two binary Sheffer functions. These were discovered, but not published, byCharles Sanders Peirce around 1880, and rediscovered independently and published byHenry M. Sheffer in 1913.[10]In digital electronics terminology, the binaryNAND gate (↑) and the binaryNOR gate (↓) are the only binaryuniversal logic gates.
The following are the minimal functionally complete sets of logical connectives witharity ≤ 2:[11]
One element
{↑}, {↓}.
Two elements
,,,,,,,,,,,,,,,,,
Three elements
,,,,,
There are no minimal functionally complete sets of more than three at most binary logical connectives.[11] In order to keep the lists above readable, operators that ignore one or more inputs have been omitted. For example, an operator that ignores the first input and outputs the negation of the second can be replaced by a unary negation.
Examples of using theNAND (↑) completeness. As illustrated by,[12]
¬A ≡A ↑A
A ∧B ≡ ¬(A ↑B) ≡ (A ↑B) ↑ (A ↑B)
A ∨B ≡ (¬A) ↑ (¬B) ≡ (A ↑A) ↑ (B ↑B)
Examples of using theNOR (↓) completeness. As illustrated by,[13]
¬A ≡A ↓A
A ∨B ≡ ¬(A ↓B) ≡ (A ↓B) ↓ (A ↓B)
A ∧B ≡ (¬A) ↓ (¬B) ≡ (A ↓A) ↓ (B ↓B)
Note that an electronic circuit or a software function can be optimized by reuse, to reduce the number of gates. For instance, the "A ∧B" operation, when expressed by ↑ gates, is implemented with the reuse of "A ↑ B",
Apart from logical connectives (Boolean operators), functional completeness can be introduced in other domains. For example, a set ofreversible gates is called functionally complete, if it can express every reversible operator.
The 3-inputFredkin gate is functionally complete reversible gate by itself – a sole sufficient operator. There are many other three-input universal logic gates, such as theToffoli gate.
There is anisomorphism between thealgebra of sets and theBoolean algebra, that is, they have the samestructure. Then, if we map boolean operators into set operators, the "translated" above text are valid also for sets: there are many "minimal complete set of set-theory operators" that can generate any other set relations. The more popular "Minimal complete operator sets" are{¬, ∩} and{¬, ∪}. If theuniversal setis forbidden, set operators are restricted to being falsity (Ø) preserving, and cannot be equivalent to functionally complete Boolean algebra.
^Enderton, Herbert (2001),A mathematical introduction to logic (2nd ed.), Boston, MA:Academic Press,ISBN978-0-12-238452-3. ("Complete set of logical connectives").
^Nolt, John; Rohatyn, Dennis; Varzi, Achille (1998),Schaum's outline of theory and problems of logic (2nd ed.), New York:McGraw–Hill,ISBN978-0-07-046649-4. ("[F]unctional completeness of [a] set of logical operators").
^Smith, Peter (2003),An introduction to formal logic,Cambridge University Press,ISBN978-0-521-00804-4. (Defines "expressively adequate", shortened to "adequate set of connectives" in a section heading.)
^Howson, Colin (1997).Logic with trees: an introduction to symbolic logic. London; New York: Routledge. p. 41.ISBN978-0-415-13342-5.
^The term was originally restricted tobinary operations, but since the end of the 20th century it is used more generally.Martin, N.M. (1989),Systems of logic, Cambridge University Press, p. 54,ISBN978-0-521-36770-7.
^abWernick, William (1942) "Complete Sets of Logical Functions,"Transactions of the American Mathematical Society 51: 117–32. In his list on the last page of the article, Wernick does not distinguish between ← and →, or between and.