Paper IV · Lean source

SignedZeroLocalization.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 (2)

KomorebiPaperIV/SignedZeroLocalization.lean339 lines

Original source pathPaper_IV_Verification_Closeout_v1.1.0/formalization/lean/KomorebiPaperIV/SignedZeroLocalization.lean
Skip declarations and read code

Skip source text

1 /-
2 Copyright (c) 2026 Komorebi P. All rights reserved.
3 Authors: Komorebi P.
4 -/
5 import KomorebiPaperIV.RegularPolygonGap
6 import KomorebiPaperIV.ZeroPerturbation
7 import Mathlib.Topology.Algebra.InfiniteSum.Constructions
8 
9 /-! # Actual large local zero strings of the signed denominator
10 
11 This module applies the contraction theorem to the canonical finite sum and
12 derives its smallness hypotheses. Global exclusion outside these disks is not
13 assumed or asserted.
14 -/
15 
16 namespace Komorebi.PaperIV
17 noncomputable section
18 open Metric
19 
20 def canonicalSignedDenominator (N : ℕ) : ℂ → ℂ :=
21   entireSigned N 0 (canonicalPrimitiveRoot N) (canonicalSignedRoot N)
22 
23 def signedZeroFrequency (N : ℕ) : ℂ :=
24   canonicalSignedRoot N - canonicalSignedVertex N (N - 1)
25 
26 def signedZeroCenter (N m : ℕ) : ℝ :=
27   (Real.pi / Real.sin (Real.pi / N)) * (m + 1 / 2)
28 
29 theorem signed_sine_pos {N : ℕ} (hN : 2 ≤ N) : 0 < Real.sin (Real.pi / N) := by
30   have hn : (2 : ℝ) ≤ N := by exact_mod_cast hN
31   have hp : 0 < Real.pi / N := div_pos Real.pi_pos (by linarith)
32   have he : Real.pi / N * N = Real.pi := div_mul_cancel₀ _ (by linarith)
33   exact Real.sin_pos_of_pos_of_lt_pi hp (by nlinarith)
34 
35 theorem signedZeroFrequency_ne_zero {N : ℕ} (hN : 2 ≤ N) : signedZeroFrequency N ≠ 0 := by
36   rw [signedZeroFrequency, canonicalSignedVertex_adjacent_difference (by omega)]
37   exact mul_ne_zero (mul_ne_zero (by norm_num) (by exact_mod_cast (signed_sine_pos hN).ne')) Complex.I_ne_zero
38 
39 theorem signedZeroCenter_cancellation {N : ℕ} (hN : 2 ≤ N) (m : ℕ) :
40     Complex.exp (signedZeroFrequency N * (signedZeroCenter N m : ℂ)) = -1 := by
41   have hs : (Real.sin (Real.pi / N) : ℂ) ≠ 0 := by exact_mod_cast (signed_sine_pos hN).ne'
42   have he : signedZeroFrequency N * (signedZeroCenter N m : ℂ) =
43       (Real.pi : ℂ) * Complex.I + (m : ℤ) * (2 * (Real.pi : ℂ) * Complex.I) := by
44     rw [signedZeroFrequency, canonicalSignedVertex_adjacent_difference (by omega)]
45     unfold signedZeroCenter
46     push_cast
47     push_cast at hs
48     field_simp [hs]
49     ring
50   rw [he, ← Complex.exp_pi_mul_I]
51   apply Complex.exp_eq_exp_iff_exists_int.mpr
52   exact ⟨(m : ℤ), rfl⟩
53 
54 /-- Uniform exponential decay on a fixed-radius disk translated along the real axis. -/
55 theorem canonicalSignedRemainder_disk_bound {N : ℕ} (hN : 3 ≤ N)
56     {t r : ℝ} (ht : r ≤ t) {z : ℂ} (hz : z ∈ closedBall (t : ℂ) r) (q : ℕ) :
57     ‖signedExponentialRemainder N (canonicalPrimitiveRoot N) (canonicalSignedRoot N) q z‖ ≤
58       (((N - 2 : ℕ) : ℝ) * 2 ^ q * Real.exp (signedPolygonGap N * r + 2 * r)) *
59         Real.exp (-signedPolygonGap N * t) := by
60   have hzN : ‖z - (t : ℂ)‖ ≤ r := by simpa [mem_closedBall, dist_eq_norm] using hz
61   have hreal : t - r ≤ z.re := by
62     have h := (Complex.abs_re_le_norm (z - (t : ℂ))).trans hzN
63     simp only [Complex.sub_re, Complex.ofReal_re] at h
64     have := (abs_le.mp h).1
65     linarith
66   have him : |z.im| ≤ r := by
67     simpa only [Complex.sub_im, Complex.ofReal_im, sub_zero] using
68       (Complex.abs_im_le_norm (z - (t : ℂ))).trans hzN
69   have hb := canonicalSignedRemainder_strip_bound hN (by linarith : 0 ≤ z.re) him q
70   calc
71     _ ≤ ((N - 2 : ℕ) : ℝ) * 2 ^ q * Real.exp (-signedPolygonGap N * z.re + 2 * r) := hb
72     _ ≤ ((N - 2 : ℕ) : ℝ) * 2 ^ q *
73         Real.exp ((signedPolygonGap N * r + 2 * r) + (-signedPolygonGap N * t)) := by
74       apply mul_le_mul_of_nonneg_left _ (by positivity)
75       apply Real.exp_le_exp.mpr
76       nlinarith [signedPolygonGap_pos hN]
77     _ = _ := by rw [Real.exp_add]; ring
78 
79 /-- An explicit threshold exists for smallness on every translated fixed disk. -/
80 theorem signedRemainder_eventually_small_on_disks {N : ℕ} (hN : 3 ≤ N)
81     {r ε : ℝ} (_hr : 0 ≤ r) (hε : 0 < ε) (q : ℕ) :
82     ∃ T : ℝ, r ≤ T ∧ ∀ t : ℝ, T ≤ t → ∀ z ∈ closedBall (t : ℂ) r,
83       ‖signedExponentialRemainder N (canonicalPrimitiveRoot N) (canonicalSignedRoot N) q z‖ ≤ ε := by
84   let γ := signedPolygonGap N
85   let C : ℝ := ((N - 2 : ℕ) : ℝ) * 2 ^ q
86   have hγ : 0 < γ := signedPolygonGap_pos hN
87   have hC : 0 < C := by
88     dsimp [C]
89     have hn : 0 < N - 2 := by omega
90     positivity
91   let T := max r ((γ * r + 2 * r - Real.log (ε / C)) / γ)
92   refine ⟨T, le_max_left _ _, ?_⟩
93   intro t ht z hz
94   have htR : r ≤ t := (le_max_left _ _).trans ht
95   have hzN : ‖z - (t : ℂ)‖ ≤ r := by simpa [mem_closedBall, dist_eq_norm] using hz
96   have hreal : t - r ≤ z.re := by
97     have h := (Complex.abs_re_le_norm (z - (t : ℂ))).trans hzN
98     simp only [Complex.sub_re, Complex.ofReal_re] at h
99     have := (abs_le.mp h).1
100     linarith
101   have him : |z.im| ≤ r := by
102     simpa only [Complex.sub_im, Complex.ofReal_im, sub_zero] using
103       (Complex.abs_im_le_norm (z - (t : ℂ))).trans hzN
104   have hb := canonicalSignedRemainder_strip_bound hN (by linarith : 0 ≤ z.re) him q
105   have hexp : Real.exp (-γ * t + γ * r + 2 * r) ≤ ε / C := by
106     apply (Real.le_log_iff_exp_le (div_pos hε hC)).mp
107     have hh : (γ * r + 2 * r - Real.log (ε / C)) / γ ≤ t := (le_max_right _ _).trans ht
108     have := (div_le_iff₀ hγ).mp hh
109     linarith
110   calc
111     _ ≤ C * Real.exp (-γ * z.re + 2 * r) := hb
112     _ ≤ C * Real.exp (-γ * t + γ * r + 2 * r) := by
113       apply mul_le_mul_of_nonneg_left _ hC.le
114       apply Real.exp_le_exp.mpr
115       nlinarith
116     _ ≤ C * (ε / C) := mul_le_mul_of_nonneg_left hexp hC.le
117     _ = ε := by field_simp
118 
119 theorem canonicalSignedDenominator_conj {N : ℕ} (hN : 0 < N) (z : ℂ) :
120     canonicalSignedDenominator N (star z) = star (canonicalSignedDenominator N z) := by
121   have hs := (hasSum_entireSigned hN hN (canonicalPrimitiveRoot_isPrimitive hN)
122     (canonicalSignedRoot_pow hN) z).star
123   have ht := hasSum_entireSigned hN hN (canonicalPrimitiveRoot_isPrimitive hN)
124     (canonicalSignedRoot_pow hN) (star z)
125   apply ht.unique
126   convert hs using 1
127   · funext n
128     by_cases h : n % N = 0
129     · simp [coeff_signedSection, signedSectionCoeff, h]
130     · simp [coeff_signedSection, signedSectionCoeff, h]
131   · rfl
132 
133 /-- Every sufficiently large cancellation center has a unique actual denominator zero. -/
134 theorem canonicalSignedDenominator_eventual_local_zero {N : ℕ} (hN : 3 ≤ N) :
135     ∃ T : ℝ, 1 / ‖signedZeroFrequency N‖ ≤ T ∧ ∀ t : ℝ, T ≤ t →
136       Complex.exp (signedZeroFrequency N * (t : ℂ)) = -1 →
137       ∃! z : ℂ, z ∈ closedBall (t : ℂ) (1 / ‖signedZeroFrequency N‖) ∧
138         canonicalSignedDenominator N z = 0 := by
139   have ha := signedZeroFrequency_ne_zero (show 2 ≤ N by omega)
140   let ε := min (1 / 2 : ℝ) (‖signedZeroFrequency N‖ / 4)
141   have hε : 0 < ε := lt_min (by norm_num) (div_pos (norm_pos_iff.mpr ha) (by norm_num))
142   obtain ⟨T0, hT0, hb0⟩ := signedRemainder_eventually_small_on_disks hN
143     (by positivity : 0 ≤ 1 / ‖signedZeroFrequency N‖) hε 0
144   obtain ⟨T1, hT1, hb1⟩ := signedRemainder_eventually_small_on_disks hN
145     (by positivity : 0 ≤ 1 / ‖signedZeroFrequency N‖) hε 1
146   refine ⟨max T0 T1, hT0.trans (le_max_left _ _), ?_⟩
147   intro t ht hc
148   have h0 := hb0 t ((le_max_left _ _).trans ht)
149   have h1 := hb1 t ((le_max_right _ _).trans ht)
150   have hzero := perturbed_exponential_unique_zero ha hc
151     (fun z hz => (h0 z hz).trans (min_le_left _ _))
152     (fun z _ => hasDerivAt_finiteExponentialRemainder _ _ _ 0 z)
153     (fun z hz => (h1 z hz).trans (min_le_right _ _))
154   convert hzero using 1
155   funext z
156   congr 1
157   exact propext (signed_two_term_zero_iff (show 2 ≤ N by omega)
158     (canonicalPrimitiveRoot N) (canonicalSignedRoot N) z)
159 
160 /-- A unique zero in a disk centered on the real axis is itself real. -/
161 theorem canonicalSignedDenominator_unique_zero_real {N : ℕ} (hN : 0 < N)
162     {t r : ℝ} {z : ℂ} (hz : z ∈ closedBall (t : ℂ) r)
163     (hz0 : canonicalSignedDenominator N z = 0)
164     (hu : ∀ w : ℂ, w ∈ closedBall (t : ℂ) r ∧ canonicalSignedDenominator N w = 0 → w = z) :
165     z.im = 0 := by
166   have hzstar : star z ∈ closedBall (t : ℂ) r := by
167     have he : star z - (t : ℂ) = star (z - (t : ℂ)) := by simp
168     simpa only [mem_closedBall, dist_eq_norm, he, norm_star] using hz
169   have heq := hu (star z) ⟨hzstar, by rw [canonicalSignedDenominator_conj hN, hz0, star_zero]⟩
170   have him := congrArg Complex.im heq
171   change -z.im = z.im at him
172   linarith
173 
174 /-- Simplicity transfers from the normalized exponential sum to the actual denominator. -/
175 theorem canonicalSignedDenominator_local_zero_simple {N : ℕ} (hN : 3 ≤ N)
176     {z : ℂ} (hz : canonicalSignedDenominator N z = 0)
177     (h0 : ‖signedExponentialRemainder N (canonicalPrimitiveRoot N) (canonicalSignedRoot N) 0 z‖ ≤ 1 / 2)
178     (h1 : ‖signedExponentialRemainder N (canonicalPrimitiveRoot N) (canonicalSignedRoot N) 1 z‖ ≤
179       ‖signedZeroFrequency N‖ / 4) :
180     analyticOrderAt (canonicalSignedDenominator N) z = 1 := by
181   let R := signedExponentialRemainder N (canonicalPrimitiveRoot N) (canonicalSignedRoot N) 0
182   let P := fun w => (N : ℂ) * Complex.exp (-(canonicalSignedVertex N (N - 1) * w))
183   have hR : AnalyticAt ℂ R z := analyticAt_finiteExponentialRemainder _ _ _ _ _
184   have hdR : deriv R z =
185       signedExponentialRemainder N (canonicalPrimitiveRoot N) (canonicalSignedRoot N) 1 z :=
186     (hasDerivAt_finiteExponentialRemainder _ _ _ _ _).deriv
187   have hzero : 1 + Complex.exp (signedZeroFrequency N * z) + R z = 0 :=
188     (signed_two_term_zero_iff (by omega) _ _ z).mp hz
189   have hs := perturbed_exponential_zero_order_one (signedZeroFrequency_ne_zero (by omega))
190     hR hzero h0 (by rw [hdR]; exact h1)
191   have he : (fun w => 1 + Complex.exp (signedZeroFrequency N * w) + R w) =
192       fun w => P w * canonicalSignedDenominator N w := by
193     funext w
194     exact (signed_two_term_normalization (by omega) _ _ w).symm
195   have hP : AnalyticAt ℂ P z := by dsimp [P]; fun_prop
196   have hD : AnalyticAt ℂ (canonicalSignedDenominator N) z := analyticAt_entireSigned _ _ _ _ _
197   have hP0 : analyticOrderAt P z = 0 := hP.analyticOrderAt_eq_zero.mpr
198     (mul_ne_zero (by exact_mod_cast (show N ≠ 0 by omega)) (Complex.exp_ne_zero _))
199   rw [he] at hs
200   change analyticOrderAt (P * canonicalSignedDenominator N) z = 1 at hs
201   rw [analyticOrderAt_mul hP hD, hP0, zero_add] at hs
202   exact hs
203 
204 /-- There are positive real simple zeros near every sufficiently large lattice center.
205 This proves existence of the strings, without a claim that they exhaust all large zeros. -/
206 theorem canonicalSignedDenominator_eventual_positive_simple_zeros {N : ℕ} (hN : 3 ≤ N) :
207     ∃ m0 : ℕ, ∀ m : ℕ, m0 ≤ m → ∃ z : ℂ,
208       z ∈ closedBall (signedZeroCenter N m : ℂ) (1 / ‖signedZeroFrequency N‖) ∧
209       canonicalSignedDenominator N z = 0 ∧ z.im = 0 ∧ 0 < z.re ∧
210       analyticOrderAt (canonicalSignedDenominator N) z = 1 ∧
211       ∀ w : ℂ, w ∈ closedBall (signedZeroCenter N m : ℂ) (1 / ‖signedZeroFrequency N‖) ∧
212         canonicalSignedDenominator N w = 0 → w = z := by
213   have ha := signedZeroFrequency_ne_zero (show 2 ≤ N by omega)
214   let r := 1 / ‖signedZeroFrequency N‖
215   obtain ⟨T, _, hT⟩ := canonicalSignedDenominator_eventual_local_zero hN
216   obtain ⟨T0, _, hT0⟩ := signedRemainder_eventually_small_on_disks hN
217     (by positivity : 0 ≤ r) (by norm_num : (0 : ℝ) < 1 / 2) 0
218   obtain ⟨T1, _, hT1⟩ := signedRemainder_eventually_small_on_disks hN
219     (by positivity : 0 ≤ r) (div_pos (norm_pos_iff.mpr ha) (by norm_num : (0 : ℝ) < 4)) 1
220   let A := Real.pi / Real.sin (Real.pi / N)
221   have hA : 0 < A := div_pos Real.pi_pos (signed_sine_pos (by omega))
222   let B := max T (max T0 (max T1 r))
223   obtain ⟨m0, hm0⟩ := exists_nat_gt (B / A)
224   refine ⟨m0, ?_⟩
225   intro m hm
226   have hmm : (m0 : ℝ) ≤ m := by exact_mod_cast hm
227   have hB : B < signedZeroCenter N m := by
228     have hh := (div_lt_iff₀ hA).mp hm0
229     change B < A * ((m : ℝ) + 1 / 2)
230     nlinarith
231   have ht : T ≤ signedZeroCenter N m := (le_max_left _ _).trans hB.le
232   have ht0 : T0 ≤ signedZeroCenter N m := (le_trans (le_max_left _ _) (le_max_right _ _)).trans hB.le
233   have ht1 : T1 ≤ signedZeroCenter N m :=
234     (le_trans (le_max_left _ _) (le_trans (le_max_right _ _) (le_max_right _ _))).trans hB.le
235   have htr : r < signedZeroCenter N m :=
236     lt_of_le_of_lt (le_trans (le_max_right _ _) (le_trans (le_max_right _ _) (le_max_right _ _))) hB
237   obtain ⟨z, ⟨hz, hz0⟩, hu⟩ := hT (signedZeroCenter N m) ht (signedZeroCenter_cancellation (by omega) m)
238   refine ⟨z, hz, hz0, canonicalSignedDenominator_unique_zero_real (by omega) hz hz0 hu, ?_, ?_, hu⟩
239   · have h := (Complex.abs_re_le_norm (z - (signedZeroCenter N m : ℂ))).trans
240       (show ‖z - (signedZeroCenter N m : ℂ)‖ ≤ r by simpa [r, mem_closedBall, dist_eq_norm] using hz)
241     simp only [Complex.sub_re, Complex.ofReal_re] at h
242     have := (abs_le.mp h).1
243     linarith
244   · exact canonicalSignedDenominator_local_zero_simple hN hz0
245       (hT0 _ ht0 z hz) (hT1 _ ht1 z hz)
246 
247 /-- Quantified exponentially small displacement for a localized denominator zero. -/
248 theorem canonicalSignedDenominator_local_zero_exponential_distance {N : ℕ} (hN : 3 ≤ N)
249     {t : ℝ} (ht : 1 / ‖signedZeroFrequency N‖ ≤ t)
250     (hc : Complex.exp (signedZeroFrequency N * (t : ℂ)) = -1)
251     (hsmall : ∀ w ∈ closedBall (t : ℂ) (1 / ‖signedZeroFrequency N‖),
252       ‖signedExponentialRemainder N (canonicalPrimitiveRoot N) (canonicalSignedRoot N) 0 w‖ ≤ 1 / 2)
253     {z : ℂ} (hz : z ∈ closedBall (t : ℂ) (1 / ‖signedZeroFrequency N‖))
254     (hz0 : canonicalSignedDenominator N z = 0) :
255     ‖z - (t : ℂ)‖ ≤
256       ((3 / 2 : ℝ) * ((N - 2 : ℕ) : ℝ) *
257         Real.exp (signedPolygonGap N * (1 / ‖signedZeroFrequency N‖) + 2 * (1 / ‖signedZeroFrequency N‖)) /
258           ‖signedZeroFrequency N‖) * Real.exp (-signedPolygonGap N * t) := by
259   have hd := perturbed_exponential_pointwise_distance (signedZeroFrequency_ne_zero (by omega))
260     hc hsmall hz ((signed_two_term_zero_iff (by omega) _ _ z).mp hz0)
261   have hb := canonicalSignedRemainder_disk_bound hN ht hz 0
262   simp only [pow_zero, mul_one] at hb
263   apply hd.trans
264   calc
265     _ ≤ (3 / 2 : ℝ) *
266         ((((N - 2 : ℕ) : ℝ) * Real.exp (signedPolygonGap N * (1 / ‖signedZeroFrequency N‖) +
267           2 * (1 / ‖signedZeroFrequency N‖))) * Real.exp (-signedPolygonGap N * t)) /
268           ‖signedZeroFrequency N‖ := by gcongr
269     _ = _ := by ring
270 
271 /-- The positive real simple zero strings have the manuscript's exponential location rate.
272 Completeness of these strings among all large complex zeros remains a separate theorem. -/
273 theorem canonicalSignedDenominator_local_strings {N : ℕ} (hN : 3 ≤ N) :
274     ∃ C : ℝ, 0 < C ∧ ∃ m0 : ℕ, ∀ m : ℕ, m0 ≤ m → ∃ z : ℂ,
275       z ∈ closedBall (signedZeroCenter N m : ℂ) (1 / ‖signedZeroFrequency N‖) ∧
276       canonicalSignedDenominator N z = 0 ∧ z.im = 0 ∧ 0 < z.re ∧
277       analyticOrderAt (canonicalSignedDenominator N) z = 1 ∧
278       ‖z - (signedZeroCenter N m : ℂ)‖ ≤ C * Real.exp (-signedPolygonGap N * signedZeroCenter N m) ∧
279       ∀ w : ℂ, w ∈ closedBall (signedZeroCenter N m : ℂ) (1 / ‖signedZeroFrequency N‖) ∧
280         canonicalSignedDenominator N w = 0 → w = z := by
281   have ha := signedZeroFrequency_ne_zero (show 2 ≤ N by omega)
282   let r := 1 / ‖signedZeroFrequency N‖
283   let C := (3 / 2 : ℝ) * ((N - 2 : ℕ) : ℝ) * Real.exp (signedPolygonGap N * r + 2 * r) /
284     ‖signedZeroFrequency N‖
285   have hC : 0 < C := by
286     dsimp [C]
287     have hn : 0 < N - 2 := by omega
288     have := norm_pos_iff.mpr ha
289     positivity
290   obtain ⟨m0, hm0⟩ := canonicalSignedDenominator_eventual_positive_simple_zeros hN
291   obtain ⟨T, hTr, hT⟩ := signedRemainder_eventually_small_on_disks hN
292     (by positivity : 0 ≤ r) (by norm_num : (0 : ℝ) < 1 / 2) 0
293   let A := Real.pi / Real.sin (Real.pi / N)
294   have hA : 0 < A := div_pos Real.pi_pos (signed_sine_pos (by omega))
295   obtain ⟨m1, hm1⟩ := exists_nat_gt (T / A)
296   refine ⟨C, hC, max m0 m1, ?_⟩
297   intro m hm
298   have hmn : (m1 : ℝ) ≤ m := by exact_mod_cast (le_max_right m0 m1).trans hm
299   have ht : T ≤ signedZeroCenter N m := by
300     have hh := (div_lt_iff₀ hA).mp hm1
301     change T ≤ A * ((m : ℝ) + 1 / 2)
302     nlinarith
303   obtain ⟨z, hz, hz0, hzim, hzpos, hzs, hu⟩ := hm0 m ((le_max_left _ _).trans hm)
304   refine ⟨z, hz, hz0, hzim, hzpos, hzs, ?_, hu⟩
305   exact canonicalSignedDenominator_local_zero_exponential_distance hN (hTr.trans ht)
306     (signedZeroCenter_cancellation (by omega) m) (hT _ ht) hz hz0
307 
308 /-- Every zero with a small normalized remainder is assigned to one lattice center. -/
309 theorem canonicalSignedDenominator_zero_lattice_distance {N : ℕ} (hN : 3 ≤ N)
310     {z : ℂ} (hz : canonicalSignedDenominator N z = 0)
311     (hsmall : ‖signedExponentialRemainder N (canonicalPrimitiveRoot N) (canonicalSignedRoot N) 0 z‖ ≤ 1 / 2) :
312     ∃! k : ℤ, ‖z - oddExponentialCenter k / signedZeroFrequency N‖ ≤
313       (3 / 2 : ℝ) *
314         ‖signedExponentialRemainder N (canonicalPrimitiveRoot N) (canonicalSignedRoot N) 0 z‖ /
315           ‖signedZeroFrequency N‖ := by
316   have ha := signedZeroFrequency_ne_zero (show 2 ≤ N by omega)
317   have hz0 := (signed_two_term_zero_iff (show 2 ≤ N by omega)
318     (canonicalPrimitiveRoot N) (canonicalSignedRoot N) z).mp hz
319   change 1 + Complex.exp (signedZeroFrequency N * z) +
320     signedExponentialRemainder N (canonicalPrimitiveRoot N) (canonicalSignedRoot N) 0 z = 0 at hz0
321   have he : ‖1 + Complex.exp (signedZeroFrequency N * z)‖ =
322       ‖signedExponentialRemainder N (canonicalPrimitiveRoot N) (canonicalSignedRoot N) 0 z‖ := by
323     have h : 1 + Complex.exp (signedZeroFrequency N * z) =
324         -signedExponentialRemainder N (canonicalPrimitiveRoot N) (canonicalSignedRoot N) 0 z := by
325       linear_combination hz0
326     rw [h, norm_neg]
327   have h := near_cancellation_unique (he.trans_le hsmall)
328   rw [he] at h
329   convert h using 1
330   funext k
331   apply propext
332   have heq : z - oddExponentialCenter k / signedZeroFrequency N =
333       (signedZeroFrequency N * z - oddExponentialCenter k) / signedZeroFrequency N := by
334     field_simp
335   rw [heq, norm_div]
336   exact div_le_div_iff_of_pos_right (norm_pos_iff.mpr ha)
337 
338 end
339 end Komorebi.PaperIV

Back to source controls

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: 10ecb9dcf47b5e56d40bebe34d0cc3d927e048a5deb44fdc595410de87657ef8

Original source on GitHub

Back to Paper IV: Cyclic Analytic Functions, Reciprocal Families, and Spectral Zero Data