Documentation

Mathlib.Combinatorics.Additive.PluenneckeRuzsa

The Plünnecke-Ruzsa inequality #

This file proves Ruzsa's triangle inequality, the Plünnecke-Petridis lemma, and the Plünnecke-Ruzsa inequality.

Main declarations #

References #

Ruzsa's triangle inequality. Subtraction version.

theorem Finset.card_div_mul_le_card_div_mul_card_div {α : Type u_1} [CommGroup α] [DecidableEq α] (A : Finset α) (B : Finset α) (C : Finset α) :

Ruzsa's triangle inequality. Division version.

Ruzsa's triangle inequality. Sub-add-add version.

theorem Finset.card_div_mul_le_card_mul_mul_card_mul {α : Type u_1} [CommGroup α] [DecidableEq α] (A : Finset α) (B : Finset α) (C : Finset α) :

Ruzsa's triangle inequality. Div-mul-mul version.

Ruzsa's triangle inequality. Add-sub-sub version.

theorem Finset.card_mul_mul_le_card_div_mul_card_mul {α : Type u_1} [CommGroup α] [DecidableEq α] (A : Finset α) (B : Finset α) (C : Finset α) :

Ruzsa's triangle inequality. Mul-div-div version.

Ruzsa's triangle inequality. Add-add-sub version.

theorem Finset.card_mul_mul_le_card_mul_mul_card_div {α : Type u_1} [CommGroup α] [DecidableEq α] (A : Finset α) (B : Finset α) (C : Finset α) :

Ruzsa's triangle inequality. Mul-mul-div version.

theorem Finset.add_pluennecke_petridis {α : Type u_1} [AddCommGroup α] [DecidableEq α] {A : Finset α} {B : Finset α} (C : Finset α) (hA : ∀ (A' : Finset α), A' AFinset.card (A + B) * Finset.card A' Finset.card (A' + B) * Finset.card A) :
theorem Finset.mul_pluennecke_petridis {α : Type u_1} [CommGroup α] [DecidableEq α] {A : Finset α} {B : Finset α} (C : Finset α) (hA : ∀ (A' : Finset α), A' AFinset.card (A * B) * Finset.card A' Finset.card (A' * B) * Finset.card A) :

Sum triangle inequality #

Ruzsa's triangle inequality. Addition version.

Ruzsa's triangle inequality. Multiplication version.

theorem Finset.card_mul_mul_le_card_div_mul_card_div {α : Type u_1} [CommGroup α] [DecidableEq α] (A : Finset α) (B : Finset α) (C : Finset α) :

Ruzsa's triangle inequality. Add-sub-sub version.

theorem Finset.card_div_mul_le_card_mul_mul_card_div {α : Type u_1} [CommGroup α] [DecidableEq α] (A : Finset α) (B : Finset α) (C : Finset α) :

Ruzsa's triangle inequality. Sub-add-sub version.

theorem Finset.card_div_mul_le_card_div_mul_card_mul {α : Type u_1} [CommGroup α] [DecidableEq α] (A : Finset α) (B : Finset α) (C : Finset α) :

Ruzsa's triangle inequality. Sub-sub-add version.

theorem Finset.card_add_nsmul_le {α : Type u_2} [AddCommGroup α] [DecidableEq α] {A : Finset α} {B : Finset α} (hAB : ∀ (A' : Finset α), A' AFinset.card (A + B) * Finset.card A' Finset.card (A' + B) * Finset.card A) (n : ) :
↑(Finset.card (A + n B)) (↑(Finset.card (A + B)) / ↑(Finset.card A)) ^ n * ↑(Finset.card A)
theorem Finset.card_mul_pow_le {α : Type u_1} [CommGroup α] [DecidableEq α] {A : Finset α} {B : Finset α} (hAB : ∀ (A' : Finset α), A' AFinset.card (A * B) * Finset.card A' Finset.card (A' * B) * Finset.card A) (n : ) :
↑(Finset.card (A * B ^ n)) (↑(Finset.card (A * B)) / ↑(Finset.card A)) ^ n * ↑(Finset.card A)
theorem Finset.card_nsmul_sub_nsmul_le {α : Type u_1} [AddCommGroup α] [DecidableEq α] {A : Finset α} (hA : Finset.Nonempty A) (B : Finset α) (m : ) (n : ) :
↑(Finset.card (m B - n B)) (↑(Finset.card (A + B)) / ↑(Finset.card A)) ^ (m + n) * ↑(Finset.card A)

The Plünnecke-Ruzsa inequality. Addition version. Note that this is genuinely harder than the subtraction version because we cannot use a double counting argument.

theorem Finset.card_pow_div_pow_le {α : Type u_1} [CommGroup α] [DecidableEq α] {A : Finset α} (hA : Finset.Nonempty A) (B : Finset α) (m : ) (n : ) :
↑(Finset.card (B ^ m / B ^ n)) (↑(Finset.card (A * B)) / ↑(Finset.card A)) ^ (m + n) * ↑(Finset.card A)

The Plünnecke-Ruzsa inequality. Multiplication version. Note that this is genuinely harder than the division version because we cannot use a double counting argument.

theorem Finset.card_nsmul_sub_nsmul_le' {α : Type u_1} [AddCommGroup α] [DecidableEq α] {A : Finset α} (hA : Finset.Nonempty A) (B : Finset α) (m : ) (n : ) :
↑(Finset.card (m B - n B)) (↑(Finset.card (A - B)) / ↑(Finset.card A)) ^ (m + n) * ↑(Finset.card A)

The Plünnecke-Ruzsa inequality. Subtraction version.

theorem Finset.card_pow_div_pow_le' {α : Type u_1} [CommGroup α] [DecidableEq α] {A : Finset α} (hA : Finset.Nonempty A) (B : Finset α) (m : ) (n : ) :
↑(Finset.card (B ^ m / B ^ n)) (↑(Finset.card (A / B)) / ↑(Finset.card A)) ^ (m + n) * ↑(Finset.card A)

The Plünnecke-Ruzsa inequality. Subtraction version.

theorem Finset.card_nsmul_le {α : Type u_1} [AddCommGroup α] [DecidableEq α] {A : Finset α} (hA : Finset.Nonempty A) (B : Finset α) (n : ) :
↑(Finset.card (n B)) (↑(Finset.card (A + B)) / ↑(Finset.card A)) ^ n * ↑(Finset.card A)

Special case of the Plünnecke-Ruzsa inequality. Addition version.

theorem Finset.card_pow_le {α : Type u_1} [CommGroup α] [DecidableEq α] {A : Finset α} (hA : Finset.Nonempty A) (B : Finset α) (n : ) :
↑(Finset.card (B ^ n)) (↑(Finset.card (A * B)) / ↑(Finset.card A)) ^ n * ↑(Finset.card A)

Special case of the Plünnecke-Ruzsa inequality. Multiplication version.

theorem Finset.card_nsmul_le' {α : Type u_1} [AddCommGroup α] [DecidableEq α] {A : Finset α} (hA : Finset.Nonempty A) (B : Finset α) (n : ) :
↑(Finset.card (n B)) (↑(Finset.card (A - B)) / ↑(Finset.card A)) ^ n * ↑(Finset.card A)

Special case of the Plünnecke-Ruzsa inequality. Subtraction version.

theorem Finset.card_pow_le' {α : Type u_1} [CommGroup α] [DecidableEq α] {A : Finset α} (hA : Finset.Nonempty A) (B : Finset α) (n : ) :
↑(Finset.card (B ^ n)) (↑(Finset.card (A / B)) / ↑(Finset.card A)) ^ n * ↑(Finset.card A)

Special case of the Plünnecke-Ruzsa inequality. Division version.