/- Copyright 2025 The Formal Conjectures Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -/ module public import FormalConjecturesUtil

Equidistributed Sequences

Corollary 4.2 of Chapter 1 states that the sequence $(x^n), n = 1, 2, ... ,$ is equidistributed modulo 1 for almost all x > 1. And a little bit further down: "one does not know whether sequences such as $(e^n)$, $(π^n)$, or even $((\frac 3 2)^n)$" are equidistributed modulo 1 or not.

References:

    Uniform Distribution of Sequences by L. Kuipers and H. Niederreiter, 1974

    Wikipedia

    [Mat80] de Mathan, Bernard. "Numbers contravening a condition in density modulo 1." Acta Mathematica Hungarica 36.3-4 (1980): 237-241.

    [Pol79] Pollington, Andrew Douglas. "On the density of sequence ${n_ {k}\xi} $." Illinois Journal of Mathematics 23.4 (1979): 511-515.

@[expose] public sectionnamespace Equidistributionopen scoped Topology

A point x is an accumulation point of a sequence s_0, s_1, ... if any neighbourhood of x contains a point of the sequence distinct from x.

def IsAccumulationPoint (x : ) (s : ) : Prop := x closure (Set.range s \ {x})

If a point x is an accumulation point of a sequence s_0, s_1, ... then there is a subsequence of s that tends to x

x:s: hx:IsAccumulationPoint x sU:Set hU:U 𝓝 xN:hcon: (b : ), N b s b UhV:U n Finset.range N, {y | s n x y s n} 𝓝 xn:hyU:s n UhyI: i Finset.range N, s n {y | s i x y s i}hyx:s n {x}False x:s: hx:IsAccumulationPoint x sU:Set hU:U 𝓝 xN:hcon: (b : ), N b s b UhV:U n Finset.range N, {y | s n x y s n} 𝓝 xn:hyU:s n UhyI: i Finset.range N, s n {y | s i x y s i}hyx:s n {x}hn:n < NFalsex:s: hx:IsAccumulationPoint x sU:Set hU:U 𝓝 xN:hcon: (b : ), N b s b UhV:U n Finset.range N, {y | s n x y s n} 𝓝 xn:hyU:s n UhyI: i Finset.range N, s n {y | s i x y s i}hyx:s n {x}hn:n NFalse x:s: hx:IsAccumulationPoint x sU:Set hU:U 𝓝 xN:hcon: (b : ), N b s b UhV:U n Finset.range N, {y | s n x y s n} 𝓝 xn:hyU:s n UhyI: i Finset.range N, s n {y | s i x y s i}hyx:s n {x}hn:n < NFalse All goals completed! 🐙 x:s: hx:IsAccumulationPoint x sU:Set hU:U 𝓝 xN:hcon: (b : ), N b s b UhV:U n Finset.range N, {y | s n x y s n} 𝓝 xn:hyU:s n UhyI: i Finset.range N, s n {y | s i x y s i}hyx:s n {x}hn:n NFalse All goals completed! 🐙

The sequence (3/2)^n is equidistributed modulo 1.

@[category research open, AMS 11] theorem isEquidistributedModuloOne_three_halves_pow : IsEquidistributedModuloOne (fun n => (3 / 2 : )^n) := IsEquidistributedModuloOne fun n (3 / 2) ^ n All goals completed! 🐙

It is not true that for every transcendental number x the sequence x * (3 / 2) ^ n is equidistributed modulo 1. The sequence (3 / 2) ^ n is lacunary, so by the theorem of Pollington [Pol79] and de Mathan [Mat80] the set of real numbers x for which x * (3 / 2) ^ n is not even dense modulo 1 has Hausdorff dimension 1. This set is uncountable, so it contains transcendental numbers. Alternatively, an elementary nested-interval construction (see issue #5003) gives a Cantor set of x with Int.fract (x * (3 / 2) ^ (8 * j)) ∈ [0, 1 / 10] for all j, which already rules out equidistribution for uncountably many, hence some transcendental, x. By Koksma's metric theorem (Kuipers–Niederreiter, Chapter 1, Section 4), the sequence x * (3 / 2) ^ n is equidistributed modulo 1 for almost all x.

@[category research solved, AMS 11] theorem isEquidistributedModuloOne_transcendental_three_halves_pow : ¬ x : , Transcendental x IsEquidistributedModuloOne (fun n x * (3 / 2 : ) ^ n) := ¬ (x : ), Transcendental x IsEquidistributedModuloOne fun n x * (3 / 2) ^ n All goals completed! 🐙

The sequence (3/2)^n has infinitely many accumulation points modulo 1.

@[category research solved, AMS 11] theorem isAccumulationPoint_three_halves_pow_infinite : {x | IsAccumulationPoint x (fun n => Int.fract <| (3 / 2 : )^n)}.Infinite := {x | IsAccumulationPoint x fun n Int.fract ((3 / 2) ^ n)}.Infinite All goals completed! 🐙

Find an accumulation point of the sequence (3/2)^n modulo 1.

@[category research open, AMS 11] theorem isAccumulationPoint_three_halves_pow : IsAccumulationPoint answer(sorry) (fun n => Int.fract <| (3 / 2 : )^n) := IsAccumulationPoint sorry fun n Int.fract ((3 / 2) ^ n) All goals completed! 🐙

The values of (3/2)^n modulo 1 are pairwise distinct: if (3/2)^n - (3/2)^m were an integer for m < n, then 3^n - 3^m * 2^(n - m) would be even.

n:m:hnm:(fun n Int.fract ((3 / 2) ^ n)) n = (fun n Int.fract ((3 / 2) ^ n)) mhne:¬n = mhlt:m < nz:hz:(3 / 2) ^ n - (3 / 2) ^ m = zh2:2 ^ n 0key:3 ^ n - 3 ^ m * 2 ^ (n - m) = z * 2 ^ nhmod:1 ^ n - 1 ^ m * 0 = z * 0False All goals completed! 🐙

There is an accumulation point of the sequence (3/2)^n modulo 1: its values are pairwise distinct and lie in [0, 1], so they have an accumulation point by compactness.

hinf:(Set.range fun n Int.fract ((3 / 2) ^ n)).Infinitehsub:(Set.range fun n Int.fract ((3 / 2) ^ n)) Set.Icc 0 1 p, IsAccumulationPoint p fun n Int.fract ((3 / 2) ^ n) hinf:(Set.range fun n Int.fract ((3 / 2) ^ n)).Infinitehsub:(Set.range fun n Int.fract ((3 / 2) ^ n)) Set.Icc 0 1x:hx:AccPt x (Filter.principal (Set.range fun n Int.fract ((3 / 2) ^ n))) p, IsAccumulationPoint p fun n Int.fract ((3 / 2) ^ n) All goals completed! 🐙end Equidistribution