Behrend's bound on Roth numbers #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file proves Behrend's lower bound on Roth numbers. This says that we can find a subset of
{1, ..., n}
of size n / exp (O (sqrt (log n)))
which does not contain arithmetic progressions of
length 3
.
The idea is that the sphere (in the n
dimensional Euclidean space) doesn't contain arithmetic
progressions (literally) because the corresponding ball is strictly convex. Thus we can take
integer points on that sphere and map them onto ℕ
in a way that preserves arithmetic progressions
(behrend.map
).
Main declarations #
behrend.sphere
: The intersection of the Euclidean sphere with the positive integer quadrant. This is the set that we will map onℕ
.behrend.map
: Given a natural numberd
,behrend.map d : ℕⁿ → ℕ
reads off the coordinates as digits in based
.behrend.card_sphere_le_roth_number_nat
: Implicit lower bound on Roth numbers in terms ofbehrend.sphere
.behrend.roth_lower_bound
: Behrend's explicit lower bound on Roth numbers.
References #
- [Bryan Gillespie, Behrend’s Construction] (http://www.epsilonsmall.com/resources/behrends-construction/behrend.pdf)
- Behrend, F. A., "On sets of integers which contain no three terms in arithmetical progression"
- Wikipedia, Salem-Spencer set
Tags #
Salem-Spencer, Behrend construction, arithmetic progression, sphere, strictly convex
Turning the sphere into a Salem-Spencer set #
We define behrend.sphere
, the intersection of the $$L^2$$ sphere with the positive quadrant of
integer points. Because the $$L^2$$ closed ball is strictly convex, the $$L^2$$ sphere and
behrend.sphere
are Salem-Spencer (add_salem_spencer_sphere
). Then we can turn this set in
fin n → ℕ
into a set in ℕ
using behrend.map
, which preserves add_salem_spencer
because it is
an additive monoid homomorphism.
The box {0, ..., d - 1}^n
as a finset.
Equations
- behrend.box n d = fintype.pi_finset (λ (_x : fin n), finset.range d)
The intersection of the sphere of radius sqrt k
with the integer points in the positive
quadrant.
Equations
- behrend.sphere n d k = finset.filter (λ (x : fin n → ℕ), finset.univ.sum (λ (i : fin n), x i ^ 2) = k) (behrend.box n d)
Optimization #
Now that we know how to turn the integer points of any sphere into a Salem-Spencer set, we find a
sphere containing many integer points by the pigeonhole principle. This gives us an implicit bound
that we then optimize by tweaking the parameters. The (almost) optimal parameters are
behrend.n_value
and behrend.d_value
.
The (almost) optimal value of n
in behrend.bound_aux
.
The (almost) optimal value of d
in behrend.bound_aux
.
Equations
- behrend.d_value N = ⌊↑N ^ (1 / ↑(behrend.n_value N)) / 2⌋₊