# Functional Completeness in Digital Logic

A **set of operations** is said to be functionally complete or universal if and only if **every** switching function can be expressed by means of operations in it. A set of Boolean functions is functionally complete, if all other Boolean functions can be constructed from this set and a set of input variables are provided, e.g.

- Set A = {+,*,’ (OR, AND, complement) } are functionally complete.
- Set B = {+,’} are functionally complete
- Set C = {*,’} are functionally complete

**Post’s Functional Completeness Theorem –** Important closed classes of functions:

- T
_{0}– class of all 0-preserving functions, such as f(0, 0, … , 0) = 0. - T
_{1}– class of all 1-preserving functions, such as f(1, 1, … , 1) = 1. - S – class of self-dual functions, such as f(x
_{1}, … ,x_{n}) = ¬ f(¬x_{1}, … , ¬x_{n}). - M – class of monotonic functions, such as : {x
_{1}, … ,x_{n}} ≤ {x_{1}, … ,x_{n}}, if x_{i}≤ y_{i}

if {x_{1}, … ,x_{n}} ≤ {x_{1}, … ,x_{n}}

then f(x_{1}, … ,x_{n}) ≤ f(x_{1}, … ,x_{n}) - L – class of linear functions, which can be presented as: f(x
_{1}, … ,x_{n}) = a_{0}+ a_{1}·x_{1}+ … + a_{n}·x_{n}; a_{i}{0, 1}.

**Theorem –** A system of Boolean functions is functionally complete if and only if for each of the five defined classes T_{0}, T_{1}, S, M, L, there is a member of F which does not belong to that class.

These are minimal functionally complete operator sets –

**One element –**

{↑}, {↓}.

**Two elements –**

**Three elements –**

**Examples on functional Completeness – **

**Check if function F(A,B,C) = A’+BC’ is functionally complete?****Explanation –**Let us start by putting all variables as ‘A’ so it becomes

F(A,A,A) = A’+A.A’ = A’—-(i)

F(B,B,B) = B’+B.B’ = B’—(ii)

Now substitute F(A,A,A) in place of variable ‘A’ and F(B,B,B) in place of variable ‘C’

F(F(A,A,A),B,F(B,B,B)) = (A’)’+B.(B’)’ = A+B—(iii)

from (i) and (ii) complement is derived and from (iii) operator ‘+’ is derived so this function is functionally complete as from above if function contains {+,’} is**functionally complete**.**Check if function F(A,B) = A’+B is functionally complete?****Explanation –**Let us start by putting all variables as ‘A’ so it becomes

F(A,A) = A’+A = 1—-(i)

F(B,B) = B’+B = 1—(ii)

F(A,0) = A’+0 = A’—(iv)

Now substitute F(A,0) in place of variable ‘A’

F(F(A,0),B) = (A’)’+B = A+B—(iii)

from (iv) complement is derived and from (iii) operator ‘+’ is derived so this function is functionally complete as from above if function contains {+,’} is**partially functionally complete**.**Check if function F(A,B) = A’B is functionally complete?****Explanation –**Let us start by putting all variables as ‘A’ so it becomes

F(A,A) = A’.A’ = 0—-(i)

F(A,0) = A’.0 = 0—(ii)

F(A,1) = A’.1 = A’—(iv)

Now substitute F(A,1) in place of variable ‘A’

F(F(A,1),B) = (A’)’*B = A*B—(iii)

from (iv) complement is derived and from (iii) operator ‘*’ is derived so this function is functionally complete as from above if function contains {*,’} is**partially functionally complete**.**Note –**If the function becomes functionally complete by substituting ‘0’ or ‘1’ then it is known as partially functionally complete.**Check if function F(A,B) = A’B+AB’ (EX-OR) is functionally complete?****Explanation –**Let us start by putting all variables as ‘A’ so it becomes

F(A,1) = A’.1 + A.0 = A’—-(i)

F(A’,B) = AB + A’B’–(ii)

F(A’,B’) = AB’ + A’B–(iii)

F(A,B’) = A’B’ + AB—(iv)

So there is no way to get {+,*,’} according to condition. So**EX-OR is non functionally complete**.**Consider the operations**

f(X, Y, Z) = X’YZ + XY’ + Y’Z’ and g(X′, Y, Z) = X′YZ + X′YZ′ + XY

Which one of the following is correct?

(A) Both {f} and {g} are functionally complete

(B) Only {f} is functionally complete

(C) Only {g} is functionally complete

(D) Neither {f} nor {g} is functionally complete**Explanation –**See GATE CS 2015 (Set 1) | Question 65

**References –**

Post’s Functional Completeness Theorem

Functional completeness – Wikipedia

This article is contributed by **Vaishali Bhatia**. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect<, or you want to share more information about the topic discussed above.

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: **DSA Self Paced**. Become industry ready at a student-friendly price.

## Recommended Posts:

- 5 variable K-Map in Digital Logic
- Latches in Digital Logic
- BCD Adder in Digital Logic
- Encoder in Digital Logic
- Difference between SOP and POS in Digital Logic
- Multiplexers in Digital Logic
- Counters in Digital Logic
- Static Hazards in Digital Logic
- Variable Entrant Map (VEM) in Digital Logic
- Encoders and Decoders in Digital Logic
- Binary Decoder in Digital Logic
- Shift Registers in Digital Logic
- Magnitude Comparator in Digital Logic
- Ripple Counter in Digital Logic
- n-bit Johnson Counter in Digital Logic
- Consensus Theorem in Digital Logic
- Adders and Subtractors in Digital Logic
- Non-binary Counter in Digital Logic
- Half Adder in Digital Logic
- Self Dual functions in Digital Logic