Internal: Schnorr's Lower Bound for XOR Circuits #
This internal module proves Schnorr's lower bound via the CircDesc model.
The public definitions (Schnorr.xorBool, Schnorr.xorBool_flip,
Schnorr.xorBool_essential) are in Complexitylib.Circuits.XOR. The public theorem
schnorr_lower_bound_circuit is accessible through Complexitylib.Circuits.Schnorr.
CircDesc Insensitivity #
If evaluation depends on input a, some gate references a.
Circuit Restriction #
Gate Elimination #
How to redirect references to an eliminated gate.
- const
{W : ℕ}
(c : Bool)
: GateRedirect W
Replace references to the eliminated gate by the constant
c. - wire
{W : ℕ}
(w : Fin W)
(flip : Bool)
: GateRedirect W
Replace references to the eliminated gate by wire
w, XORed withflip.
Instances For
Remove gate g from a CircDesc, redirecting references to it.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Eliminating a non-output gate whose value the redirect rd correctly describes
preserves the circuit's evaluation on every input.
XOR needs ≥ 3 gates #
Restriction eliminates two gates #
Key inductive step: restricting one variable of a totally essential XOR circuit yields a circuit for XOR on one fewer input, with at least 2 fewer gates.