import ElevenTwelfths.EisensteinFamily
import OAI.NumberTheory.DirichletL.Arithmetic.IdealMobius
import OAI.NumberTheory.DirichletL.MeanSquare.OutsideIdeals
import OAI.NumberTheory.DirichletL.GaussSum.ReflectionBracketsThe concrete Eisenstein family used by the proof
The readable sum is indexed by the primary generator of each admissible ideal. Internally, the OpenAI estimates are stated for ideals. This file makes the conversion explicit and proves that the two finite sums agree.
The column ball and row ball are deliberately different, just as they are in the OpenAI formalization: columns are admissible primary generators, whereas Poisson summation runs over every Eisenstein integer in a norm ball.
namespace ElevenTwelfthsnoncomputable sectionopen scoped BigOperators Classicalopen OAIopen OAI.ActualEisensteinCubicopen OAI.CompletedGaussopen OAI.ConcretePrimeRowBridge hiding Oopen OAI.InitialMeanSquareopen OAI.PrimaryIdealUnitReindexopen OAI.ShortDraftHeckeBridge hiding O
The exact finite row ball. We insert zero because the OpenAI disk omits
it; its summand vanishes under a cutoff supported in [1/2,1].
noncomputable def exactRowBall (H : β) : Finset πͺ :=
insert 0 (rowNormDisk H)theorem mem_exactRowBall {H : β} {h : πͺ} :
h β exactRowBall H β π© h β€ H := H:βh:πͺβ’ h β exactRowBall H β π© h β€ H
classical
H:βh:πͺβ’ h = 0 β¨ h β rowNormDisk H β π© h β€ H
constructor mp H:βh:πͺβ’ h = 0 β¨ h β rowNormDisk H β π© h β€ Hmpr H:βh:πͺβ’ π© h β€ H β h = 0 β¨ h β rowNormDisk H
Β· mp H:βh:πͺβ’ h = 0 β¨ h β rowNormDisk H β π© h β€ H rintro (rfl | hu) mp.inl H:ββ’ π© 0 β€ Hmp.inr H:βh:πͺhu:h β rowNormDisk Hβ’ π© h β€ H
Β· mp.inl H:ββ’ π© 0 β€ H simp [π©] All goals completed! π
Β· mp.inr H:βh:πͺhu:h β rowNormDisk Hβ’ π© h β€ H simpa only [π©] using (mem_rowNormDisk.mp hu).2 All goals completed! π
Β· mpr H:βh:πͺβ’ π© h β€ H β h = 0 β¨ h β rowNormDisk H intro hu mpr H:βh:πͺhu:π© h β€ Hβ’ h = 0 β¨ h β rowNormDisk H
by_cases hzero : h = 0 pos H:βh:πͺhu:π© h β€ Hhzero:h = 0β’ h = 0 β¨ h β rowNormDisk Hneg H:βh:πͺhu:π© h β€ Hhzero:Β¬h = 0β’ h = 0 β¨ h β rowNormDisk H
Β· pos H:βh:πͺhu:π© h β€ Hhzero:h = 0β’ h = 0 β¨ h β rowNormDisk H exact Or.inl hzero All goals completed! π
Β· neg H:βh:πͺhu:π© h β€ Hhzero:Β¬h = 0β’ h = 0 β¨ h β rowNormDisk H apply Or.inr neg H:βh:πͺhu:π© h β€ Hhzero:Β¬h = 0β’ h β rowNormDisk H
apply mem_rowNormDisk.mpr neg H:βh:πͺhu:π© h β€ Hhzero:Β¬h = 0β’ 0 < Ideal.absNorm (Ideal.span {h}) β§ Ideal.absNorm (Ideal.span {h}) β€ H
simpa only [π©] using
β¨Nat.pos_of_ne_zero (π©_ne_zero hzero), huβ© All goals completed! π
Admissible columns of norm at most X, represented by their canonical
primary Eisenstein generators.
noncomputable def outsidePrimaryBall
(S : Finset (Ideal πͺ)) (X : β) : Finset πͺ :=
(outsideIdealsUpTo S X).image primaryGeneratorprivate theorem outside_primaryGenerator_ne_zero
(S : Finset (Ideal πͺ))
(hbad : OAI.CanonicalQuadraticSieve.fixedBadPrimes β S) (X : β)
{I : Ideal πͺ} (hI : I β outsideIdealsUpTo S X) :
primaryGenerator I β 0 :=
primaryGenerator_ne_zero_of_good_factors I
(outsideIdealsUpTo_ne_bot S X I hI)
(outside_good S X hbad I hI)theorem outsidePrimaryBall_primary
(S : Finset (Ideal πͺ))
(hbad : OAI.CanonicalQuadraticSieve.fixedBadPrimes β S) (X : β)
{n : πͺ} (hn : n β outsidePrimaryBall S X) : primary n := by S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SX:βn:πͺhn:n β outsidePrimaryBall S Xβ’ primary n
classical
obtain β¨I, hI, rflβ© := Finset.mem_image.mp hn S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SX:βI:Ideal CompletedGauss.OhI:I β outsideIdealsUpTo S Xhn:primaryGenerator I β outsidePrimaryBall S Xβ’ primary (primaryGenerator I)
have hgen := outside_primaryGenerator_ne_zero S hbad X hI S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SX:βI:Ideal CompletedGauss.OhI:I β outsideIdealsUpTo S Xhn:primaryGenerator I β outsidePrimaryBall S Xhgen:primaryGenerator I β 0β’ primary (primaryGenerator I)
apply (primary_iff_ramified _).mpr S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SX:βI:Ideal CompletedGauss.OhI:I β outsideIdealsUpTo S Xhn:primaryGenerator I β outsidePrimaryBall S Xhgen:primaryGenerator I β 0β’ π ^ 2 β£ primaryGenerator I - 1
simpa [π, Ο, ActualEisensteinCubic.lambda,
ActualEisensteinCubic.omega] using (primaryGenerator_spec I hgen).2 All goals completed! π
The actual product of local sextic characters attached to the column
generated by n.
noncomputable def outsideSexticTwist
(S : Finset (Ideal πͺ))
(hbad : OAI.CanonicalQuadraticSieve.fixedBadPrimes β S) (X : β)
(h n : πͺ) : β :=
idealSexticRow (outsideIdealsUpTo S X)
(outsideIdealsUpTo_ne_bot S X) (outside_good S X hbad)
(Ideal.span {n}) h
The concrete public M_h(X). Its summand visibly contains primaryness,
ideal MΓΆbius, the sextic twist, and the [1/2,1] smooth cutoff.
noncomputable def outsideM
(S : Finset (Ideal πͺ))
(hbad : OAI.CanonicalQuadraticSieve.fixedBadPrimes β S)
(W : SmoothDyadicWeight β) (h : πͺ) (X : β) : β :=
β n β outsidePrimaryBall S X,
if primary n then
(ΞΌ_K n : β) * outsideSexticTwist S hbad X h n *
W ((π© n : β) / (X : β))
else 0theorem outsideM_eq_eisensteinM
(S : Finset (Ideal πͺ))
(hbad : OAI.CanonicalQuadraticSieve.fixedBadPrimes β S)
(W : SmoothDyadicWeight β) (h : πͺ) (X : β) :
outsideM S hbad W h X =
eisensteinM (outsidePrimaryBall S) (outsideSexticTwist S hbad X) W h X :=
rflThe readable primary-element sum is exactly the ideal row consumed by Poisson summation and the mean-square theorem.
theorem outsideM_eq_idealRowSum
(S : Finset (Ideal πͺ))
(hbad : OAI.CanonicalQuadraticSieve.fixedBadPrimes β S)
(W : SmoothDyadicWeight β) (h : πͺ) (X : β) :
outsideM S hbad W h X =
idealRowSum (outsideIdealsUpTo S X)
(outsideIdealsUpTo_ne_bot S X) (outside_good S X hbad)
(1 : DirichletCharacter β 1)
(fun n β¦ W ((n : β) / (X : β))) h := by S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:ββ’ outsideM S hbad W h X = idealRowSum (outsideIdealsUpTo S X) β― β― 1 (fun n => W.toFun (βn / βX)) h
classical
unfold outsideM outsidePrimaryBall idealRowSum S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:ββ’ (β n β Finset.image primaryGenerator (outsideIdealsUpTo S X),
if primary n then β(ΞΌ_K n) * outsideSexticTwist S hbad X h n * W.toFun (β(π© n) / βX) else 0) =
β I β outsideIdealsUpTo S X,
baseChangeWeight 1 I * (fun n => W.toFun (βn / βX)) (Ideal.absNorm I) *
idealSexticRow (outsideIdealsUpTo S X) β― β― I h
rw [Finset.sum_image S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:ββ’ (β x β outsideIdealsUpTo S X,
if primary (primaryGenerator x) then
β(ΞΌ_K (primaryGenerator x)) * outsideSexticTwist S hbad X h (primaryGenerator x) *
W.toFun (β(π© (primaryGenerator x)) / βX)
else 0) =
β I β outsideIdealsUpTo S X,
baseChangeWeight 1 I * (fun n => W.toFun (βn / βX)) (Ideal.absNorm I) *
idealSexticRow (outsideIdealsUpTo S X) β― β― I hS:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:ββ’ Set.InjOn primaryGenerator β(outsideIdealsUpTo S X)] S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:ββ’ (β x β outsideIdealsUpTo S X,
if primary (primaryGenerator x) then
β(ΞΌ_K (primaryGenerator x)) * outsideSexticTwist S hbad X h (primaryGenerator x) *
W.toFun (β(π© (primaryGenerator x)) / βX)
else 0) =
β I β outsideIdealsUpTo S X,
baseChangeWeight 1 I * (fun n => W.toFun (βn / βX)) (Ideal.absNorm I) *
idealSexticRow (outsideIdealsUpTo S X) β― β― I hS:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:ββ’ Set.InjOn primaryGenerator β(outsideIdealsUpTo S X)
Β· S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:ββ’ (β x β outsideIdealsUpTo S X,
if primary (primaryGenerator x) then
β(ΞΌ_K (primaryGenerator x)) * outsideSexticTwist S hbad X h (primaryGenerator x) *
W.toFun (β(π© (primaryGenerator x)) / βX)
else 0) =
β I β outsideIdealsUpTo S X,
baseChangeWeight 1 I * (fun n => W.toFun (βn / βX)) (Ideal.absNorm I) *
idealSexticRow (outsideIdealsUpTo S X) β― β― I h apply Finset.sum_congr rfl S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:ββ’ β x β outsideIdealsUpTo S X,
(if primary (primaryGenerator x) then
β(ΞΌ_K (primaryGenerator x)) * outsideSexticTwist S hbad X h (primaryGenerator x) *
W.toFun (β(π© (primaryGenerator x)) / βX)
else 0) =
baseChangeWeight 1 x * (fun n => W.toFun (βn / βX)) (Ideal.absNorm x) *
idealSexticRow (outsideIdealsUpTo S X) β― β― x h
intro I hI S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β outsideIdealsUpTo S Xβ’ (if primary (primaryGenerator I) then
β(ΞΌ_K (primaryGenerator I)) * outsideSexticTwist S hbad X h (primaryGenerator I) *
W.toFun (β(π© (primaryGenerator I)) / βX)
else 0) =
baseChangeWeight 1 I * (fun n => W.toFun (βn / βX)) (Ideal.absNorm I) * idealSexticRow (outsideIdealsUpTo S X) β― β― I h
have hgen := outside_primaryGenerator_ne_zero S hbad X hI S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β outsideIdealsUpTo S Xhgen:primaryGenerator I β 0β’ (if primary (primaryGenerator I) then
β(ΞΌ_K (primaryGenerator I)) * outsideSexticTwist S hbad X h (primaryGenerator I) *
W.toFun (β(π© (primaryGenerator I)) / βX)
else 0) =
baseChangeWeight 1 I * (fun n => W.toFun (βn / βX)) (Ideal.absNorm I) * idealSexticRow (outsideIdealsUpTo S X) β― β― I h
have hspan := (primaryGenerator_spec I hgen).1 S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β outsideIdealsUpTo S Xhgen:primaryGenerator I β 0hspan:Ideal.span {primaryGenerator I} = Iβ’ (if primary (primaryGenerator I) then
β(ΞΌ_K (primaryGenerator I)) * outsideSexticTwist S hbad X h (primaryGenerator I) *
W.toFun (β(π© (primaryGenerator I)) / βX)
else 0) =
baseChangeWeight 1 I * (fun n => W.toFun (βn / βX)) (Ideal.absNorm I) * idealSexticRow (outsideIdealsUpTo S X) β― β― I h
have hprimary : primary (primaryGenerator I) := by S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:ββ’ outsideM S hbad W h X = idealRowSum (outsideIdealsUpTo S X) β― β― 1 (fun n => W.toFun (βn / βX)) h
apply (primary_iff_ramified _).mpr S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β outsideIdealsUpTo S Xhgen:primaryGenerator I β 0hspan:Ideal.span {primaryGenerator I} = Iβ’ π ^ 2 β£ primaryGenerator I - 1
simpa [π, Ο, ActualEisensteinCubic.lambda,
ActualEisensteinCubic.omega] using (primaryGenerator_spec I hgen).2 S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β outsideIdealsUpTo S Xhgen:primaryGenerator I β 0hspan:Ideal.span {primaryGenerator I} = Ihprimary:primary (primaryGenerator I)β’ (if primary (primaryGenerator I) then
β(ΞΌ_K (primaryGenerator I)) * outsideSexticTwist S hbad X h (primaryGenerator I) *
W.toFun (β(π© (primaryGenerator I)) / βX)
else 0) =
baseChangeWeight 1 I * (fun n => W.toFun (βn / βX)) (Ideal.absNorm I) * idealSexticRow (outsideIdealsUpTo S X) β― β― I h
rw [ite_eq_left hprimary S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β outsideIdealsUpTo S Xhgen:primaryGenerator I β 0hspan:Ideal.span {primaryGenerator I} = Ihprimary:primary (primaryGenerator I)β’ β(ΞΌ_K (primaryGenerator I)) * outsideSexticTwist S hbad X h (primaryGenerator I) *
W.toFun (β(π© (primaryGenerator I)) / βX) =
baseChangeWeight 1 I * (fun n => W.toFun (βn / βX)) (Ideal.absNorm I) * idealSexticRow (outsideIdealsUpTo S X) β― β― I h] S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β outsideIdealsUpTo S Xhgen:primaryGenerator I β 0hspan:Ideal.span {primaryGenerator I} = Ihprimary:primary (primaryGenerator I)β’ β(ΞΌ_K (primaryGenerator I)) * outsideSexticTwist S hbad X h (primaryGenerator I) *
W.toFun (β(π© (primaryGenerator I)) / βX) =
baseChangeWeight 1 I * (fun n => W.toFun (βn / βX)) (Ideal.absNorm I) * idealSexticRow (outsideIdealsUpTo S X) β― β― I h
simp only [ΞΌ_K, π©, outsideSexticTwist, hspan] S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β outsideIdealsUpTo S Xhgen:primaryGenerator I β 0hspan:Ideal.span {primaryGenerator I} = Ihprimary:primary (primaryGenerator I)β’ β(UniqueFactorizationMonoid.moebius I) * idealSexticRow (outsideIdealsUpTo S X) β― β― I h *
W.toFun (β(Ideal.absNorm I) / βX) =
baseChangeWeight 1 I * W.toFun (β(Ideal.absNorm I) / βX) * idealSexticRow (outsideIdealsUpTo S X) β― β― I h
have hchar :
(1 : DirichletCharacter β 1) (Ideal.absNorm I) = 1 :=
MulChar.one_apply (isUnit_of_subsingleton _) S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β outsideIdealsUpTo S Xhgen:primaryGenerator I β 0hspan:Ideal.span {primaryGenerator I} = Ihprimary:primary (primaryGenerator I)hchar:1 β(Ideal.absNorm I) = 1β’ β(UniqueFactorizationMonoid.moebius I) * idealSexticRow (outsideIdealsUpTo S X) β― β― I h *
W.toFun (β(Ideal.absNorm I) / βX) =
baseChangeWeight 1 I * W.toFun (β(Ideal.absNorm I) / βX) * idealSexticRow (outsideIdealsUpTo S X) β― β― I h
simp only [baseChangeWeight, hchar, mul_one] S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β outsideIdealsUpTo S Xhgen:primaryGenerator I β 0hspan:Ideal.span {primaryGenerator I} = Ihprimary:primary (primaryGenerator I)hchar:1 β(Ideal.absNorm I) = 1β’ β(UniqueFactorizationMonoid.moebius I) * idealSexticRow (outsideIdealsUpTo S X) β― β― I h *
W.toFun (β(Ideal.absNorm I) / βX) =
β(UniqueFactorizationMonoid.moebius I) * W.toFun (β(Ideal.absNorm I) / βX) *
idealSexticRow (outsideIdealsUpTo S X) β― β― I h
ring All goals completed! π
Β· S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:ββ’ Set.InjOn primaryGenerator β(outsideIdealsUpTo S X) intro I hI J hJ hIJ S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β β(outsideIdealsUpTo S X)J:Ideal CompletedGauss.OhJ:J β β(outsideIdealsUpTo S X)hIJ:primaryGenerator I = primaryGenerator Jβ’ I = J
have hIgen := outside_primaryGenerator_ne_zero S hbad X hI S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β β(outsideIdealsUpTo S X)J:Ideal CompletedGauss.OhJ:J β β(outsideIdealsUpTo S X)hIJ:primaryGenerator I = primaryGenerator JhIgen:primaryGenerator I β 0β’ I = J
have hJgen := outside_primaryGenerator_ne_zero S hbad X hJ S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β β(outsideIdealsUpTo S X)J:Ideal CompletedGauss.OhJ:J β β(outsideIdealsUpTo S X)hIJ:primaryGenerator I = primaryGenerator JhIgen:primaryGenerator I β 0hJgen:primaryGenerator J β 0β’ I = J
rw [β (primaryGenerator_spec I hIgen).1, S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β β(outsideIdealsUpTo S X)J:Ideal CompletedGauss.OhJ:J β β(outsideIdealsUpTo S X)hIJ:primaryGenerator I = primaryGenerator JhIgen:primaryGenerator I β 0hJgen:primaryGenerator J β 0β’ Ideal.span {primaryGenerator I} = J
β (primaryGenerator_spec J hJgen).1, S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β β(outsideIdealsUpTo S X)J:Ideal CompletedGauss.OhJ:J β β(outsideIdealsUpTo S X)hIJ:primaryGenerator I = primaryGenerator JhIgen:primaryGenerator I β 0hJgen:primaryGenerator J β 0β’ Ideal.span {primaryGenerator I} = Ideal.span {primaryGenerator J} hIJ S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βh:πͺX:βI:Ideal CompletedGauss.OhI:I β β(outsideIdealsUpTo S X)J:Ideal CompletedGauss.OhJ:J β β(outsideIdealsUpTo S X)hIJ:primaryGenerator I = primaryGenerator JhIgen:primaryGenerator I β 0hJgen:primaryGenerator J β 0β’ Ideal.span {primaryGenerator J} = Ideal.span {primaryGenerator J}] All goals completed! π
The finite, smoothly weighted mean square attached to outsideM.
noncomputable def outsideS
(S : Finset (Ideal πͺ))
(hbad : OAI.CanonicalQuadraticSieve.fixedBadPrimes β S)
(W : SmoothDyadicWeight β) (V : SmoothDyadicCutoff) (X H : β) : β :=
β h β exactRowBall H,
V ((π© h : β) / (H : β)) *
βoutsideM S hbad W h Xβ ^ 2
Immediately before Poisson summation, the finite row sum becomes a
whole-lattice tsum.
theorem outsideS_eq_tsum
(S : Finset (Ideal πͺ))
(hbad : OAI.CanonicalQuadraticSieve.fixedBadPrimes β S)
(W : SmoothDyadicWeight β) (V : SmoothDyadicCutoff) (X H : β) :
outsideS S hbad W V X H = β' h : πͺ,
V ((π© h : β) / (H : β)) *
βoutsideM S hbad W h Xβ ^ 2 := by S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:ββ’ outsideS S hbad W V X H = β' (h : πͺ), V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2
classical
unfold outsideS S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:ββ’ β h β exactRowBall H, V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 =
β' (h : πͺ), V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2
rw [tsum_eq_sum (s := exactRowBall H) S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:ββ’ β h β exactRowBall H, V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 =
β b β exactRowBall H, V.toFun (β(π© b) / βH) * βoutsideM S hbad W b Xβ ^ 2S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:ββ’ β b β exactRowBall H, V.toFun (β(π© b) / βH) * βoutsideM S hbad W b Xβ ^ 2 = 0] S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:ββ’ β b β exactRowBall H, V.toFun (β(π© b) / βH) * βoutsideM S hbad W b Xβ ^ 2 = 0
intro h hu S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺhu:h β exactRowBall Hβ’ V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 = 0
have hnorm : H < π© h :=
Nat.lt_of_not_ge (fun hle β¦ hu (mem_exactRowBall.mpr hle)) S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺhu:h β exactRowBall Hhnorm:H < π© hβ’ V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 = 0
by_cases hH : H = 0 pos S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺhu:h β exactRowBall Hhnorm:H < π© hhH:H = 0β’ V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 = 0neg S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺhu:h β exactRowBall Hhnorm:H < π© hhH:Β¬H = 0β’ V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 = 0
Β· pos S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺhu:h β exactRowBall Hhnorm:H < π© hhH:H = 0β’ V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 = 0 have hV : V 0 = 0 :=
V.toSmoothDyadicWeight.eq_zero_of_lt_half (by S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺhu:h β exactRowBall Hhnorm:H < π© hhH:H = 0β’ 0 < 1 / 2 norm_num All goals completed! π) pos S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺhu:h β exactRowBall Hhnorm:H < π© hhH:H = 0hV:V.toFun 0 = 0β’ V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 = 0
simp [hH, hV] All goals completed! π
Β· neg S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺhu:h β exactRowBall Hhnorm:H < π© hhH:Β¬H = 0β’ V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 = 0 have hHpos : (0 : β) < H := by S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:ββ’ outsideS S hbad W V X H = β' (h : πͺ), V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 exact_mod_cast Nat.pos_of_ne_zero hH neg S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺhu:h β exactRowBall Hhnorm:H < π© hhH:Β¬H = 0hHpos:0 < βHβ’ V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 = 0
have hratio : (1 : β) < (π© h : β) / (H : β) := by S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:ββ’ outsideS S hbad W V X H = β' (h : πͺ), V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2
rw [lt_div_iffβ hHpos S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺhu:h β exactRowBall Hhnorm:H < π© hhH:Β¬H = 0hHpos:0 < βHβ’ 1 * βH < β(π© h)] S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺhu:h β exactRowBall Hhnorm:H < π© hhH:Β¬H = 0hHpos:0 < βHβ’ 1 * βH < β(π© h)
simpa only [one_mul] using (show (H : β) < π© h by S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:ββ’ outsideS S hbad W V X H = β' (h : πͺ), V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 exact_mod_cast hnorm All goals completed! π) neg S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺhu:h β exactRowBall Hhnorm:H < π© hhH:Β¬H = 0hHpos:0 < βHhratio:1 < β(π© h) / βHβ’ V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 = 0
rw [V.toSmoothDyadicWeight.eq_zero_of_one_lt hratio, neg S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺhu:h β exactRowBall Hhnorm:H < π© hhH:Β¬H = 0hHpos:0 < βHhratio:1 < β(π© h) / βHβ’ 0 * βoutsideM S hbad W h Xβ ^ 2 = 0 zero_mul neg S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺhu:h β exactRowBall Hhnorm:H < π© hhH:Β¬H = 0hHpos:0 < βHhratio:1 < β(π© h) / βHβ’ 0 = 0] All goals completed! πThe same conversion, now with the ideal row exposed in exactly the form used by the OpenAI Poisson and mean-square modules.
theorem outsideS_eq_idealRowSum_tsum
(S : Finset (Ideal πͺ))
(hbad : OAI.CanonicalQuadraticSieve.fixedBadPrimes β S)
(W : SmoothDyadicWeight β) (V : SmoothDyadicCutoff) (X H : β) :
outsideS S hbad W V X H = β' h : πͺ,
V ((π© h : β) / (H : β)) *
βidealRowSum (outsideIdealsUpTo S X)
(outsideIdealsUpTo_ne_bot S X) (outside_good S X hbad)
(1 : DirichletCharacter β 1)
(fun n β¦ W ((n : β) / (X : β))) hβ ^ 2 := by S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:ββ’ outsideS S hbad W V X H =
β' (h : πͺ), V.toFun (β(π© h) / βH) * βidealRowSum (outsideIdealsUpTo S X) β― β― 1 (fun n => W.toFun (βn / βX)) hβ ^ 2
rw [outsideS_eq_tsum S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:ββ’ β' (h : πͺ), V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 =
β' (h : πͺ), V.toFun (β(π© h) / βH) * βidealRowSum (outsideIdealsUpTo S X) β― β― 1 (fun n => W.toFun (βn / βX)) hβ ^ 2] S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:ββ’ β' (h : πͺ), V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 =
β' (h : πͺ), V.toFun (β(π© h) / βH) * βidealRowSum (outsideIdealsUpTo S X) β― β― 1 (fun n => W.toFun (βn / βX)) hβ ^ 2
apply tsum_congr S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:ββ’ β (b : πͺ),
V.toFun (β(π© b) / βH) * βoutsideM S hbad W b Xβ ^ 2 =
V.toFun (β(π© b) / βH) * βidealRowSum (outsideIdealsUpTo S X) β― β― 1 (fun n => W.toFun (βn / βX)) bβ ^ 2
intro h S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺβ’ V.toFun (β(π© h) / βH) * βoutsideM S hbad W h Xβ ^ 2 =
V.toFun (β(π© h) / βH) * βidealRowSum (outsideIdealsUpTo S X) β― β― 1 (fun n => W.toFun (βn / βX)) hβ ^ 2
rw [outsideM_eq_idealRowSum S:Finset (Ideal πͺ)hbad:CanonicalQuadraticSieve.fixedBadPrimes β SW:SmoothDyadicWeight βV:SmoothDyadicCutoffX:βH:βh:πͺβ’ V.toFun (β(π© h) / βH) * βidealRowSum (outsideIdealsUpTo S X) β― β― 1 (fun n => W.toFun (βn / βX)) hβ ^ 2 =
V.toFun (β(π© h) / βH) * βidealRowSum (outsideIdealsUpTo S X) β― β― 1 (fun n => W.toFun (βn / βX)) hβ ^ 2] All goals completed! πendend ElevenTwelfths