Normal-form width lower bounds for restricted parity #
This module proves the final structural obstruction in the standard parity lower-bound argument. If a DNF computes parity after a restriction with at least one live variable, some term contains every live variable. Dually, if a CNF computes that restricted parity, some clause contains every live variable. Consequently either normal form has width at least the live count.
The proof uses sensitivity rather than counting formulas. Starting from an input on which restricted parity has the relevant truth value, a witnessing term or falsified clause must mention every live variable: otherwise flipping an absent live variable would preserve the witness while changing parity. This is uniform in the arity and contains no finite search.
A Boolean function is parity up to a possible output negation. This is the invariant preserved while following a chain of internal NOT gates.
Equations
- Algebraic.AC0.Parity.UpToNegation candidate = (candidate = Algebraic.AC0.Parity.function n ∨ candidate = fun (input : Fin n → Bool) => !Algebraic.AC0.Parity.function n input)
Instances For
Parity itself is parity up to output negation.
The parity-up-to-negation predicate is closed under output negation.
Output negation does not change whether a function is parity up to negation.
Restricted parity attains true whenever at least one selected coordinate is live.
Restricted parity attains false whenever at least one selected coordinate is live.
Every DNF computing nonconstant restricted parity contains a term whose support covers all live variables.
A bounded-width DNF computing restricted parity leaves no more live variables than its width.
Every CNF computing nonconstant restricted parity contains a clause whose support covers all live variables.
A bounded-width CNF computing restricted parity leaves no more live variables than its width.
The width obstruction is insensitive to complementing parity's output.
The width obstruction is insensitive to complementing parity's output.