Paper IV · Lean source
ExactZetaModels.lean
Selected results recorded Coverage and evidence
Compiler/replay evidence is reported for a subset or bounded block. No whole-work coverage is implied.
This viewer reads the retained source; it does not run Lean or assign new claim mappings.
Local imports (1)
KomorebiPaperIV/ExactZetaModels.lean220 lines
Original source path
Paper_IV_Verification_Closeout_v1.1.0/formalization/lean/KomorebiPaperIV/ExactZetaModels.leanSkip declarations and read code
1 /-
2 Copyright (c) 2026 Komorebi P. All rights reserved.
3 Authors: Komorebi P.
4 -/
5 import KomorebiPaperIV.QuarticExactZeros
6
7 namespace Komorebi.PaperIV
8 noncomputable section
9 open Set Filter
10 open scoped Topology
11
12 /-- Construction used only after all zeros and their simplicity have been proved. -/
13 def exactLatticeEnumeration {N : ℕ} (hN : 2 ≤ N)
14 (hz : ∀ m, canonicalSignedDenominator N (signedZeroCenter N m : ℂ) = 0)
15 (hs : ∀ m, analyticOrderAt (canonicalSignedDenominator N) (signedZeroCenter N m : ℂ) = 1)
16 (he : ∀ z, canonicalSignedDenominator N z = 0 → ∃ k : Fin N, ∃ m,
17 z = canonicalPrimitiveRoot N ^ k.val * (signedZeroCenter N m : ℂ)) : SignedZeroEnumeration N where
18 root := signedZeroCenter N
19 positive := signedZeroCenter_positive hN
20 zero := hz
21 simple := hs
22 injective := by
23 intro m n h
24 have hA := ne_of_gt (div_pos Real.pi_pos (signed_sine_pos hN))
25 exact_mod_cast add_right_cancel (mul_left_cancel₀ hA h)
26 shift := 1
27 windows := by
28 intro m
29 have hA := div_pos Real.pi_pos (signed_sine_pos hN)
30 unfold signedZeroCenter
31 norm_num only [Nat.cast_one]
32 constructor <;> nlinarith
33 offset := 0
34 displacement := ⟨1, by norm_num, 1, by norm_num, fun m => by
35 simp only [Nat.add_zero, sub_self, abs_zero, one_mul]
36 exact (Real.exp_pos _).le⟩
37 radius := 1
38 radius_pos := by norm_num
39 exhaustive := fun z _ hz0 => he z hz0
40
41 theorem SignedZeroEnumeration.reducedZero_surjective_of_orbitZero {N : ℕ} (hn : 0 < N)
42 (e : SignedZeroEnumeration N) (he : Function.Surjective (e.orbitZero hn)) :
43 Function.Surjective (e.reducedZero hn) := by
44 intro w
45 obtain ⟨z, hz⟩ := exists_complex_nth_root hn (w : ℂ)
46 have hd : canonicalSignedDenominator N z = 0 := by
47 rw [canonicalSignedDenominator_eq_reduced_power hn, hz]
48 exact w.property
49 obtain ⟨p, hp⟩ := he ⟨z, hd⟩
50 refine ⟨p.2, Subtype.ext ?_⟩
51 have heq : e.orbit p = z := congrArg Subtype.val hp
52 have hu : (canonicalPrimitiveRoot N ^ p.1.val) ^ N = 1 := by
53 rw [← pow_mul, Nat.mul_comm, pow_mul, (canonicalPrimitiveRoot_isPrimitive hn).pow_eq_one, one_pow]
54 rw [← hz, ← heq, SignedZeroEnumeration.orbit, mul_pow, hu, one_mul]
55 rfl
56
57 theorem SignedZeroEnumeration.exceptions_zero_of_surjective {N : ℕ} (hn : 0 < N)
58 (e : SignedZeroEnumeration N) (he : Function.Surjective (e.orbitZero hn)) (s : ℂ) :
59 e.absoluteExceptionZeta hn s = 0 ∧ e.reducedExceptionZeta hn s = 0 := by
60 have hr := e.reducedZero_surjective_of_orbitZero hn he
61 have : IsEmpty ↥((range (e.orbitZero hn))ᶜ) := ⟨fun z => z.property (he z.val)⟩
62 have : IsEmpty ↥((range (e.reducedZero hn))ᶜ) := ⟨fun z => z.property (hr z.val)⟩
63 simp [SignedZeroEnumeration.absoluteExceptionZeta, SignedZeroEnumeration.reducedExceptionZeta]
64
65 /-- Both exact models follow from a fully proved, simple, exhaustive lattice. -/
66 theorem zero_zeta_exact_of_lattice {N : ℕ} (hN : 2 ≤ N)
67 (hz : ∀ m, canonicalSignedDenominator N (signedZeroCenter N m : ℂ) = 0)
68 (hsimple : ∀ m, analyticOrderAt (canonicalSignedDenominator N) (signedZeroCenter N m : ℂ) = 1)
69 (hex : ∀ z, canonicalSignedDenominator N z = 0 → ∃ k : Fin N, ∃ m,
70 z = canonicalPrimitiveRoot N ^ k.val * (signedZeroCenter N m : ℂ)) :
71 (∀ s : ℂ, 1 < s.re → absoluteZeroZeta (canonicalSignedDenominator N) s =
72 (N : ℂ) * hurwitzLatticeModel (Real.pi / Real.sin (Real.pi / N)) 1 s) ∧
73 (∀ s : ℂ, 1 / (N : ℝ) < s.re → absoluteZeroZeta (entireReducedDenominator N) s =
74 hurwitzLatticeModel (Real.pi / Real.sin (Real.pi / N)) N s) := by
75 let e := exactLatticeEnumeration hN hz hsimple hex
76 have he : Function.Surjective (e.orbitZero (by omega)) := by
77 intro z
78 obtain ⟨k, m, hm⟩ := hex z z.property
79 exact ⟨(k, m), Subtype.ext hm.symm⟩
80 have hc : ∀ s, e.latticeCorrection s = 0 := by
81 intro s
82 simp only [SignedZeroEnumeration.latticeCorrection, exponentialZetaDifference, e,
83 exactLatticeEnumeration, Nat.add_zero, sub_self, tsum_zero]
84 have hp : ∀ s, e.latticePrefix s = 0 := by
85 intro s
86 simp only [SignedZeroEnumeration.latticePrefix, e, exactLatticeEnumeration, Finset.range_zero, Finset.sum_empty]
87 constructor
88 · intro s hs
89 rw [e.absoluteZeta_decomposition hN hs, e.root_zeta_eq_model hN hs, hc, hp,
90 (e.exceptions_zero_of_surjective (by omega) he s).1, add_zero, sub_zero, add_zero]
91 · intro s hs
92 have hsN : 1 < ((N : ℂ) * s).re := by
93 simp only [Complex.mul_re, Complex.natCast_re, Complex.natCast_im, zero_mul, sub_zero]
94 have hn : (0 : ℝ) < N := by exact_mod_cast (show 0 < N by omega)
95 exact (div_lt_iff₀ hn).mp hs |>.trans_eq (mul_comm _ _)
96 rw [e.reducedZeta_decomposition hN hs, e.root_zeta_eq_model hN hsN, hc, hp,
97 (e.exceptions_zero_of_surjective (by omega) he s).2, add_zero, sub_zero, add_zero]
98 simp only [hurwitzLatticeModel, Nat.cast_one, one_mul]
99
100 theorem signedZeroCenter_four (m : ℕ) : signedZeroCenter 4 m = quarticPositiveZero m := by
101 have hq : (Real.sqrt 2) ^ 2 = 2 := Real.sq_sqrt (by norm_num)
102 have hq0 : Real.sqrt 2 ≠ 0 := by positivity
103 unfold signedZeroCenter quarticPositiveZero
104 simp only [Nat.cast_ofNat, Real.sin_pi_div_four]
105 field_simp
106 nlinarith
107
108 theorem orderTwo_full_lattice :
109 (∀ m, canonicalSignedDenominator 2 (signedZeroCenter 2 m : ℂ) = 0) ∧
110 (∀ m, analyticOrderAt (canonicalSignedDenominator 2) (signedZeroCenter 2 m : ℂ) = 1) ∧
111 (∀ z, canonicalSignedDenominator 2 z = 0 → ∃ k : Fin 2, ∃ m,
112 z = canonicalPrimitiveRoot 2 ^ k.val * (signedZeroCenter 2 m : ℂ)) := by
113 have homega := canonicalPrimitiveRoot_isPrimitive (by norm_num : 0 < 2)
114 have hrho := canonicalSignedRoot_pow (by norm_num : 0 < 2)
115 have hc : ∀ m, (signedZeroCenter 2 m : ℂ) = ((m : ℂ) + 1 / 2) * (Real.pi : ℂ) := by
116 intro m
117 simp only [signedZeroCenter, Nat.cast_ofNat, Real.sin_pi_div_two, div_one]
118 push_cast
119 ring
120 have hz : ∀ m, canonicalSignedDenominator 2 (signedZeroCenter 2 m : ℂ) = 0 := by
121 intro m
122 exact (entireSigned_two_zero_iff_nat homega hrho).mpr ⟨m, Or.inl (hc m)⟩
123 refine ⟨hz, fun m => entireSigned_two_zero_order_one homega hrho (hz m), ?_⟩
124 intro z hz0
125 obtain ⟨m, hm | hm⟩ := (entireSigned_two_zero_iff_nat homega hrho).mp hz0
126 · exact ⟨⟨0, by norm_num⟩, m, by simpa only [pow_zero, one_mul, hc m] using hm⟩
127 · exact ⟨⟨1, by norm_num⟩, m, by simpa only [pow_one, homega.eq_neg_one_of_two_right, neg_one_mul, hc m] using hm⟩
128
129 theorem orderFour_full_lattice :
130 (∀ m, canonicalSignedDenominator 4 (signedZeroCenter 4 m : ℂ) = 0) ∧
131 (∀ m, analyticOrderAt (canonicalSignedDenominator 4) (signedZeroCenter 4 m : ℂ) = 1) ∧
132 (∀ z, canonicalSignedDenominator 4 z = 0 → ∃ k : Fin 4, ∃ m,
133 z = canonicalPrimitiveRoot 4 ^ k.val * (signedZeroCenter 4 m : ℂ)) := by
134 refine ⟨fun m => ?_, fun m => ?_, ?_⟩
135 · rw [signedZeroCenter_four]
136 exact canonicalSignedDenominator_four_zero_iff.mpr ⟨m, Or.inl rfl⟩
137 · rw [signedZeroCenter_four]
138 exact quarticPositiveZero_simple m
139 · intro z hz
140 have homega := canonicalPrimitiveRoot_isPrimitive (by norm_num : 0 < 4)
141 have hu : ∀ u : ℂ, u ^ 4 = 1 → ∀ m, ∃ k : Fin 4, ∃ j,
142 u * (quarticPositiveZero m : ℂ) = canonicalPrimitiveRoot 4 ^ k.val * (signedZeroCenter 4 j : ℂ) := by
143 intro u hu m
144 obtain ⟨k, hk, he⟩ := homega.eq_pow_of_pow_eq_one hu
145 exact ⟨⟨k, hk⟩, m, by rw [signedZeroCenter_four, he]⟩
146 obtain ⟨m, hm | hm | hm | hm⟩ := canonicalSignedDenominator_four_zero_iff.mp hz
147 · rw [hm]
148 simpa only [one_mul] using hu 1 (by norm_num) m
149 · rw [hm]
150 simpa only [neg_one_mul] using hu (-1) (by norm_num) m
151 · rw [hm]
152 exact hu Complex.I Complex.isPrimitiveRoot_I.pow_eq_one m
153 · rw [hm]
154 simpa only [neg_mul] using hu (-Complex.I) Complex.isPrimitiveRoot_neg_I.pow_eq_one m
155
156 /-- Corollary 14.4, with no omitted zeros in either order. -/
157 theorem orderTwo_exact_zero_zeta_models :
158 (∀ s : ℂ, 1 < s.re → absoluteZeroZeta (canonicalSignedDenominator 2) s =
159 2 * hurwitzLatticeModel Real.pi 1 s) ∧
160 (∀ s : ℂ, 1 / 2 < s.re → absoluteZeroZeta (entireReducedDenominator 2) s =
161 hurwitzLatticeModel Real.pi 2 s) := by
162 simpa only [Nat.cast_ofNat, Real.sin_pi_div_two, div_one] using
163 zero_zeta_exact_of_lattice (by norm_num) orderTwo_full_lattice.1 orderTwo_full_lattice.2.1 orderTwo_full_lattice.2.2
164
165 theorem orderFour_exact_zero_zeta_models :
166 (∀ s : ℂ, 1 < s.re → absoluteZeroZeta (canonicalSignedDenominator 4) s =
167 4 * hurwitzLatticeModel (Real.sqrt 2 * Real.pi) 1 s) ∧
168 (∀ s : ℂ, 1 / 4 < s.re → absoluteZeroZeta (entireReducedDenominator 4) s =
169 hurwitzLatticeModel (Real.sqrt 2 * Real.pi) 4 s) := by
170 have hA : Real.pi / Real.sin (Real.pi / 4) = Real.sqrt 2 * Real.pi := by
171 have h := signedZeroCenter_four 0
172 simp only [signedZeroCenter, quarticPositiveZero, Nat.cast_zero, zero_add, Nat.cast_ofNat] at h
173 linarith
174 simpa only [Nat.cast_ofNat, hA] using
175 zero_zeta_exact_of_lattice (by norm_num) orderFour_full_lattice.1 orderFour_full_lattice.2.1 orderFour_full_lattice.2.2
176
177 theorem entire_zero_of_halfplane {f : ℂ → ℂ} (hf : Differentiable ℂ f) (c : ℝ)
178 (hz : ∀ s : ℂ, c < s.re → f s = 0) : f = 0 := by
179 have he : f =ᶠ[𝓝 ((c + 1 : ℝ) : ℂ)] 0 := by
180 have ho : IsOpen {s : ℂ | c < s.re} := isOpen_lt continuous_const Complex.continuous_re
181 filter_upwards [ho.mem_nhds (show ((c + 1 : ℝ) : ℂ) ∈ {s : ℂ | c < s.re} by
182 simp only [mem_ofPred_eq, Complex.ofReal_re]; linarith)] with s hs
183 exact hz s hs
184 exact (show AnalyticOnNhd ℂ f univ from fun s _ => hf.analyticAt s).eq_of_eventuallyEq
185 (show AnalyticOnNhd ℂ (0 : ℂ → ℂ) univ from fun _ _ => analyticAt_const) he
186
187 /-- The corrections chosen in Theorem 14.3 themselves vanish in the exact cases. -/
188 theorem zero_zeta_corrections_of_lattice {N : ℕ} (hN : 2 ≤ N)
189 (hz : ∀ m, canonicalSignedDenominator N (signedZeroCenter N m : ℂ) = 0)
190 (hsimple : ∀ m, analyticOrderAt (canonicalSignedDenominator N) (signedZeroCenter N m : ℂ) = 1)
191 (hex : ∀ z, canonicalSignedDenominator N z = 0 → ∃ k : Fin N, ∃ m,
192 z = canonicalPrimitiveRoot N ^ k.val * (signedZeroCenter N m : ℂ)) :
193 absoluteZetaCorrection hN = 0 ∧ reducedZetaCorrection hN = 0 := by
194 have he := zero_zeta_exact_of_lattice hN hz hsimple hex
195 constructor
196 · apply entire_zero_of_halfplane (absoluteZetaCorrection_entire hN) 1
197 intro s hs
198 have h := canonicalSignedDenominator_zeta_eq_hurwitz hN hs
199 rw [he.1 s hs] at h
200 linear_combination -h
201 · apply entire_zero_of_halfplane (reducedZetaCorrection_entire hN) (1 / (N : ℝ))
202 intro s hs
203 have h := entireReducedDenominator_zeta_eq_hurwitz hN hs
204 rw [he.2 s hs] at h
205 linear_combination -h
206
207 theorem orderTwo_zeta_corrections_zero :
208 absoluteZetaCorrection (by norm_num : 2 ≤ 2) = 0 ∧
209 reducedZetaCorrection (by norm_num : 2 ≤ 2) = 0 :=
210 zero_zeta_corrections_of_lattice (by norm_num) orderTwo_full_lattice.1
211 orderTwo_full_lattice.2.1 orderTwo_full_lattice.2.2
212
213 theorem orderFour_zeta_corrections_zero :
214 absoluteZetaCorrection (by norm_num : 2 ≤ 4) = 0 ∧
215 reducedZetaCorrection (by norm_num : 2 ≤ 4) = 0 :=
216 zero_zeta_corrections_of_lattice (by norm_num) orderFour_full_lattice.1
217 orderFour_full_lattice.2.1 orderFour_full_lattice.2.2
218
219 end
220 end Komorebi.PaperIV
Original file and source record
This copy matches the recorded source file. Its publication here does not change the work’s review status.
SHA-256: c4eb3387e3f44bb7ba803f8a23c589e75342dbc3d24cd527648841ec52acf753
Back to Paper IV: Cyclic Analytic Functions, Reciprocal Families, and Spectral Zero Data