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⌋₊