Sets with very small doubling #
For a finset A
in a group, its doubling is #(A * A) / #A
. This file characterises sets with
- no doubling as the sets which are either empty or translates of a subgroup.
For the converse, use the existing facts from the pointwise API:
∅ ^ 2 = ∅
(Finset.empty_pow
),(a • H) ^ 2 = a ^ 2 • H ^ 2 = a ^ 2 • H
(smul_pow
,coe_set_pow
). - doubling strictly less than
3 / 2
as the sets that are contained in a coset of a subgroup of size strictly less than3 / 2 * #A
.
TODO #
- Do we need versions stated using the doubling constant (
Finset.mulConst
)? - Add characterisation of sets with doubling < φ. See https://terrytao.wordpress.com/2009/11/10/an-elementary-non-commutative-freiman-theorem.
- Add characterisation of sets with doubling ≤ 2 - ε. See https://terrytao.wordpress.com/2011/03/12/hamidounes-freiman-kneser-theorem-for-nonabelian-groups.
References #
- An elementary non-commutative Freiman theorem, Terence Tao
- [Introduction to approximate groups, Matthew Tointon][tointon2020]
Doubling exactly 1
#
A non-empty set with no doubling is the left translate of its stabilizer.
A non-empty set with no doubling is the left-translate of its stabilizer.
A non-empty set with no doubling is the right translate of its stabilizer.
A non-empty set with no doubling is the right translate of its stabilizer.
Doubling strictly less than 3 / 2
#
If A
has doubling strictly less than 3 / 2
, then A⁻¹ * A
is a subgroup.
Note that this is sharp: A = {0, 1}
in ℤ
has doubling 3 / 2
and A⁻¹ * A
isn't a subgroup.
Instances For
Equations
- A.instFintypeSubtypeMemSubgroupInvMulSubgroup h = ⋯.mpr inferInstance
If A
has doubling strictly less than 3 / 2
, then there exists a subgroup H
of the
normaliser of A
of size strictly less than 3 / 2 * #A
such that A
is a subset of a coset of
H
(in fact a subset of a • H
for every a ∈ A
).
Note that this is sharp: A = {0, 1}
in ℤ
has doubling 3 / 2
and can't be covered by a subgroup
of size at most 2
.
This is Theorem 2.2.1 in [tointon2020].