The modular-counter permutation: exponential lower bounds and typical powers #
Complexity/Computability/Circuit/Boolean/Iteration/ModulusCounter/Basic.lean defines the
single-step modular-counter permutation counterStep k on
2 k bits (ModulusCounter.power 1), constructs its linear-size De Morgan circuit of size at most
50 * k + 20, and proves that its powers below ModulusCounter.period k = lcm(1, …, 2 ^ k - 1) are
pairwise distinct.
Complexity/Computability/Circuit/Boolean/Iteration/ModulusCounter/Remainders.lean relates counter
powers to integer remainders and
short-exponent circuits.
By Chebyshev's lower bound on lcmUpto (2 ^ k - 1) and the ordered-syntax circuit count from
CircuitCounting.lean, this file proves that for every k ≥ 64:
- some exponent
T < ModulusCounter.period krequires more thanlowerBudget k = 2 ^ k / (1024 * (k + 1))gates (exists_hard_counter_power,counter_power_lower_bound), matching the2 ^ Θ(n)fixed-power upper bound up to the constant factor in the exponent; - at most a
2 ^ (-2 ^ (k - 1))fraction of exponents belowModulusCounter.period khave circuits of size at mostlowerBudget k(almost_all_counter_powers_hard,counter_powers_average_complexity).
Main definitions #
Cslib.Circuits.Boolean.Iteration.easyCounterPowers,Cslib.Circuits.Boolean.Iteration.hardCounterPowers: exponents belowperiod kcomputable with at mostqgates, and those requiring more thanqgates.
Main results #
Cslib.Circuits.Boolean.Iteration.description_budget_lt_period: the De Morgan description budget atlowerBudget kis strictly smaller thanModulusCounter.period kfork ≥ 64.Cslib.Circuits.Boolean.Iteration.exists_hard_counter_power,Cslib.Circuits.Boolean.Iteration.counter_power_lower_bound: fork ≥ 64,counterStep khas a power requiring more than2 ^ k / (1024 * (k + 1))gates.Cslib.Circuits.Boolean.Iteration.almost_all_counter_powers_hard,Cslib.Circuits.Boolean.Iteration.counter_powers_average_complexity: all but a2 ^ (-2 ^ (k - 1))fraction of powers belowperiod krequire more thanlowerBudget kgates.Cslib.Circuits.Boolean.Iteration.distinct_counter_powers_up_to,Cslib.Circuits.Boolean.Iteration.exists_hard_counter_power_up_to: counting lower bound for prefixesT < M ≤ period k.
References #
- Adapted from lean/Proofs/{LowerBound,TypicalPowers}.lean in S. Schlesinger, Square-root circuit bounds for iterated functions.
Worst-case and typical-power lower bounds #
The De Morgan description budget for lowerBudget k gates is strictly smaller than
ModulusCounter.period k for k ≥ 64.
For every k ≥ 64, some exponent T < ModulusCounter.period k requires more than
lowerBudget k gates.
Matching exponential lower bound. For every k ≥ 64, there is a bijective circuit c on
2 k bits of size at most 50 * (k + 1) with a power c^[T] (T < ModulusCounter.period k)
requiring more than 2 ^ k / (1024 * (k + 1)) gates.
Exponents below ModulusCounter.period k whose power has a circuit of size at most q.
Instances For
Exponents below ModulusCounter.period k whose power requires more than q gates.
Instances For
Almost every counter power is hard. At most a 2 ^ (-2 ^ (k - 1)) fraction of exponents
below ModulusCounter.period k have circuits of size at most lowerBudget k.
For k ≥ 64, more than half of the exponents below ModulusCounter.period k lie in
hardCounterPowers k (lowerBudget k).
All powers ModulusCounter.power T for T < M with M ≤ ModulusCounter.period k are
pairwise distinct.
If signature.orderedBudget (k + k) (k + k) q < M and M ≤ ModulusCounter.period k, some
exponent T < M requires more than q gates.