Finite growth with disjoint exchange supports #
Binary sums grow by adding one translate. A polynomial initial stage and a multiplicative stage produce more than half of the group; two disjoint such families then cover the whole group.
All sums obtained by choosing any subfamily of a finite family.
Equations
- EGZ.Expansion.binarySums shift F = Finset.image (fun (J : Finset E) => ∑ e ∈ J, shift e) F.powerset
Instances For
Subset sums can be expressed as Boolean choices indexed by the selected family, the form used by the exchange-completion argument.
Atoms reserved by a family of exchanges.
Equations
- EGZ.Expansion.usedAtoms support F = F.biUnion support
Instances For
A family uses disjoint supports and avoids all previously reserved atoms.
Equations
- EGZ.Expansion.Admissible support U F = (((↑F).Pairwise fun (e f : E) => Disjoint (support e) (support f)) ∧ Disjoint (EGZ.Expansion.usedAtoms support F) U)
Instances For
A finite greedy iteration, retaining the current family whenever its size already meets the next target. The optional stopping predicate is returned explicitly.
A convenient integer reciprocal step for polynomial growth.
Instances For
Explicit finite criterion for complete binary-sum coverage using pairwise disjoint exchange supports.
Uniform numerical parameters for a linear atom budget. The two stages may have equal length; a deliberately generous fixed growth rate suffices.
For a sufficiently large fixed growth rate, a linear atom budget supports a family of disjoint exchanges whose binary sums cover the group. The growth rate and prime threshold are chosen before all exchange data.