Smolensky's bound -- assembly #
The approximation theorem and the hardness of parity give the finite counting
inequality; the binomial estimates turn it into an explicit size bound; and a
polynomial-versus-exponential comparison rules out polynomial-size,
constant-depth AND/OR/MOD_3 families computing parity.
theorem
Complexity.Smolensky.depth_eq_outputDepth_zero
{n G : ℕ}
[NeZero n]
{B : Basis}
(C : Circuit B n 1 G)
:
theorem
Complexity.Smolensky.parity_counting_bound_internal
{n G : ℕ}
[NeZero n]
{d ℓ : ℕ}
(C : Circuit (Basis.unboundedAndOrMod 3) n 1 G)
(hcomputes : C.Computes (Schnorr.xorBool n))
(hdepth : C.depth ≤ d)
(hℓ : 1 ≤ ℓ)
:
The finite counting form of the Razborov–Smolensky bound.
theorem
Complexity.Smolensky.two_mul_two_pow_le_size_internal
{n G : ℕ}
[NeZero n]
{d ℓ : ℕ}
(C : Circuit (Basis.unboundedAndOrMod 3) n 1 G)
(hcomputes : C.Computes (Schnorr.xorBool n))
(hdepth : C.depth ≤ d)
(hn : (40 * ℓ) ^ (2 * d) ≤ n)
:
The explicit Razborov–Smolensky size bound.
A natural-coefficient polynomial is eventually below 2^ℓ.
Parity is not in AC0[3].