Weighted large sieve for primitive Dirichlet characters (Riesel–Vaughan form, constant 16)
ProvedMVSieve.primitive_character_large_sieveLet and be integers, and let for . Assume every with has all of its prime factors larger than , so the coefficients live on integers coprime to every modulus . Then
where runs over the primitive Dirichlet characters modulo (for , the trivial character).
This is the weighted multiplicative large sieve in the form Riesel and Vaughan use in their treatment of Schnirelmann's constant: their (8.17) combined with the Gauss-sum decomposition that leads to (8.18). Here the Montgomery–Vaughan constant is replaced by . The inner sum over is the sieve gain: by MVSieve.large_sieve_weight_lower it is about when . Applied to the indicator of primes in an interval, it bounds the non-principal character sums of primes on average over moduli.
Formalization note: ranges over Finset.Icc 1 Q in ℕ+; over Finset.Icc 1 Q filtered by , Nat.Coprime r m, Squarefree m; primitivity is written χ.conductor = r; is applied to the image of in ZMod r.
import Mathlib.NumberTheory.DirichletCharacter.Orthogonality import Mathlib.Data.Nat.Squarefree import Mathlib.Data.Nat.Totient import Mathlib.Data.PNat.Interval import Mathlib.Analysis.Complex.Basic
theorem MVSieve.primitive_character_large_sieve (Q : ℕ+) (M N : ℕ) (a : ℕ → ℂ)
(ha : ∀ n ∈ Finset.Ico M (M + N), a n ≠ 0 → ∀ p : ℕ, p.Prime → p ∣ n → (Q : ℕ) < p) :
∑ r ∈ Finset.Icc 1 Q, ∑ m ∈ (Finset.Icc 1 (Q : ℕ)).filter
(fun m => (r : ℕ) * m ≤ Q ∧ Nat.Coprime r m ∧ Squarefree m),
((r : ℕ) : ℝ) / (((r : ℕ).totient : ℝ) * (m.totient : ℝ) *
((N : ℝ) + 16 * (((r : ℕ) * m : ℕ) : ℝ) * ((Q : ℕ) : ℝ))) *
∑ χ ∈ Finset.univ.filter (fun χ : DirichletCharacter ℂ r => χ.conductor = r),
‖∑ n ∈ Finset.Ico M (M + N), a n * χ n‖ ^ 2
≤ ∑ n ∈ Finset.Ico M (M + N), ‖a n‖ ^ 2 := by sorry