Odd-restricted Vinogradov estimate at the sharp block count (source Corollary 3.5)
ProvedTaoFivePrimes.vinogradov_odd_sharpCorollary 3.5 at the sharp block count: a range of odd integers of width costs one block, not two.
Let , let and , let be an integer coprime to , and let
Then for all real and all real endpoints with ,
where is when and otherwise.
This is the source's Corollary 3.5 restricted to the case that actually occurs in Section 5.2, and the restriction matters. As published, Corollary 3.5 carries the covering count . On a block , whose width is exactly , that count evaluates to ; but the number of blocks of length needed to cover a range of width is , and exceeds it exactly when divides . Here and , so the correct count is .
The source's own proof produces the sharp count. Writing turns the left-hand side into
because . The -range has width , so Lemma 3.4 applies to it with one block. The doubling of the admissible width from to and the doubling of the frequency from to are the same phenomenon seen from the two sides of the reindexing; nothing in the argument asks for two blocks.
The constant is decided here. Carrying the published count instead of the sharp one doubles the coefficient of the second term of the source's display (5.17) from to , and the platform's Type I right-hand side does not accommodate that: the assembled bound then overshoots by a factor in the worst admissible corner.
Formalization note. The summation range is , realized as zIoc, and the summand uses the explicit if convention at the zeros of the sine, since Lean's real division returns there and a bare min would silently contribute instead of . The reindexing is stated over rather than because Int.floor is not clamped at zero, which makes the index-set identity exact and, more importantly, makes the reflection argument (odd_symm_min_sum_le, in the same definition module) expressible at all. The hypothesis is exactly the hypothesis of Corollary 3.5 as stated in the source.
import Mathlib import Definitions.Def_TaoFivePrimes_Theorem51VinogradovSharp open Finset open TaoFivePrimesVinogradovSharp
theorem TaoFivePrimes.vinogradov_odd_sharp
(B : ℝ) (hB : 0 ≤ B) (q : ℕ) (hq : 0 < q)
(A alpha beta theta x y : ℝ) (a' : ℤ) (hA : 0 ≤ A)
(ha'q : Nat.Coprime a'.natAbs q)
(halpha : 2 * alpha = (a' : ℝ) / q + beta) (hbeta : |beta| ≤ 1 / (q : ℝ) ^ 2)
(hwidth : y ≤ x + 2 * (q : ℝ)) :
(∑ z ∈ (TaoFivePrimesVinogradovSharp.zIoc x y).filter (fun z => Odd z),
TaoFivePrimesVinogradovSharp.vmin A B alpha theta z)
≤ 2 * A + (2 / Real.pi) * B * (q : ℝ) * Real.log (4 * q) := by
sorry