Documentation

Mathlib.Combinatorics.Additive.DoublingConst

Doubling and difference constants #

This file defines the doubling and difference constants of two finsets in a group.

def Finset.mulConst {G : Type u_1} [Group G] [DecidableEq G] (A B : Finset G) :

The doubling constant σₘ[A, B] of two finsets A and B in a group is |A * B| / |A|.

The notation σₘ[A, B] is available in scope Combinatorics.Additive.

Equations
def Finset.addConst {G : Type u_1} [AddGroup G] [DecidableEq G] (A B : Finset G) :

The doubling constant σ[A, B] of two finsets A and B in a group is |A + B| / |A|.

The notation σ[A, B] is available in scope Combinatorics.Additive.

Equations
def Finset.divConst {G : Type u_1} [Group G] [DecidableEq G] (A B : Finset G) :

The difference constant δₘ[A, B] of two finsets A and B in a group is |A / B| / |A|.

The notation δₘ[A, B] is available in scope Combinatorics.Additive.

Equations
def Finset.subConst {G : Type u_1} [AddGroup G] [DecidableEq G] (A B : Finset G) :

The difference constant σ[A, B] of two finsets A and B in a group is |A - B| / |A|.

The notation δ[A, B] is available in scope Combinatorics.Additive.

Equations

Pretty printer defined by notation3 command.

Equations
  • One or more equations did not get rendered due to their size.

The doubling constant σₘ[A, B] of two finsets A and B in a group is |A * B| / |A|.

Equations
  • One or more equations did not get rendered due to their size.

The doubling constant σₘ[A] of a finset A in a group is |A * A| / |A|.

Equations
  • One or more equations did not get rendered due to their size.

Pretty printer defined by notation3 command.

Equations
  • One or more equations did not get rendered due to their size.

Pretty printer defined by notation3 command.

Equations
  • One or more equations did not get rendered due to their size.

The doubling constant σ[A, B] of two finsets A and B in a group is |A + B| / |A|.

Equations
  • One or more equations did not get rendered due to their size.

Pretty printer defined by notation3 command.

Equations
  • One or more equations did not get rendered due to their size.

The doubling constant σ[A] of a finset A in a group is |A + A| / |A|.

Equations
  • One or more equations did not get rendered due to their size.

Pretty printer defined by notation3 command.

Equations
  • One or more equations did not get rendered due to their size.

The difference constant σₘ[A, B] of two finsets A and B in a group is |A / B| / |A|.

Equations
  • One or more equations did not get rendered due to their size.

Pretty printer defined by notation3 command.

Equations
  • One or more equations did not get rendered due to their size.

The difference constant σₘ[A] of a finset A in a group is |A / A| / |A|.

Equations
  • One or more equations did not get rendered due to their size.

The difference constant σ[A, B] of two finsets A and B in a group is |A - B| / |A|.

Equations
  • One or more equations did not get rendered due to their size.

Pretty printer defined by notation3 command.

Equations
  • One or more equations did not get rendered due to their size.

Pretty printer defined by notation3 command.

Equations
  • One or more equations did not get rendered due to their size.

The difference constant σ[A] of a finset A in a group is |A - A| / |A|.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem Finset.mulConst_mul_card {G : Type u_1} [Group G] [DecidableEq G] (A B : Finset G) :
A.mulConst B * A.card = (A * B).card
@[simp]
theorem Finset.addConst_mul_card {G : Type u_1} [AddGroup G] [DecidableEq G] (A B : Finset G) :
A.addConst B * A.card = (A + B).card
@[simp]
theorem Finset.divConst_mul_card {G : Type u_1} [Group G] [DecidableEq G] (A B : Finset G) :
A.divConst B * A.card = (A / B).card
@[simp]
theorem Finset.subConst_mul_card {G : Type u_1} [AddGroup G] [DecidableEq G] (A B : Finset G) :
A.subConst B * A.card = (A - B).card
@[simp]
theorem Finset.card_mul_mulConst {G : Type u_1} [Group G] [DecidableEq G] (A B : Finset G) :
A.card * A.mulConst B = (A * B).card
@[simp]
theorem Finset.card_mul_addConst {G : Type u_1} [AddGroup G] [DecidableEq G] (A B : Finset G) :
A.card * A.addConst B = (A + B).card
@[simp]
theorem Finset.card_mul_divConst {G : Type u_1} [Group G] [DecidableEq G] (A B : Finset G) :
A.card * A.divConst B = (A / B).card
@[simp]
theorem Finset.card_mul_subConst {G : Type u_1} [AddGroup G] [DecidableEq G] (A B : Finset G) :
A.card * A.subConst B = (A - B).card
@[simp]
theorem Finset.mulConst_empty_left {G : Type u_1} [Group G] [DecidableEq G] (B : Finset G) :
@[simp]
theorem Finset.addConst_empty_left {G : Type u_1} [AddGroup G] [DecidableEq G] (B : Finset G) :
@[simp]
theorem Finset.divConst_empty_left {G : Type u_1} [Group G] [DecidableEq G] (B : Finset G) :
@[simp]
theorem Finset.subConst_empty_left {G : Type u_1} [AddGroup G] [DecidableEq G] (B : Finset G) :
@[simp]
theorem Finset.mulConst_empty_right {G : Type u_1} [Group G] [DecidableEq G] (A : Finset G) :
@[simp]
theorem Finset.addConst_empty_right {G : Type u_1} [AddGroup G] [DecidableEq G] (A : Finset G) :
@[simp]
theorem Finset.divConst_empty_right {G : Type u_1} [Group G] [DecidableEq G] (A : Finset G) :
@[simp]
theorem Finset.subConst_empty_right {G : Type u_1} [AddGroup G] [DecidableEq G] (A : Finset G) :
@[simp]
theorem Finset.mulConst_inv_right {G : Type u_1} [Group G] [DecidableEq G] (A B : Finset G) :
@[simp]
theorem Finset.addConst_neg_right {G : Type u_1} [AddGroup G] [DecidableEq G] (A B : Finset G) :
A.addConst (-B) = A.subConst B
@[simp]
theorem Finset.divConst_inv_right {G : Type u_1} [Group G] [DecidableEq G] (A B : Finset G) :
@[simp]
theorem Finset.subConst_neg_right {G : Type u_1} [AddGroup G] [DecidableEq G] (A B : Finset G) :
A.subConst (-B) = A.addConst B
theorem Finset.mulConst_le_inv_dens {G : Type u_1} [Group G] [DecidableEq G] {A B : Finset G} [Fintype G] :

Dense sets have small doubling.

Dense sets have small doubling.

theorem Finset.divConst_le_inv_dens {G : Type u_1} [Group G] [DecidableEq G] {A B : Finset G} [Fintype G] :

Dense sets have small difference constant.

Dense sets have small difference constant.

theorem Finset.cast_addConst {G' : Type u_2} [AddGroup G'] [DecidableEq G'] {𝕜 : Type u_3} [Semifield 𝕜] [CharZero 𝕜] (A B : Finset G') :
(A.addConst B) = (A + B).card / A.card
theorem Finset.cast_subConst {G' : Type u_2} [AddGroup G'] [DecidableEq G'] {𝕜 : Type u_3} [Semifield 𝕜] [CharZero 𝕜] (A B : Finset G') :
(A.subConst B) = (A - B).card / A.card
theorem Finset.cast_mulConst {G : Type u_1} [Group G] [DecidableEq G] {𝕜 : Type u_3} [Semifield 𝕜] [CharZero 𝕜] (A B : Finset G) :
(A.mulConst B) = (A * B).card / A.card
theorem Finset.cast_divConst {G : Type u_1} [Group G] [DecidableEq G] {𝕜 : Type u_3} [Semifield 𝕜] [CharZero 𝕜] (A B : Finset G) :
(A.divConst B) = (A / B).card / A.card
theorem Finset.cast_addConst_mul_card {G' : Type u_2} [AddGroup G'] [DecidableEq G'] {𝕜 : Type u_3} [Semifield 𝕜] [CharZero 𝕜] (A B : Finset G') :
(A.addConst B) * A.card = (A + B).card
theorem Finset.cast_subConst_mul_card {G' : Type u_2} [AddGroup G'] [DecidableEq G'] {𝕜 : Type u_3} [Semifield 𝕜] [CharZero 𝕜] (A B : Finset G') :
(A.subConst B) * A.card = (A - B).card
theorem Finset.card_mul_cast_addConst {G' : Type u_2} [AddGroup G'] [DecidableEq G'] {𝕜 : Type u_3} [Semifield 𝕜] [CharZero 𝕜] (A B : Finset G') :
A.card * (A.addConst B) = (A + B).card
theorem Finset.card_mul_cast_subConst {G' : Type u_2} [AddGroup G'] [DecidableEq G'] {𝕜 : Type u_3} [Semifield 𝕜] [CharZero 𝕜] (A B : Finset G') :
A.card * (A.subConst B) = (A - B).card
@[simp]
theorem Finset.cast_mulConst_mul_card {G : Type u_1} [Group G] [DecidableEq G] {𝕜 : Type u_3} [Semifield 𝕜] [CharZero 𝕜] (A B : Finset G) :
(A.mulConst B) * A.card = (A * B).card
@[simp]
theorem Finset.cast_divConst_mul_card {G : Type u_1} [Group G] [DecidableEq G] {𝕜 : Type u_3} [Semifield 𝕜] [CharZero 𝕜] (A B : Finset G) :
(A.divConst B) * A.card = (A / B).card
@[simp]
theorem Finset.card_mul_cast_mulConst {G : Type u_1} [Group G] [DecidableEq G] {𝕜 : Type u_3} [Semifield 𝕜] [CharZero 𝕜] (A B : Finset G) :
A.card * (A.mulConst B) = (A * B).card
@[simp]
theorem Finset.card_mul_cast_divConst {G : Type u_1} [Group G] [DecidableEq G] {𝕜 : Type u_3} [Semifield 𝕜] [CharZero 𝕜] (A B : Finset G) :
A.card * (A.divConst B) = (A / B).card
@[simp]
theorem Finset.mulConst_inv_left {G : Type u_1} [CommGroup G] [DecidableEq G] (A B : Finset G) :
@[simp]
theorem Finset.addConst_neg_left {G : Type u_1} [AddCommGroup G] [DecidableEq G] (A B : Finset G) :
(-A).addConst B = A.subConst B
@[simp]
theorem Finset.divConst_inv_left {G : Type u_1} [CommGroup G] [DecidableEq G] (A B : Finset G) :
@[simp]
theorem Finset.subConst_neg_left {G : Type u_1} [AddCommGroup G] [DecidableEq G] (A B : Finset G) :
(-A).subConst B = A.addConst B

If A has small difference, then it has small doubling, with the constant squared.

This is a consequence of the Ruzsa triangle inequality.

If A has small difference, then it has small doubling, with the constant squared.

This is a consequence of the Ruzsa triangle inequality.

If A has small doubling, then it has small difference, with the constant squared.

This is a consequence of the Ruzsa triangle inequality.

If A has small doubling, then it has small difference, with the constant squared.

This is a consequence of the Ruzsa triangle inequality.