Enumerating one mask layer costs linear work per output
ProvedThreeSum.SubsetAddress.enumerationWork_bound3sumalgorithmsfine-grained-complexitythree-sum-1962word-ram
Let . Let be the work recurrence for the direct enumeration of all -position masks with exactly selected bits. It charges recursive invocations, emitted upper masks, and cells copied while appending lower lists. Then
The statement also covers empty layers with . It bounds direct fixed-cardinality enumeration by the number of outputs rather than by the size of the entire Boolean cube.
Preamble
import Definitions.Def_ThreeSum1962Source_Bundle01 import Lean.Elab.Tactic.Omega import Mathlib.Algebra.BigOperators.Ring.Finset import Mathlib.Combinatorics.Colex import Mathlib.Data.Fin.Embedding import Mathlib.Data.Finset.Powerset import Mathlib.Data.List.Basic import Mathlib.Data.List.Nodup import Mathlib.Data.Nat.Choose.Basic import Mathlib.Tactic.Linarith import Mathlib.Tactic.Ring set_option autoImplicit false set_option relaxedAutoImplicit false set_option Elab.async false
Formal statement
theorem ThreeSum.SubsetAddress.enumerationWork_bound : ∀ (L k : Nat),
@LE.le.{0} Nat instLENat (ThreeSum.SubsetAddress.enumerationWork L k)
(@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat)
(@HMul.hMul.{0, 0, 0} Nat Nat Nat (@instHMul.{0} Nat instMulNat)
(@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat)
(@HMul.hMul.{0, 0, 0} Nat Nat Nat (@instHMul.{0} Nat instMulNat)
(@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) L)
(@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))))
(L.choose k))
(@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1)))) := by
sorry
Source