Paper IV · Lean source
FullCanonicalProduct.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/FullCanonicalProduct.lean154 lines
Original source path
Paper_IV_Verification_Closeout_v1.1.0/formalization/lean/KomorebiPaperIV/FullCanonicalProduct.leanSkip declarations and read code
1 /-
2 Copyright (c) 2026 Komorebi P. All rights reserved.
3 Authors: Komorebi P.
4 -/
5 import KomorebiPaperIV.FullZeroSummability
6 import Mathlib.Analysis.Normed.Module.MultipliableUniformlyOn
7 import Mathlib.Analysis.Complex.LocallyUniformLimit
8
9 namespace Komorebi.PaperIV
10 noncomputable section
11 open Set Filter
12
13 /-- Every distinct zero occurs exactly its analytic multiplicity many times. -/
14 def ZeroMultiplicityIndex (f : ℂ → ℂ) :=
15 Σ z : {z : ℂ // f z = 0}, Fin (analyticOrderNatAt f z)
16
17 def indexedZero {f : ℂ → ℂ} (i : ZeroMultiplicityIndex f) : ℂ := i.1.val
18
19 def fullCanonicalProduct (f : ℂ → ℂ) (w : ℂ) : ℂ :=
20 ∏' i : ZeroMultiplicityIndex f, (1 - w / indexedZero i)
21
22 theorem zeroMultiplicity_reciprocal_summable {f : ℂ → ℂ} (hf : ZeroPowerSummable f 1) :
23 Summable (fun i : ZeroMultiplicityIndex f => 1 / ‖indexedZero i‖) := by
24 apply (summable_sigma_of_nonneg (fun i : ZeroMultiplicityIndex f => by positivity)).mpr
25 constructor
26 · intro z
27 exact (hasSum_fintype _).summable
28 · simpa only [indexedZero, tsum_fintype, Finset.sum_const, Finset.card_univ,
29 Fintype.card_fin, nsmul_eq_mul, mul_one_div, ZeroPowerSummable, Real.rpow_one] using hf
30
31 theorem fullCanonicalProduct_factors_summable {f : ℂ → ℂ} (hf : ZeroPowerSummable f 1) (w : ℂ) :
32 Summable (fun i : ZeroMultiplicityIndex f => ‖w / indexedZero i‖) := by
33 simpa only [norm_div, mul_one_div] using (zeroMultiplicity_reciprocal_summable hf).mul_left ‖w‖
34
35 theorem fullCanonicalProduct_multipliable {f : ℂ → ℂ} (hf : ZeroPowerSummable f 1) (w : ℂ) :
36 Multipliable (fun i : ZeroMultiplicityIndex f => 1 - w / indexedZero i) :=
37 multipliable_one_sub_of_summable (fullCanonicalProduct_factors_summable hf w)
38
39 theorem fullCanonicalProduct_uniform_on_compact {f : ℂ → ℂ} (hf : ZeroPowerSummable f 1)
40 {K : Set ℂ} (hK : IsCompact K) :
41 HasProdUniformlyOn (fun (i : ZeroMultiplicityIndex f) w => 1 - w / indexedZero i)
42 (fullCanonicalProduct f) K := by
43 obtain ⟨B, hB⟩ := hK.isBounded.exists_norm_le
44 have h := ((zeroMultiplicity_reciprocal_summable hf).mul_left B).hasProdUniformlyOn_one_add hK
45 (f := fun (i : ZeroMultiplicityIndex f) w => -w / indexedZero i)
46 (Eventually.of_forall (fun i w hw => ?_)) (fun _ => by fun_prop)
47 · simpa only [fullCanonicalProduct, neg_div, ← sub_eq_add_neg] using! h
48 · rw [norm_div, norm_neg, mul_one_div]
49 exact div_le_div_of_nonneg_right (hB w hw) (norm_nonneg _)
50
51 theorem fullCanonicalProduct_locally_uniform {f : ℂ → ℂ} (hf : ZeroPowerSummable f 1) :
52 HasProdLocallyUniformlyOn (fun (i : ZeroMultiplicityIndex f) w => 1 - w / indexedZero i)
53 (fullCanonicalProduct f) univ := by
54 apply hasProdLocallyUniformlyOn_of_forall_compact isOpen_univ
55 intro K _ hK
56 exact fullCanonicalProduct_uniform_on_compact hf hK
57
58 theorem fullCanonicalProduct_entire {f : ℂ → ℂ} (hf : ZeroPowerSummable f 1) :
59 Differentiable ℂ (fullCanonicalProduct f) := by
60 apply differentiableOn_univ.mp
61 apply (fullCanonicalProduct_locally_uniform hf).differentiableOn _ isOpen_univ
62 apply Eventually.of_forall
63 intro S
64 have h : DifferentiableOn ℂ (fun w : ℂ => ∏ i ∈ S, (1 - w / indexedZero i)) univ :=
65 DifferentiableOn.fun_finsetProd (fun _ _ => by fun_prop)
66 simpa only [Finset.prod_fn] using h
67
68 theorem fullCanonicalProduct_zero (f : ℂ → ℂ) : fullCanonicalProduct f 0 = 1 := by
69 simp [fullCanonicalProduct]
70
71 theorem fullCanonicalProduct_ne_zero {f : ℂ → ℂ} (hf : ZeroPowerSummable f 1)
72 (hf0 : f 0 ≠ 0) {w : ℂ} (hw : ∀ i : ZeroMultiplicityIndex f, w ≠ indexedZero i) :
73 fullCanonicalProduct f w ≠ 0 := by
74 have h := tprod_one_add_ne_zero_of_summable
75 (f := fun i : ZeroMultiplicityIndex f => -w / indexedZero i) (fun i => ?_)
76 (by simpa only [neg_div, norm_neg] using fullCanonicalProduct_factors_summable hf w)
77 · simpa only [fullCanonicalProduct, neg_div, ← sub_eq_add_neg] using! h
78 · rw [neg_div, ← sub_eq_add_neg, sub_ne_zero]
79 intro he
80 apply hw i
81 apply (div_eq_one_iff_eq ?_).mp he.symm
82 intro hz
83 apply hf0
84 have he := i.1.property
85 change f (indexedZero i) = 0 at he
86 rw [hz] at he
87 exact he
88
89 theorem fullCanonicalProduct_zero_iff_index {f : ℂ → ℂ} (hf : ZeroPowerSummable f 1)
90 (hf0 : f 0 ≠ 0) (w : ℂ) :
91 fullCanonicalProduct f w = 0 ↔ ∃ i : ZeroMultiplicityIndex f, w = indexedZero i := by
92 constructor
93 · intro hz
94 by_contra h
95 push Not at h
96 exact fullCanonicalProduct_ne_zero hf hf0 h hz
97 · rintro ⟨i, rfl⟩
98 apply tprod_of_exists_eq_zero
99 refine ⟨i, ?_⟩
100 rw [div_self, sub_self]
101 intro hz
102 apply hf0
103 have he := i.1.property
104 change f (indexedZero i) = 0 at he
105 rw [hz] at he
106 exact he
107
108 theorem indexedZero_ne_zero {f : ℂ → ℂ} (hf0 : f 0 ≠ 0) (i : ZeroMultiplicityIndex f) :
109 indexedZero i ≠ 0 := by
110 intro h
111 apply hf0
112 have he := i.1.property
113 change f (indexedZero i) = 0 at he
114 rwa [h] at he
115
116 theorem entire_zero_multiplicity_pos {f : ℂ → ℂ} (hf : Differentiable ℂ f)
117 (hf0 : f 0 ≠ 0) {w : ℂ} (hw : f w = 0) : 0 < analyticOrderNatAt f w := by
118 apply ENat.toNat_pos
119 · exact (hf.analyticAt w).analyticOrderAt_ne_zero.mpr hw
120 · exact entire_analyticOrderAt_ne_top (fun z => hf.analyticAt z) hf0 w
121
122 theorem fullCanonicalProduct_zero_iff {f : ℂ → ℂ} (hf : Differentiable ℂ f)
123 (hs : ZeroPowerSummable f 1) (hf0 : f 0 ≠ 0) (w : ℂ) :
124 fullCanonicalProduct f w = 0 ↔ f w = 0 := by
125 rw [fullCanonicalProduct_zero_iff_index hs hf0]
126 constructor
127 · rintro ⟨i, rfl⟩
128 exact i.1.property
129 · intro hw
130 exact ⟨⟨⟨w, hw⟩, ⟨0, entire_zero_multiplicity_pos hf hf0 hw⟩⟩, rfl⟩
131
132 theorem zeroMultiplicityIndex_countable {f : ℂ → ℂ} (hs : ZeroPowerSummable f 1)
133 (hf0 : f 0 ≠ 0) : Countable (ZeroMultiplicityIndex f) := by
134 have hc := (zeroMultiplicity_reciprocal_summable hs).countable_support
135 have he : Function.support (fun i : ZeroMultiplicityIndex f => 1 / ‖indexedZero i‖) = univ := by
136 ext i
137 simp only [Function.mem_support, mem_univ, iff_true]
138 exact one_div_ne_zero (norm_ne_zero_iff.mpr (indexedZero_ne_zero hf0 i))
139 rw [he] at hc
140 exact countable_univ_iff.mp hc
141
142 /-- The complete product includes every exceptional zero with its actual multiplicity. -/
143 theorem entireReducedDenominator_full_product_properties {N : ℕ} (hN : 2 ≤ N) :
144 Differentiable ℂ (fullCanonicalProduct (entireReducedDenominator N)) ∧
145 fullCanonicalProduct (entireReducedDenominator N) 0 = 1 ∧
146 (∀ w, fullCanonicalProduct (entireReducedDenominator N) w = 0 ↔ entireReducedDenominator N w = 0) ∧
147 Countable (ZeroMultiplicityIndex (entireReducedDenominator N)) := by
148 have hs := entireReducedDenominator_reciprocal_zeros_summable hN
149 have h0 : entireReducedDenominator N 0 ≠ 0 := by rw [entireReducedDenominator_zero]; exact one_ne_zero
150 refine ⟨fullCanonicalProduct_entire hs, fullCanonicalProduct_zero _, ?_, zeroMultiplicityIndex_countable hs h0⟩
151 exact fullCanonicalProduct_zero_iff (fun z => (analyticAt_entireReducedDenominator (by omega) z).differentiableAt) hs h0
152
153 end
154 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: a5e50628d144d9cb841353b3d2838e14b5d4ee7a8a1a663f16604db1e740b519
Back to Paper IV: Cyclic Analytic Functions, Reciprocal Families, and Spectral Zero Data