Documentation

Complexitylib.Algebraic.LowerBound.Cutwidth.Aggregate.Geometry.Multioutput.RestrictionRank.Internal

Restricting conjunctions before counting nonlinear generators #

Process the conjunction gates in program order. While the current flat is larger than the target, fix one live literal of each conjunction to its controlling value, so the gate becomes constant and the codimension grows by at most one. Every gate then stays affine on the flat. Once the target codimension is reached, the remaining conjunctions become generators: every gate is affine on the flat modulo their span. Output components that are independent modulo affine functions on the final flat therefore need one remaining generator each.

A Boolean function is affine on a flat exactly when its prime-field values are.

Functions affine on a flat remain affine on every smaller flat.

Constant prime-field functions are affine on every flat.

Primary input bits are affine on every flat.

Appending a line adds one to the conjunction count exactly for conjunctions.

theorem Algebraic.Aggregate.Geometry.exists_restriction_generators {n g : ℕ} (p : Program signature n g) (target : ℕ) :
∃ (S : AffineFlat n) (d : ℕ) (T : Submodule (ZMod 2) ((Fin n → Bool) → ZMod 2)), 2 ^ d * S.carrier.card = 2 ^ n ∧ d ≤ target ∧ (d < target → T = ⊥) ∧ d + Module.finrank (ZMod 2) ↥T ≤ conjunctionCount p ∧ ∀ (i : Fin g), (fun (x : Fin n → Bool) => bitValue (p.gateFunction interpretation i x)) ∈ flatAffineFunctions S ⊔ T

The restriction process for an actual program. The flat has codimension d at most the target, and restrictions stop only at the target. Each processed conjunction raises the codimension by at most one, and each later conjunction contributes at most one dimension to T. Modulo T, every gate is affine on the flat.

The restriction–rank inequality: output components independent modulo affine functions on every flat of 2^D points force m + n - D conjunction gates.