Paper IV · Lean source
SimplePoleParts.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/SimplePoleParts.lean111 lines
Original source path
Paper_IV_Verification_Closeout_v1.1.0/formalization/lean/KomorebiPaperIV/SimplePoleParts.leanSkip declarations and read code
1 /-
2 Copyright (c) 2026 Komorebi P. All rights reserved.
3 Authors: Komorebi P.
4 -/
5 import KomorebiPaperIV.PoleRemoval
6 import Mathlib.Analysis.Complex.RemovableSingularity
7
8 namespace Komorebi.PaperIV
9 noncomputable section
10 open Set Filter
11 open scoped Topology Classical
12
13 def poleNumerator (f : ℂ → ℂ) (ρ : ℂ) (r : ℕ) (t : ℂ) : ℂ :=
14 (((-ρ) * dslope f ρ (ρ * (1-t))) ^ r)⁻¹
15
16 def canonicalPoleCoefficient (f : ℂ → ℂ) (r : ℕ) (ρ : ℂ) (ℓ : ℕ) : ℂ :=
17 analyticTaylorCoefficient (poleNumerator f ρ r) (r-ℓ)
18
19 theorem poleNumerator_analyticAt {f : ℂ → ℂ} (hf : Differentiable ℂ f)
20 {ρ : ℂ} (hρ : ρ ≠ 0) (hd : deriv f ρ ≠ 0) (r : ℕ) : AnalyticAt ℂ (poleNumerator f ρ r) 0 := by
21 have hg : Differentiable ℂ (dslope f ρ) := differentiableOn_univ.mp
22 ((Complex.differentiableOn_dslope (s := univ) (by simp)).mpr hf.differentiableOn)
23 have ha : AnalyticAt ℂ (fun t : ℂ => (-ρ) * dslope f ρ (ρ * (1-t))) 0 := by
24 apply analyticAt_const.fun_mul
25 exact (hg.analyticAt _).comp (by fun_prop)
26 apply (ha.pow r).inv
27 change (((-ρ) * dslope f ρ (ρ * (1-(0:ℂ)))) ^ r) ≠ 0
28 simp only [sub_zero, mul_one, dslope_same]
29 exact pow_ne_zero r (mul_ne_zero (neg_ne_zero.mpr hρ) hd)
30
31 theorem canonicalPoleCoefficient_leading (f : ℂ → ℂ) (ρ : ℂ) (r : ℕ) :
32 canonicalPoleCoefficient f r ρ r = ((-ρ * deriv f ρ) ^ r)⁻¹ := by
33 simp [canonicalPoleCoefficient, analyticTaylorCoefficient, poleNumerator, dslope_same]
34
35 theorem poleNumerator_identity {f : ℂ → ℂ} {ρ z : ℂ} (hfρ : f ρ = 0) (hρ : ρ ≠ 0)
36 (hz : z ≠ ρ) (r : ℕ) :
37 (f z ^ r)⁻¹ = ((1-z/ρ) ^ r)⁻¹ * poleNumerator f ρ r (1-z/ρ) := by
38 have ht : 1-z/ρ ≠ 0 := by
39 intro h
40 exact hz ((div_eq_one_iff_eq hρ).mp (sub_eq_zero.mp h).symm)
41 have harg : ρ * (1 - (1-z/ρ)) = z := by field_simp; ring
42 have he : f z = (1-z/ρ) * ((-ρ) * dslope f ρ z) := by
43 have h := sub_smul_dslope_of_zero hfρ z
44 simp only [smul_eq_mul] at h
45 rw [← h]
46 field_simp
47 ring
48 rw [poleNumerator, harg, he, mul_pow, mul_inv]
49
50 theorem polePrincipalPart_scaled (h : ℂ → ℂ) (r : ℕ) {ρ z : ℂ} (hz : 1-z/ρ ≠ 0) :
51 (1-z/ρ) ^ r * polePrincipalPart (fun _ ℓ => analyticTaylorCoefficient h (r-ℓ)) r ρ z =
52 ∑ i ∈ Finset.range r, analyticTaylorCoefficient h i * (1-z/ρ) ^ i := by
53 classical
54 unfold polePrincipalPart poleTerm
55 rw [Finset.mul_sum]
56 have he : (∑ k ∈ Finset.range r, (1-z/ρ) ^ r *
57 (analyticTaylorCoefficient h (r-(k+1)) * ((1-z/ρ) ^ (k+1))⁻¹)) =
58 ∑ k ∈ Finset.range r, analyticTaylorCoefficient h (r-1-k) * (1-z/ρ) ^ (r-1-k) := by
59 apply Finset.sum_congr rfl
60 intro k hk
61 have hk' : k+1 ≤ r := Finset.mem_range.mp hk
62 have hpow : (1-z/ρ) ^ r = (1-z/ρ) ^ (r-(k+1)) * (1-z/ρ) ^ (k+1) := by
63 rw [← pow_add, Nat.sub_add_cancel hk']
64 have hidx : r-(k+1) = r-1-k := by omega
65 rw [hpow]
66 rw [← hidx]
67 field_simp
68 rw [he]
69 exact Finset.sum_range_reflect (fun i => analyticTaylorCoefficient h i * (1-z/ρ) ^ i) r
70
71 /-- Simple zeros produce the complete principal parts and the exact leading
72 coefficient; the local boundedness is proved from analytic Taylor division. -/
73 theorem canonicalPoleCoefficient_local_bound {f : ℂ → ℂ} (hf : Differentiable ℂ f)
74 {ρ : ℂ} (hρ : ρ ≠ 0) (hfρ : f ρ = 0) (hd : deriv f ρ ≠ 0) (r : ℕ) :
75 ∃ C : ℝ, ∀ᶠ z in 𝓝[≠] ρ,
76 ‖(f z ^ r)⁻¹ - polePrincipalPart (canonicalPoleCoefficient f r) r ρ z‖ ≤ C := by
77 let h := poleNumerator f ρ r
78 obtain ⟨F, hF, he⟩ := (poleNumerator_analyticAt hf hρ hd r).exists_eventuallyEq_sum_add_pow_mul r
79 have ht : Tendsto (fun z : ℂ => 1-z/ρ) (𝓝[≠] ρ) (𝓝 0) := by
80 have hc : ContinuousAt (fun z : ℂ => 1-z/ρ) ρ := by fun_prop
81 simpa [hρ] using hc.tendsto.mono_left nhdsWithin_le_nhds
82 have hbound : ∀ᶠ z in 𝓝[≠] ρ, ‖F (1-z/ρ)‖ ≤ ‖F 0‖ + 1 :=
83 (hF.continuousAt.norm.tendsto.comp ht).eventually (eventually_le_nhds (by linarith))
84 refine ⟨‖F 0‖+1, ?_⟩
85 filter_upwards [ht.eventually he, hbound, self_mem_nhdsWithin] with z hz hb hzρ
86 have hzne : z ≠ ρ := hzρ
87 have htz : 1-z/ρ ≠ 0 := by
88 intro hh
89 exact hzne ((div_eq_one_iff_eq hρ).mp (sub_eq_zero.mp hh).symm)
90 have hp := polePrincipalPart_scaled h r htz
91 have hpc : (1-z/ρ) ^ r * polePrincipalPart (canonicalPoleCoefficient f r) r ρ z =
92 ∑ i ∈ Finset.range r, analyticTaylorCoefficient h i * (1-z/ρ) ^ i := by
93 simpa only [polePrincipalPart, canonicalPoleCoefficient, h] using hp
94 have hh : (f z ^ r)⁻¹ - polePrincipalPart (canonicalPoleCoefficient f r) r ρ z = F (1-z/ρ) := by
95 rw [poleNumerator_identity hfρ hρ hzne r, hz]
96 simp only [smul_eq_mul]
97 have hsum : (∑ i ∈ Finset.range r, ((1-z/ρ) ^ i / (i.factorial : ℂ)) * iteratedDeriv i (poleNumerator f ρ r) 0) =
98 (1-z/ρ) ^ r * polePrincipalPart (canonicalPoleCoefficient f r) r ρ z := by
99 rw [hpc]
100 apply Finset.sum_congr rfl
101 intro i _
102 dsimp [analyticTaylorCoefficient, h]
103 ring
104 rw [hsum]
105 field_simp
106 ring
107 rw [hh]
108 exact hb
109
110 end
111 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: 53f2b1c0cfa32b735c83cd91f390a4377346597be62dfa2eb4441c174c380d29
Back to Paper IV: Cyclic Analytic Functions, Reciprocal Families, and Spectral Zero Data