Documentation

Complexity.Computability.Circuit.Boolean.ACC0

ACC⁰ and lower bounds against modular-counting circuits #

ACC⁰ (Cslib.Circuits.Boolean.ACC0) is the union of the modular constant-depth circuit classes AC0Mod q over all fixed moduli q ≥ 2 [Bar89], Vollmer, Chapter 4, Arora and Barak, Section 14.2. The development is split into two submodules, both re-exported here:

This module adds the resulting separations:

Main results #

References #

Folding xor over a Boolean word computes parity of its slice.

Unconditional separation P ⊄ AC⁰: parity is in P and not in AC⁰ [Has86].

Unconditional separation P ⊄ AC⁰[p] for every odd prime p: parity is in P and not in AC⁰[p] [Raz87], [Smo87].

theorem Cslib.Circuits.Boolean.Kannan.language_notMem_SIZEMod (q k c : ℕ) :
Complexity.Kannan.language (8 * (k + 1)) ∉ SIZEMod q fun (n : ℕ) => c * (n + 1) ^ k

Kannan's language escapes SIZEMod q: for every q, k, c : ℕ, Kannan.language (8 * (k + 1)) has no circuits over the AC⁰[q] basis of size c * (n + 1) ^ k [Kan82].

theorem Cslib.Circuits.Boolean.exists_mem_SigmaP_two_notMem_SIZEMod (q k : ℕ) :
∃ L ∈ Complexity.SigmaP 2 Turing.MultiTapeTM.encBits, ∀ (c : ℕ), L ∉ SIZEMod q fun (n : ℕ) => c * (n + 1) ^ k

Unconditional fixed-exponent MOD_q circuit lower bound in Σ₂ (for every modulus q, prime or composite): for every q, k : ℕ, some language in Σ₂ has no circuits over the AC⁰[q] basis of size O(n ^ k) (even of unbounded depth), by combining SIZEMod_subset_SIZE with Kannan's theorem [Kan82].