Paper IV · Lean source
SharpGrowth.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/SharpGrowth.lean175 lines
Original source path
Paper_IV_Verification_Closeout_v1.1.0/formalization/lean/KomorebiPaperIV/SharpGrowth.leanSkip declarations and read code
1 /-
2 Copyright (c) 2026 Komorebi P. All rights reserved.
3 Authors: Komorebi P.
4 -/
5 import KomorebiPaperIV.DominantExponential
6 import KomorebiPaperIV.CanonicalProductGrowth
7 import Mathlib.Topology.Order.LiminfLimsup
8
9 namespace Komorebi.PaperIV
10 noncomputable section
11 open Set Filter Metric
12 open scoped Topology
13
14 /-- Maximum modulus on the closed disk. -/
15 def diskMaximumModulus (f : ℂ → ℂ) (r : ℝ) : ℝ :=
16 sSup ((fun z => ‖f z‖) '' closedBall 0 r)
17
18 /-- Growth order in the usual maximum-modulus normalization. -/
19 def entireGrowthOrder (f : ℂ → ℂ) : ℝ :=
20 limsup (fun r : ℝ => Real.log (Real.log (diskMaximumModulus f r)) / Real.log r) atTop
21
22 /-- Exponential type for functions of order one. -/
23 def entireExponentialType (f : ℂ → ℂ) : ℝ :=
24 limsup (fun r : ℝ => Real.log (diskMaximumModulus f r) / r) atTop
25
26 theorem norm_le_diskMaximumModulus {f : ℂ → ℂ} (hf : Continuous f)
27 {z : ℂ} {r : ℝ} (hz : ‖z‖ ≤ r) : ‖f z‖ ≤ diskMaximumModulus f r :=
28 le_csSup ((isCompact_closedBall (0 : ℂ) r).bddAbove_image hf.norm.continuousOn)
29 (mem_image_of_mem _ (mem_closedBall_zero_iff.mpr hz))
30
31 theorem diskMaximumModulus_le {f : ℂ → ℂ} {r B : ℝ} (hr : 0 ≤ r)
32 (hf : ∀ z : ℂ, ‖z‖ ≤ r → ‖f z‖ ≤ B) : diskMaximumModulus f r ≤ B := by
33 apply csSup_le
34 · exact ⟨‖f 0‖, mem_image_of_mem _ (mem_closedBall_self hr)⟩
35 · rintro _ ⟨z, hz, rfl⟩
36 exact hf z (mem_closedBall_zero_iff.mp hz)
37
38 /-- Sharp logarithmic growth follows from matching exponential bounds. -/
39 theorem log_growth_ratio_of_exp_bounds {M : ℝ → ℝ} {p C : ℝ}
40 (hp : 0 < p) (hC : 0 < C)
41 (hb : ∀ᶠ r in atTop, Real.exp (r ^ p) / C ≤ M r ∧ M r ≤ Real.exp (r ^ p)) :
42 Tendsto (fun r : ℝ => Real.log (M r) / r ^ p) atTop (𝓝 1) := by
43 have hl : Tendsto (fun r : ℝ => 1 - Real.log C / r ^ p) atTop (𝓝 1) := by
44 simpa using tendsto_const_nhds.sub (tendsto_const_nhds.div_atTop (tendsto_rpow_atTop hp))
45 apply tendsto_of_tendsto_of_tendsto_of_le_of_le' hl tendsto_const_nhds
46 · filter_upwards [hb, eventually_gt_atTop (0 : ℝ)] with r hr hpos
47 have hm : 0 < M r := (div_pos (Real.exp_pos _) hC).trans_le hr.1
48 have h := Real.log_le_log (div_pos (Real.exp_pos _) hC) hr.1
49 rw [Real.log_div (Real.exp_ne_zero _) hC.ne', Real.log_exp] at h
50 apply (le_div_iff₀ (Real.rpow_pos_of_pos hpos _)).mpr
51 have hne : r ^ p ≠ 0 := (Real.rpow_pos_of_pos hpos p).ne'
52 field_simp
53 nlinarith
54 · filter_upwards [hb, eventually_gt_atTop (0 : ℝ)] with r hr hpos
55 have hm : 0 < M r := (div_pos (Real.exp_pos _) hC).trans_le hr.1
56 apply (div_le_one (Real.rpow_pos_of_pos hpos _)).mpr
57 exact (Real.log_le_iff_le_exp hm).mpr hr.2
58
59 /-- The logarithmic ratio limit also proves the exact growth-order limit. -/
60 theorem order_ratio_of_log_growth {M : ℝ → ℝ} {p : ℝ}
61 (h : Tendsto (fun r : ℝ => Real.log (M r) / r ^ p) atTop (𝓝 1)) :
62 Tendsto (fun r : ℝ => Real.log (Real.log (M r)) / Real.log r) atTop (𝓝 p) := by
63 have hlog : Tendsto (fun r : ℝ => Real.log (Real.log (M r) / r ^ p)) atTop (𝓝 0) := by
64 simpa only [Real.log_one] using! (Real.continuousAt_log (by norm_num : (1 : ℝ) ≠ 0)).tendsto.comp h
65 have hlim : Tendsto (fun r : ℝ => p + Real.log (Real.log (M r) / r ^ p) / Real.log r) atTop (𝓝 p) := by
66 simpa using tendsto_const_nhds.add (hlog.div_atTop Real.tendsto_log_atTop)
67 apply hlim.congr'
68 filter_upwards [eventually_gt_atTop (1 : ℝ), h.eventually (eventually_gt_nhds (by norm_num : (0 : ℝ) < 1))] with r hr hratio
69 have hr0 : 0 < r := by linarith
70 have hpow : 0 < r ^ p := Real.rpow_pos_of_pos hr0 p
71 have hm : 0 < Real.log (M r) := (div_pos_iff_of_pos_right hpow).mp hratio
72 rw [Real.log_div hm.ne' hpow.ne', Real.log_rpow hr0]
73 field_simp [(Real.log_pos hr).ne']
74 ring
75
76 /-- A concrete lower bound on a vertex-facing ray, derived from the proved limit. -/
77 theorem canonicalSignedDenominator_ray_lower {N : ℕ} (hN : 0 < N) :
78 ∀ᶠ r : ℝ in atTop,
79 Real.exp r / (2 * N) ≤
80 ‖canonicalSignedDenominator N ((r : ℂ) * star (canonicalSignedVertex N 0))‖ := by
81 have ht := (canonicalSignedDenominator_dominant_ray hN hN).norm
82 have hh : ∀ᶠ r : ℝ in atTop,
83 (1 / 2 : ℝ) ≤ ‖(N : ℂ) * Complex.exp (-(r : ℂ)) *
84 canonicalSignedDenominator N ((r : ℂ) * star (canonicalSignedVertex N 0))‖ := by
85 exact (ht.eventually (eventually_ge_nhds (by norm_num : (1 / 2 : ℝ) < ‖(1 : ℂ)‖)))
86 filter_upwards [hh] with r hr
87 have hn : (0 : ℝ) < N := by exact_mod_cast hN
88 simp only [norm_mul, Complex.norm_natCast, Complex.norm_exp, Complex.neg_re, Complex.ofReal_re] at hr
89 have he : ‖canonicalSignedDenominator N ((r : ℂ) * star (canonicalSignedVertex N 0))‖ =
90 (Real.exp r / N) * ((N : ℝ) * Real.exp (-r) *
91 ‖canonicalSignedDenominator N ((r : ℂ) * star (canonicalSignedVertex N 0))‖) := by
92 rw [Real.exp_neg]
93 field_simp
94 rw [he]
95 have hmul := mul_le_mul_of_nonneg_left hr (le_of_lt (div_pos (Real.exp_pos r) hn))
96 convert! hmul using 1
97 ring
98
99 /-- The actual denominator maximum has matching exponential bounds. -/
100 theorem canonicalSignedDenominator_maximum_bounds {N : ℕ} (hN : 0 < N) :
101 ∀ᶠ r : ℝ in atTop, Real.exp r / (2 * N) ≤ diskMaximumModulus (canonicalSignedDenominator N) r ∧
102 diskMaximumModulus (canonicalSignedDenominator N) r ≤ Real.exp r := by
103 have hc : Continuous (canonicalSignedDenominator N) :=
104 (show Differentiable ℂ (canonicalSignedDenominator N) from fun z =>
105 (analyticAt_entireSigned N 0 (canonicalPrimitiveRoot N) (canonicalSignedRoot N) z).differentiableAt).continuous
106 filter_upwards [canonicalSignedDenominator_ray_lower hN, eventually_ge_atTop (0 : ℝ)] with r hr hr0
107 constructor
108 · exact hr.trans (norm_le_diskMaximumModulus hc (by simp [norm_canonicalSignedVertex, abs_of_nonneg hr0]))
109 · exact diskMaximumModulus_le hr0 (fun z hz =>
110 (norm_entireSigned_zero_le hN (canonicalPrimitiveRoot_isPrimitive hN) (canonicalSignedRoot_pow hN) z).trans
111 (Real.exp_le_exp.mpr hz))
112
113 theorem canonicalSignedDenominator_type_limit {N : ℕ} (hN : 0 < N) :
114 Tendsto (fun r : ℝ => Real.log (diskMaximumModulus (canonicalSignedDenominator N) r) / r) atTop (𝓝 1) := by
115 simpa using log_growth_ratio_of_exp_bounds (p := 1) (by norm_num)
116 (show (0 : ℝ) < 2 * N by positivity)
117 (by simpa using canonicalSignedDenominator_maximum_bounds hN)
118
119 theorem canonicalSignedDenominator_order_limit {N : ℕ} (hN : 0 < N) :
120 Tendsto (fun r : ℝ => Real.log (Real.log (diskMaximumModulus (canonicalSignedDenominator N) r)) / Real.log r)
121 atTop (𝓝 1) :=
122 order_ratio_of_log_growth (by simpa using canonicalSignedDenominator_type_limit hN)
123
124 theorem canonicalSignedDenominator_order_one {N : ℕ} (hN : 0 < N) :
125 entireGrowthOrder (canonicalSignedDenominator N) = 1 :=
126 (canonicalSignedDenominator_order_limit hN).limsup_eq
127
128 theorem canonicalSignedDenominator_type_one {N : ℕ} (hN : 0 < N) :
129 entireExponentialType (canonicalSignedDenominator N) = 1 :=
130 (canonicalSignedDenominator_type_limit hN).limsup_eq
131
132 /-- Passing to w=z^N transfers the sharp bound to the reduced entire function. -/
133 theorem entireReducedDenominator_maximum_bounds {N : ℕ} (hN : 0 < N) :
134 ∀ᶠ r : ℝ in atTop,
135 Real.exp (r ^ (1 / (N : ℝ))) / (2 * N) ≤ diskMaximumModulus (entireReducedDenominator N) r ∧
136 diskMaximumModulus (entireReducedDenominator N) r ≤ Real.exp (r ^ (1 / (N : ℝ))) := by
137 have hn : (0 : ℝ) < N := by exact_mod_cast hN
138 have hp : 0 < 1 / (N : ℝ) := one_div_pos.mpr hn
139 have ht := tendsto_rpow_atTop hp
140 have hc : Continuous (entireReducedDenominator N) :=
141 (show Differentiable ℂ (entireReducedDenominator N) from fun z =>
142 (analyticAt_entireReducedDenominator hN z).differentiableAt).continuous
143 filter_upwards [ht.eventually (canonicalSignedDenominator_ray_lower hN),
144 eventually_ge_atTop (0 : ℝ)] with r hr hr0
145 let z : ℂ := (r ^ (1 / (N : ℝ)) : ℝ) * star (canonicalSignedVertex N 0)
146 have hz : ‖z‖ = r ^ (1 / (N : ℝ)) := by
147 simp [z, norm_canonicalSignedVertex, abs_of_nonneg (Real.rpow_nonneg hr0 _)]
148 have hw : ‖z ^ N‖ = r := by
149 rw [norm_pow, hz, one_div, Real.rpow_inv_natCast_pow hr0 hN.ne']
150 constructor
151 · have hlow := norm_le_diskMaximumModulus hc (le_of_eq hw)
152 rw [← canonicalSignedDenominator_eq_reduced_power hN] at hlow
153 exact hr.trans hlow
154 · apply diskMaximumModulus_le hr0
155 intro w hw
156 exact (entireReducedDenominator_norm_le hN w).trans
157 (Real.exp_le_exp.mpr (Real.rpow_le_rpow (norm_nonneg _) hw hp.le))
158
159 theorem entireReducedDenominator_growth_limit {N : ℕ} (hN : 0 < N) :
160 Tendsto (fun r : ℝ => Real.log (diskMaximumModulus (entireReducedDenominator N) r) / r ^ (1 / (N : ℝ)))
161 atTop (𝓝 1) :=
162 log_growth_ratio_of_exp_bounds (by positivity) (by positivity) (entireReducedDenominator_maximum_bounds hN)
163
164 theorem entireReducedDenominator_order_limit {N : ℕ} (hN : 0 < N) :
165 Tendsto (fun r : ℝ => Real.log (Real.log (diskMaximumModulus (entireReducedDenominator N) r)) / Real.log r)
166 atTop (𝓝 (1 / (N : ℝ))) :=
167 order_ratio_of_log_growth (entireReducedDenominator_growth_limit hN)
168
169 /-- The complete order assertion of Proposition 11.2. -/
170 theorem entireReducedDenominator_order_exact {N : ℕ} (hN : 0 < N) :
171 entireGrowthOrder (entireReducedDenominator N) = 1 / (N : ℝ) :=
172 (entireReducedDenominator_order_limit hN).limsup_eq
173
174 end
175 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: aa174d5d9b675cd4472f987991b3f27d3fcc3e3d799f47ebafe0403ebebb9f03
Back to Paper IV: Cyclic Analytic Functions, Reciprocal Families, and Spectral Zero Data