Documentation

Mathlib.Combinatorics.Additive.SubsetSum

Subset sums #

This file defines the subset sum of a finite subset of a commutative monoid.

References #

def Finset.subsetSum {M : Type u_1} [DecidableEq M] [AddCommMonoid M] (A : Finset M) :

The subset-sum of a finite set A in a commutative monoid is the set of all sums of subsets of A.

Instances For
    theorem Finset.mem_subsetSum_iff {M : Type u_1} [DecidableEq M] [AddCommMonoid M] {A : Finset M} {a : M} :
    a โˆˆ A.subsetSum โ†” โˆƒ B โІ A, โˆ‘ b โˆˆ B, b = a
    @[simp]
    theorem Finset.zero_mem_subsetSum {M : Type u_1} [DecidableEq M] [AddCommMonoid M] {A : Finset M} :
    0 โˆˆ A.subsetSum
    @[simp]
    theorem Finset.subsetSum_nonempty {M : Type u_1} [DecidableEq M] [AddCommMonoid M] {A : Finset M} :
    theorem Finset.subset_subsetSum {M : Type u_1} [DecidableEq M] [AddCommMonoid M] {A : Finset M} :
    A โІ A.subsetSum
    theorem Finset.subsetSum_mono {M : Type u_1} [DecidableEq M] [AddCommMonoid M] {A B : Finset M} (hAB : A โІ B) :
    A.subsetSum โІ B.subsetSum
    @[simp]
    theorem Finset.subsetSum_erase_zero {M : Type u_1} [DecidableEq M] [AddCommMonoid M] {A : Finset M} :
    theorem Finset.vadd_finset_subsetSum_subset_subsetSum_insert {M : Type u_1} [DecidableEq M] [AddCommMonoid M] {A : Finset M} {a : M} (a_notin_A : a โˆ‰ A) :
    a +แตฅ A.subsetSum โІ (insert a A).subsetSum
    theorem Finset.nonneg_of_mem_subsetSum {M : Type u_1} [DecidableEq M] [AddCommMonoid M] {A : Finset M} [LinearOrder M] [IsOrderedCancelAddMonoid M] (A_nonneg : โˆ€ x โˆˆ A, 0 โ‰ค x) (x : M) :
    x โˆˆ A.subsetSum โ†’ 0 โ‰ค x
    theorem Finset.card_add_card_subsetSum_lt_card_subsetSum_insert_max {M : Type u_1} [DecidableEq M] [AddCommMonoid M] {A : Finset M} {a : M} [LinearOrder M] [IsOrderedCancelAddMonoid M] (hA : โˆ€ x โˆˆ A, 0 < x) (hAa : โˆ€ x โˆˆ A, x < a) (ha : 0 < a) :
    A.card + A.subsetSum.card < (insert a A).subsetSum.card
    theorem Finset.card_succ_choose_two_lt_card_subsetSum_of_pos {M : Type u_1} [DecidableEq M] [AddCommMonoid M] {A : Finset M} [LinearOrder M] [IsOrderedCancelAddMonoid M] (A_pos : โˆ€ x โˆˆ A, 0 < x) :
    (A.card + 1).choose 2 < A.subsetSum.card