Natural proofs #
A property of Boolean functions is a set C n of functions on n inputs for each n.
Razborov and Rudich call it natural when it contains a property D that is large, holding
for at least a 2 ^ (-O(n)) fraction of all functions on n inputs, and constructive, decided
from the truth table of length 2 ^ n within some class Γ of languages, for instance by circuits
of size polynomial in 2 ^ n (Γ = P/poly) [RR97]. It is useful against a class
Λ of languages when the slices of every language in Λ eventually lie outside it. A lower-bound
proof against Λ exhibits a property useful against Λ, and Razborov and Rudich observe that
the properties used by the known proofs are natural.
The natural proofs barrier. If a property holds for no function of a keyed family, the test
deciding it from truth tables never accepts the truth table of a member, but accepts that of a
uniformly random function with probability the density of the property
(advantage_truthTableGenerator_truthTableTest). A property decided by circuits with t gates
and useful against circuits with s gates therefore distinguishes every keyed family of functions
with s gates from uniformly random functions, by a circuit with t gates and with advantage its
density (not_secure_truthTableGenerator). Asymptotically, no P/poly-natural property is
useful against P/poly if some keyed family with members of polynomial circuit size is
exponentially secure, pseudorandom against circuits of size 2 ^ (c n) with error 2 ^ (-c n)
for every c (Cslib.Crypto.PRG.IsExponentiallySecure, not_isUseful_PPoly_of_isNatural).
Razborov and Rudich obtain such a family from a pseudorandom generator secure against circuits of
size 2 ^ (k ^ ε) on seeds of length k, by the construction of Goldreich, Goldwasser and Micali
[GGM86] with keys of length polynomial in n. That derivation, with its circuit-size analysis,
is Cslib.Crypto.GGM.isExponentiallySecure_booleanFamily, and the barrier from such a generator
is Cslib.Circuits.Boolean.not_isUseful_PPoly_of_isNatural_of_generator
(Complexity.Computability.Circuit.Boolean.NaturalProof.Generator).
Security is cslib's concrete security of generators (Cslib.Crypto.PRG.Generator.Secure), for the
generator mapping a key to the truth table of its function (Cslib.Crypto.PRG.truthTableGenerator),
against the deterministic tests computed by De Morgan circuits with at most t gates
(Cslib.Crypto.PRG.IsCircuitTest). These
tests read the whole truth table, that is they query the function at every input, as the
distinguisher of Razborov and Rudich does. Circuit sizes count every AND, OR, NOT and constant
gate.
The functions on n inputs that need more than 2 ^ n / (5 n) gates form a property that is
large, by counting circuits, and useful against P/poly (isLarge_setOf_lt_complexity,
isUseful_PPoly_setOf_lt_complexity). Under the same hypothesis it is therefore not
P/poly-natural (not_isNatural_PPoly_setOf_lt_complexity), and not P/poly-constructive: its
truth tables, the no-instances of GapMCSP at threshold 2 ^ n / (5 n), do not form a language
in P/poly (truthTableLanguage_setOf_lt_complexity_notMem_PPoly) [KC00].
Main definitions #
Cslib.Circuits.Boolean.truthTableTest: the test deciding a property from truth tables.Cslib.Circuits.Boolean.truthTableLanguage: the truth tables of a property, as a language.Cslib.Circuits.Boolean.NaturalProof.IsLarge,Cslib.Circuits.Boolean.NaturalProof.IsNatural,Cslib.Circuits.Boolean.NaturalProof.IsUseful: large, natural and useful properties.
Main results #
Cslib.Circuits.Boolean.isUseful_PPoly_iff: usefulness againstP/polyas a bound on the circuit complexity of every function with the property.Cslib.Circuits.Boolean.NaturalProof.IsNatural.PPoly_of_P:P-natural properties, decided in time polynomial in the length of the truth table, areP/poly-natural.Cslib.Circuits.Boolean.advantage_truthTableGenerator_truthTableTest: the advantage of the Razborov–Rudich distinguisher is the density of the property.Cslib.Circuits.Boolean.not_secure_truthTableGenerator: the barrier for one input length, with explicit sizes and advantage.Cslib.Circuits.Boolean.not_isUseful_PPoly_of_isNatural: the natural proofs barrier forP/poly, assuming an exponentially secure keyed family.Cslib.Circuits.Boolean.isLarge_setOf_lt_complexity,Cslib.Circuits.Boolean.isUseful_PPoly_setOf_lt_complexity: the functions needing more than2 ^ n / (5 n)gates form a large property useful againstP/poly.Cslib.Circuits.Boolean.not_isNatural_PPoly_setOf_lt_complexity,Cslib.Circuits.Boolean.truthTableLanguage_setOf_lt_complexity_notMem_PPoly: under the same assumption, this property is notP/poly-natural, and the truth tables of these hard functions do not form a language inP/poly.
References #
Properties of Boolean functions #
The test that accepts the truth tables of the functions in C. Its circuit complexity is the
size of the smallest circuits deciding C from truth tables.
Instances For
The test deciding C accepts as many truth tables as there are functions in C.
The truth tables of a property, as a language [RR97]: a word of length 2 ^ n
belongs to it when it is the truth table of a function in C n. Words whose length is not a power
of two do not belong to it.
Instances For
At length 2 ^ n, the truth-table language of C is decided by the test for C n.
Largeness [RR97]: for some c, eventually at least a 2 ^ (-c n) fraction
of the 2 ^ 2 ^ n Boolean functions on n inputs lie in C n.
Instances For
Natural properties [RR97]: C is Γ-natural when it contains a large
property whose truth tables form a language in Γ. For Γ = PPoly that property is decided by
circuits of size polynomial in the length 2 ^ n of the truth table, that is of size
2 ^ O(n) (exists_complexity_truthTableTest_le).
Instances For
Usefulness [RR97]: C is useful against a class Λ of languages when the
slices of every language in Λ eventually lie outside C. Against P/poly, this says that for
every polynomial bound, eventually every function in C n needs more gates
(isUseful_PPoly_iff).
Instances For
If Λ contains SIZE s, with s positive, a property useful against Λ eventually holds
only for functions needing more than s n gates.
Usefulness against P/poly, in the form of [RR97]: for every polynomially
bounded s, eventually every function in C n needs more than s n gates.
A P/poly-constructive property is decided by circuits of size 2 ^ O(n).
A property that is natural for the class P, applied to truth tables, is P/poly-natural:
a problem decided in time polynomial in the length of the truth table has circuits of polynomial
size (PPoly.of_mem_P).
The Razborov–Rudich distinguisher #
The Razborov–Rudich distinguisher [RazborovRudich1997, Section 4]. If no function of the
keyed family F lies in C, the test deciding C from truth tables never accepts the truth table
of F key, and accepts that of a uniformly random function with probability the density of C.
Its advantage is therefore exactly the density of C.
Natural properties break pseudorandom function families, for one input length
[RazborovRudich1997, Section 4]. Let C be a property of functions on n inputs that is decided
from truth tables by circuits with at most t gates and holds for no function computable with at
most s gates. Then no keyed family of functions computable with at most s gates is
pseudorandom against circuits with at most t gates with error below the density of C.
The natural proofs barrier for P/poly [RazborovRudich1997, Section 4]. Suppose that for
each n a keyed family F n of Boolean functions on n inputs has members with at most s n
gates, for a polynomially bounded s, and is exponentially secure: for every c, eventually no
circuit with at most 2 ^ (c n) gates distinguishes the truth table of a member with a uniformly
random key from a uniformly random truth table with advantage more than 2 ^ (-c n). Then no
P/poly-natural property is useful against P/poly.
Razborov and Rudich derive such a family from a pseudorandom generator secure against circuits of
size 2 ^ (k ^ ε) by the construction of Goldreich, Goldwasser and Micali with keys of length
polynomial in n: Cslib.Circuits.Boolean.not_isUseful_PPoly_of_isNatural_of_generator.
Hard functions #
For n ≥ 16, at least half of the functions on n inputs need more than 2 ^ n / (5 n)
gates, by counting circuits (MCSP.ncard_setOf_mem_le).
The functions on n inputs that need more than 2 ^ n / (5 n) gates form a large property:
for n ≥ 16 they are at least half of all functions.
Circuits of polynomial size eventually compute no function that needs more than
2 ^ n / (5 n) gates.
Under the hypothesis of not_isUseful_PPoly_of_isNatural, the truth tables of the functions
on n inputs that need more than 2 ^ n / (5 n) gates, that is the no-instances
GapMCSP.no (fun n => 2 ^ n / (5 * n)) n, do not form a language in P/poly
[RR97], [KC00]. The property is large and useful against P/poly, so
it is not P/poly-constructive.
Under the hypothesis of not_isUseful_PPoly_of_isNatural, the property of needing more than
2 ^ n / (5 n) gates is not P/poly-natural: it is useful against P/poly
[RR97].