OAI/Combinatorics/LowSpaceSubsetSum/Counting/Deficiency.lean
33 declarations, 0 contain sorry, 0 declared as axioms
Finite distinct-subset-sum estimates
These are the cardinality statements underlying the deficiency lemma in §2 of A Low-Space Algorithm for Worst-Case Subset Sum. The indexed formulation retains repeated input values. Arbitrary signed integer weights are allowed.
- def
OAI.LowSpaceSubsetSum.distinctSumsline 23Source documentation
Distinct integer values of subset sums on the index domain
V.def distinctSums (a : ι → ℤ) (V : Finset ι) : Finset ℤ := …
- def
OAI.LowSpaceSubsetSum.distinctSumCountline 27Source documentation
The count
N(V)used in the paper's deficiency.def distinctSumCount (a : ι → ℤ) (V : Finset ι) : ℕ := …
- theorem
OAI.LowSpaceSubsetSum.mem_distinctSumsline 30 - theorem
OAI.LowSpaceSubsetSum.zero_mem_distinctSumsline 34 - theorem
OAI.LowSpaceSubsetSum.one_le_distinctSumCountline 38 - theorem
OAI.LowSpaceSubsetSum.distinctSumCount_le_powline 42 - theorem
OAI.LowSpaceSubsetSum.distinctSums_emptyline 46 - theorem
OAI.LowSpaceSubsetSum.distinctSumCount_emptyline 49 - theorem
OAI.LowSpaceSubsetSum.distinctSums_monoline 52 - theorem
OAI.LowSpaceSubsetSum.distinctSumCount_monoline 56 - theorem
OAI.LowSpaceSubsetSum.weight_singletonline 60 - theorem
OAI.LowSpaceSubsetSum.weight_insert_of_not_memline 63 - theorem
OAI.LowSpaceSubsetSum.distinctSums_insert_subsetline 69Source documentation
Every sum after adding one index is either an old sum or its translate.
theorem distinctSums_insert_subset (a : ι → ℤ) (V : Finset ι) (i : ι) : distinctSums a (insert i V) ⊆ distinctSums a V ∪ (distinctSums a V).image (fun x => a i + x) := by …Mentions: OAI.LowSpaceSubsetSum.distinctSums
- theorem
OAI.LowSpaceSubsetSum.distinctSumCount_insert_leline 98 - theorem
OAI.LowSpaceSubsetSum.distinctSumCount_le_insertline 109 - theorem
OAI.LowSpaceSubsetSum.distinctSums_union_subsetline 115Source documentation
Every sum on a union is a sum of a value from each domain. The domains need not be disjoint: split a witness using intersection and set difference.
theorem distinctSums_union_subset (a : ι → ℤ) (V W : Finset ι) : distinctSums a (V ∪ W) ⊆ ((distinctSums a V) ×ˢ (distinctSums a W)).image (fun p => p.1 + p.2) := by …Mentions: OAI.LowSpaceSubsetSum.distinctSums
- theorem
OAI.LowSpaceSubsetSum.distinctSumCount_union_leline 140Source documentation
The multiplicative count bound behind superadditivity of deficiency.
theorem distinctSumCount_union_le (a : ι → ℤ) (V W : Finset ι) : distinctSumCount a (V ∪ W) ≤ distinctSumCount a V * distinctSumCount a W := by …Mentions: OAI.LowSpaceSubsetSum.distinctSumCount
- theorem
OAI.LowSpaceSubsetSum.symmDiff_subset_domainline 150 - theorem
OAI.LowSpaceSubsetSum.distinctSums_flip_of_subsetline 155Source documentation
Negating selected indices translates the set of distinct sum values.
theorem distinctSums_flip_of_subset (a : ι → ℤ) {F V : Finset ι} (hF : F ⊆ V) : distinctSums (flip a F) V = (distinctSums a V).image (fun x => x - weight a F) := by …Mentions: OAI.LowSpaceSubsetSum.distinctSums, OAI.LowSpaceSubsetSum.flip, OAI.LowSpaceSubsetSum.weight
- theorem
OAI.LowSpaceSubsetSum.distinctSumCount_flip_of_subsetline 172 - theorem
OAI.LowSpaceSubsetSum.weight_flip_interline 180Source documentation
Signs outside the current domain do not affect its subset sums.
theorem weight_flip_inter (a : ι → ℤ) (F V : Finset ι) {S : Finset ι} (hS : S ⊆ V) : weight (flip a F) S = weight (flip a (F ∩ V)) S := by …Mentions: OAI.LowSpaceSubsetSum.weight, OAI.LowSpaceSubsetSum.flip
- theorem
OAI.LowSpaceSubsetSum.distinctSumCount_flipline 190Source documentation
Distinct-sum counts are invariant under arbitrary individual sign changes.
theorem distinctSumCount_flip (a : ι → ℤ) (F V : Finset ι) : distinctSumCount (flip a F) V = distinctSumCount a V := by …Mentions: OAI.LowSpaceSubsetSum.distinctSumCount, OAI.LowSpaceSubsetSum.flip
- def
OAI.LowSpaceSubsetSum.deficiencyline 205Source documentation
The paper's deficiency, with logarithms in base two.
noncomputable def deficiency (a : ι → ℤ) (V : Finset ι) : ℝ := …
- theorem
OAI.LowSpaceSubsetSum.distinctSumCount_pos_realline 208 - theorem
OAI.LowSpaceSubsetSum.deficiency_nonnegline 212 - theorem
OAI.LowSpaceSubsetSum.deficiency_le_cardline 221 - theorem
OAI.LowSpaceSubsetSum.deficiency_emptyline 226 - theorem
OAI.LowSpaceSubsetSum.deficiency_flipline 231Source documentation
Sign changes preserve deficiency even when the domain is a proper subset of all indices whose signs are changed.
theorem deficiency_flip (a : ι → ℤ) (F V : Finset ι) : deficiency (flip a F) V = deficiency a V := by …Mentions: OAI.LowSpaceSubsetSum.deficiency, OAI.LowSpaceSubsetSum.flip
- theorem
OAI.LowSpaceSubsetSum.deficiency_superadditiveline 236Source documentation
Deficiency is superadditive on disjoint domains.
theorem deficiency_superadditive (a : ι → ℤ) {V W : Finset ι} (hd : Disjoint V W) : deficiency a V + deficiency a W ≤ deficiency a (V ∪ W) := by …Mentions: OAI.LowSpaceSubsetSum.deficiency
- theorem
OAI.LowSpaceSubsetSum.deficiency_monoline 249Source documentation
Inclusion monotonicity follows by splitting off the new indices.
theorem deficiency_mono (a : ι → ℤ) {V W : Finset ι} (hVW : V ⊆ W) : deficiency a V ≤ deficiency a W := by …Mentions: OAI.LowSpaceSubsetSum.deficiency
- theorem
OAI.LowSpaceSubsetSum.deficiency_insert_leline 260Source documentation
Adding a fresh index increases deficiency by at most one.
theorem deficiency_insert_le (a : ι → ℤ) {V : Finset ι} {i : ι} (hi : i ∉ V) : deficiency a (insert i V) ≤ deficiency a V + 1 := by …Mentions: OAI.LowSpaceSubsetSum.deficiency
- theorem
OAI.LowSpaceSubsetSum.deficiency_insert_boundsline 269 - theorem
OAI.LowSpaceSubsetSum.deficiency_replacement_lipschitzline 276Source documentation
Replacing one index of a domain by another changes deficiency by at most one, the bounded-difference fact used in the variance estimate.
theorem deficiency_replacement_lipschitz (a : ι → ℤ) {V : Finset ι} {i j : ι} (hi : i ∉ V) (hj : j ∉ V) : |deficiency a (insert i V) - deficiency a (insert j V)| ≤ 1 := by …Mentions: OAI.LowSpaceSubsetSum.deficiency