Documentation

Mathlib.Combinatorics.Additive.ApproximateSubgroup

Approximate subgroups #

This file defines approximate subgroups of a group, namely symmetric sets A such that A * A can be covered by a small number of translates of A.

Main results #

Approximate subgroups are a central concept in additive combinatorics, as a natural weakening and flexible substitute of genuine subgroups. As such, they share numerous properties with subgroups:

Approximate subgroups are close qualitatively and quantitatively to other concepts in additive combinatorics:

It can be readily confirmed that approximate subgroups are a weakening of subgroups:

structure IsApproximateAddSubgroup {G : Type u_2} [AddGroup G] (K : ) (A : Set G) :

An approximate subgroup in a group is a symmetric set A containing the identity and such that A + A can be covered by a small number of translates of A.

In practice, we will take K fixed and A large but finite.

  • zero_mem : 0 A
  • neg_eq_self : -A = A
  • two_nsmul_covByVAdd : CovByVAdd G K (2 A) A
structure IsApproximateSubgroup {G : Type u_1} [Group G] (K : ) (A : Set G) :

An approximate subgroup in a group is a symmetric set A containing the identity and such that A * A can be covered by a small number of translates of A.

In practice, we will take K fixed and A large but finite.

theorem IsApproximateSubgroup.nonempty {G : Type u_1} [Group G] {A : Set G} {K : } (hA : IsApproximateSubgroup K A) :
theorem IsApproximateSubgroup.one_le {G : Type u_1} [Group G] {A : Set G} {K : } (hA : IsApproximateSubgroup K A) :
1 K
theorem IsApproximateAddSubgroup.one_le {G : Type u_1} [AddGroup G] {A : Set G} {K : } (hA : IsApproximateAddSubgroup K A) :
1 K
theorem IsApproximateSubgroup.mono {G : Type u_1} [Group G] {A : Set G} {K L : } (hKL : K L) (hA : IsApproximateSubgroup K A) :
theorem IsApproximateAddSubgroup.mono {G : Type u_1} [AddGroup G] {A : Set G} {K L : } (hKL : K L) (hA : IsApproximateAddSubgroup K A) :
theorem IsApproximateSubgroup.card_pow_le {G : Type u_1} [Group G] {K : } [DecidableEq G] {A : Finset G} (hA : IsApproximateSubgroup K A) {n : } :
(A ^ n).card K ^ (n - 1) * A.card
theorem IsApproximateAddSubgroup.card_nsmul_le {G : Type u_1} [AddGroup G] {K : } [DecidableEq G] {A : Finset G} (hA : IsApproximateAddSubgroup K A) {n : } :
(n A).card K ^ (n - 1) * A.card
theorem IsApproximateSubgroup.card_mul_self_le {G : Type u_1} [Group G] {K : } [DecidableEq G] {A : Finset G} (hA : IsApproximateSubgroup K A) :
(A * A).card K * A.card
theorem IsApproximateAddSubgroup.card_add_self_le {G : Type u_1} [AddGroup G] {K : } [DecidableEq G] {A : Finset G} (hA : IsApproximateAddSubgroup K A) :
(A + A).card K * A.card
theorem IsApproximateSubgroup.image {G : Type u_1} [Group G] {A : Set G} {K : } {F : Type u_2} {H : Type u_3} [Group H] [FunLike F G H] [MonoidHomClass F G H] (f : F) (hA : IsApproximateSubgroup K A) :
theorem IsApproximateAddSubgroup.image {G : Type u_1} [AddGroup G] {A : Set G} {K : } {F : Type u_2} {H : Type u_3} [AddGroup H] [FunLike F G H] [AddMonoidHomClass F G H] (f : F) (hA : IsApproximateAddSubgroup K A) :
theorem IsApproximateSubgroup.subgroup {G : Type u_1} [Group G] {S : Type u_2} [SetLike S G] [SubgroupClass S G] {H : S} :
theorem IsApproximateSubgroup.of_small_tripling {G : Type u_1} [Group G] {K : } [DecidableEq G] {A : Finset G} (hA₁ : 1 A) (hAsymm : A⁻¹ = A) (hA : (A ^ 3).card K * A.card) :
IsApproximateSubgroup (K ^ 3) (A ^ 2)
theorem IsApproximateAddSubgroup.of_small_tripling {G : Type u_1} [AddGroup G] {K : } [DecidableEq G] {A : Finset G} (hA₁ : 0 A) (hAsymm : -A = A) (hA : (3 A).card K * A.card) :
theorem IsApproximateSubgroup.pow_inter_pow_covBySMul_sq_inter_sq {G : Type u_1} [Group G] {A B : Set G} {K L : } {m n : } (hA : IsApproximateSubgroup K A) (hB : IsApproximateSubgroup L B) (hm : 2 m) (hn : 2 n) :
CovBySMul G (K ^ (m - 1) * L ^ (n - 1)) (A ^ m B ^ n) (A ^ 2 B ^ 2)
theorem IsApproximateAddSubgroup.nsmul_inter_nsmul_covByVAdd_sq_inter_sq {G : Type u_1} [AddGroup G] {A B : Set G} {K L : } {m n : } (hA : IsApproximateAddSubgroup K A) (hB : IsApproximateAddSubgroup L B) (hm : 2 m) (hn : 2 n) :
CovByVAdd G (K ^ (m - 1) * L ^ (n - 1)) (m A n B) (2 A 2 B)
theorem IsApproximateSubgroup.pow_inter_pow {G : Type u_1} [Group G] {A B : Set G} {K L : } {m n : } (hA : IsApproximateSubgroup K A) (hB : IsApproximateSubgroup L B) (hm : 2 m) (hn : 2 n) :
IsApproximateSubgroup (K ^ (2 * m - 1) * L ^ (2 * n - 1)) (A ^ m B ^ n)
theorem IsApproximateAddSubgroup.nsmul_inter_nsmul {G : Type u_1} [AddGroup G] {A B : Set G} {K L : } {m n : } (hA : IsApproximateAddSubgroup K A) (hB : IsApproximateAddSubgroup L B) (hm : 2 m) (hn : 2 n) :
IsApproximateAddSubgroup (K ^ (2 * m - 1) * L ^ (2 * n - 1)) (m A n B)
@[simp]
theorem isApproximateSubgroup_one {G : Type u_1} [Group G] {A : Set G} :
IsApproximateSubgroup 1 A ∃ (H : Subgroup G), H = A

A 1-approximate subgroup is the same thing as a subgroup.

@[simp]
theorem isApproximateAddSubgroup_zero {G : Type u_1} [AddGroup G] {A : Set G} :
IsApproximateAddSubgroup 1 A ∃ (H : AddSubgroup G), H = A

A 1-approximate subgroup is the same thing as a subgroup.