Lupanov's (k, s)-representation, named after Oleg Lupanov, is a means of representing Boolean circuits to demonstrate an asymptotically tight upper bound on the circuit size (i.e., the number of gates) needed to represent a Boolean function. Claude Shannon showed that almost all Boolean functions of n variables need a circuit of size at least 2nn−1. Lupanov's (k, s)-representation shows that all Boolean functions of n variables can be computed with a circuit of 2nn−1 + o(2nn−1) gates.