The Razborov–Smolensky lower bound #
Parity is not in AC⁰[p] for every odd prime p (parity_notMem_AC0Mod): constant-depth,
polynomial-size circuits of negations, unbounded fan-in conjunctions and disjunctions, and MOD_p
gates do not compute parity [Raz87], [Smo87]. The finite form is a size–depth
tradeoff (two_mul_two_pow_le_size_of_computes_parity): a circuit of depth d computing the
parity of n bits has size at least 2 ^ ℓ · 2 / 5 whenever 100 (((p - 1) ℓ) ^ d + 1)² ≤ n + 1,
so size 2 ^ Ω(n ^ (1 / (2 d))) for fixed d and p.
The circuit agrees with a function of degree at most ((p - 1) ℓ) ^ d over ZMod p (or any
commutative ring of characteristic p) on all but size · 2 ^ n / 2 ^ ℓ inputs
(exists_lowDegree_approx), while such a function agrees with parity on at most 6 / 10 of the
inputs (BitString.card_agree_parity_le, ten_mul_card_filter_card_le_le).
Main results #
Cslib.Circuits.Boolean.Smolensky.two_mul_two_pow_le_size_of_computes_parity: the tradeoff.Cslib.Circuits.Boolean.Smolensky.parity_notMem_AC0Mod: parity is not in AC⁰[p].
References #
The Razborov–Smolensky size–depth tradeoff. A circuit of the AC⁰[p] basis of depth d
computing the parity of n bits, for an odd prime p, has size at least 2 ^ ℓ · 2 / 5 whenever
100 (((p - 1) ℓ) ^ d + 1)² ≤ n + 1.
Parity is not in AC⁰[p] for an odd prime p (Razborov–Smolensky).