Kneser's addition theorem #
This file proves Kneser's theorem. This states that |s + H| + |t + H| - |H| ≤ |s + t| where s,
t are finite nonempty sets in a commutative group and H is the stabilizer of s + t. Further,
if the inequality is strict, then we in fact have |s + H| + |t + H| ≤ |s + t|.
Main declarations #
Finset.mul_kneser: Kneser's theorem.Finset.mul_strict_kneser: Strict Kneser theorem.
References #
- [Imre Ruzsa, Sumsets and structure][ruzsa2009]
- Matt DeVos, A short proof of Kneser's addition theorem
Auxiliary results #
theorem Finset.mul_aux1 {α : Type u_1} [CommGroup α] [DecidableEq α] {s s' t t' C : Finset α} (ih : (s' * (s' * t').mulStab).card + (t' * (s' * t').mulStab).card ≤ (s' * t').card + (s' * t').mulStab.card) (hconv : (s ∩ t).card + ((s ∪ t) * C.mulStab).card ≤ C.card + C.mulStab.card) (hnotconv : (C ∪ s' * t').card + (C ∪ s' * t').mulStab.card < (s ∩ t).card + ((s ∪ t) * (C ∪ s' * t').mulStab).card) (hCun : (C ∪ s' * t').mulStab = (s' * t').mulStab) (hdisj : Disjoint C (s' * t')) :
theorem Finset.add_aux1 {α : Type u_1} [AddCommGroup α] [DecidableEq α] {s s' t t' C : Finset α} (ih : (s' + (s' + t').addStab).card + (t' + (s' + t').addStab).card ≤ (s' + t').card + (s' + t').addStab.card) (hconv : (s ∩ t).card + (s ∪ t + C.addStab).card ≤ C.card + C.addStab.card) (hnotconv : (C ∪ (s' + t')).card + (C ∪ (s' + t')).addStab.card < (s ∩ t).card + (s ∪ t + (C ∪ (s' + t')).addStab).card) (hCun : (C ∪ (s' + t')).addStab = (s' + t').addStab) (hdisj : Disjoint C (s' + t')) :
theorem Finset.disjoint_vadd_addStab {α : Type u_1} [AddCommGroup α] [DecidableEq α] {s t : Finset α} {a : α} (hst : s ⊆ t) (has : ¬a +ᵥ s.addStab ⊆ t) :
theorem Finset.inter_add_sub_card_le {α : Type u_1} [AddCommGroup α] [DecidableEq α] {a : α} {s t C : Finset α} (has : a ∈ s) (hst : (s ∩ (a +ᵥ C.addStab) + t ∩ (a +ᵥ C.addStab)).addStab ⊆ C.addStab) :
Kneser's theorem #
theorem Finset.mul_strict_kneser {α : Type u_1} [CommGroup α] [DecidableEq α] (s t : Finset α) (h : (s * (s * t).mulStab).card + (t * (s * t).mulStab).card < (s * t).card + (s * t).mulStab.card) :
The strict version of Kneser's multiplication theorem. If the LHS of Finset.mul_kneser
does not equal the RHS, then it is in fact much smaller.
theorem Finset.add_strict_kneser {α : Type u_1} [AddCommGroup α] [DecidableEq α] (s t : Finset α) (h : (s + (s + t).addStab).card + (t + (s + t).addStab).card < (s + t).card + (s + t).addStab.card) :
The strict version of Kneser's addition theorem. If the LHS of
Finset.add_kneser does not equal the RHS, then it is in fact much smaller.