Paper IV · Lean source

CompleteHomogeneous.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/CompleteHomogeneous.lean106 lines

Original source pathPaper_IV_Verification_Closeout_v1.1.0/formalization/lean/KomorebiPaperIV/CompleteHomogeneous.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.ThetaZeroBell
6 
7 namespace Komorebi.PaperIV
8 noncomputable section
9 open scoped Classical
10 
11 def powerSumLog (q : ℕ → ℂ) : PowerSeries ℂ :=
12   PowerSeries.mk (fun n => if n = 0 then 0 else q n / (n : ℂ))
13 
14 @[simp] theorem powerSumLog_constantCoeff (q : ℕ → ℂ) : (powerSumLog q).constantCoeff = 0 := by
15   simp [powerSumLog]
16 
17 @[simp] theorem powerSumLog_derivative_coeff (q : ℕ → ℂ) (n : ℕ) :
18     PowerSeries.coeff n (PowerSeries.derivative ℂ (powerSumLog q)) = q (n + 1) := by
19   simp only [powerSumLog, PowerSeries.coeff_derivative, PowerSeries.coeff_mk, Nat.succ_ne_zero, ↓reduceIte, Nat.cast_add, Nat.cast_one]
20   exact div_mul_cancel₀ _ (by exact_mod_cast Nat.succ_ne_zero n)
21 
22 def homogeneousSeries (q : ℕ → ℂ) : PowerSeries ℂ := formalExpFamily (powerSumLog q) 1
23 
24 def homogeneousCoeff (q : ℕ → ℂ) (n : ℕ) : ℂ := PowerSeries.coeff n (homogeneousSeries q)
25 
26 @[simp] theorem homogeneousSeries_constantCoeff (q : ℕ → ℂ) : (homogeneousSeries q).constantCoeff = 1 := by
27   exact constantCoeff_formalExpFamily_of_zero (powerSumLog_constantCoeff q) 1
28 
29 theorem homogeneousSeries_derivative (q : ℕ → ℂ) :
30     PowerSeries.derivative ℂ (homogeneousSeries q) =
31       homogeneousSeries q * PowerSeries.derivative ℂ (powerSumLog q) := by
32   simpa [homogeneousSeries] using derivative_formalExpFamily (powerSumLog_constantCoeff q) (1 : ℂ)
33 
34 theorem homogeneousCoeff_recurrence (q : ℕ → ℂ) (n : ℕ) :
35     (n + 1 : ℂ) * homogeneousCoeff q (n + 1) =
36       ∑ k ∈ Finset.range (n + 1), homogeneousCoeff q k * q (n - k + 1) := by
37   have h := congrArg (PowerSeries.coeff n) (homogeneousSeries_derivative q)
38   rw [PowerSeries.coeff_derivative, PowerSeries.coeff_mul,
39     Finset.Nat.sum_antidiagonal_eq_sum_range_succ_mk] at h
40   simpa [homogeneousCoeff, mul_comm] using h
41 
42 def homogeneousGeometric (a : ℂ) : PowerSeries ℂ := PowerSeries.mk (fun n => a ^ n)
43 
44 @[simp] theorem homogeneousGeometric_coeff (a : ℂ) (n : ℕ) :
45     PowerSeries.coeff n (homogeneousGeometric a) = a ^ n := by simp [homogeneousGeometric]
46 
47 @[simp] theorem homogeneousGeometric_constantCoeff (a : ℂ) :
48     (homogeneousGeometric a).constantCoeff = 1 := by simp [homogeneousGeometric]
49 
50 theorem homogeneousGeometric_inverse (a : ℂ) :
51     homogeneousGeometric a * (1 - PowerSeries.C a * PowerSeries.X) = 1 := by
52   have h := congrArg (PowerSeries.rescale a) (PowerSeries.mk_one_mul_one_sub_eq_one ℂ)
53   simpa [PowerSeries.rescale_mk, homogeneousGeometric] using h
54 
55 theorem homogeneousGeometric_derivative (a : ℂ) :
56     PowerSeries.derivative ℂ (homogeneousGeometric a) =
57       homogeneousGeometric a * (PowerSeries.C a * homogeneousGeometric a) := by
58   have h := congrArg (PowerSeries.derivative ℂ) (homogeneousGeometric_inverse a)
59   simp [Derivation.leibniz, smul_eq_mul] at h
60   have he : PowerSeries.derivative ℂ (homogeneousGeometric a) *
61       (1 - PowerSeries.C a * PowerSeries.X) = homogeneousGeometric a * PowerSeries.C a := by
62     linear_combination h
63   calc
64     _ = PowerSeries.derivative ℂ (homogeneousGeometric a) *
65         ((1 - PowerSeries.C a * PowerSeries.X) * homogeneousGeometric a) := by
66       rw [mul_comm (1 - PowerSeries.C a * PowerSeries.X), homogeneousGeometric_inverse, mul_one]
67     _ = (PowerSeries.derivative ℂ (homogeneousGeometric a) *
68         (1 - PowerSeries.C a * PowerSeries.X)) * homogeneousGeometric a := by ring
69     _ = (homogeneousGeometric a * PowerSeries.C a) * homogeneousGeometric a := by rw [he]
70     _ = _ := by ring
71 
72 def finiteHomogeneousSeries {ι : Type*} (a : ι → ℂ) (S : Finset ι) : PowerSeries ℂ :=
73   ∏ i ∈ S, homogeneousGeometric (a i)
74 
75 @[simp] theorem finiteHomogeneousSeries_constantCoeff {ι : Type*} (a : ι → ℂ) (S : Finset ι) :
76     (finiteHomogeneousSeries a S).constantCoeff = 1 := by simp [finiteHomogeneousSeries]
77 
78 theorem finiteHomogeneousSeries_derivative {ι : Type*} (a : ι → ℂ) (S : Finset ι) :
79     PowerSeries.derivative ℂ (finiteHomogeneousSeries a S) =
80       finiteHomogeneousSeries a S * ∑ i ∈ S, PowerSeries.C (a i) * homogeneousGeometric (a i) := by
81   induction S using Finset.induction_on with
82   | empty => simp [finiteHomogeneousSeries]
83   | @insert i S hi ih =>
84       simp only [finiteHomogeneousSeries, Finset.prod_insert hi] at ih ⊢
85       rw [Derivation.leibniz, homogeneousGeometric_derivative, ih, Finset.sum_insert hi]
86       ring
87 
88 theorem finiteHomogeneousSeries_eq_homogeneous {ι : Type*} (a : ι → ℂ) (S : Finset ι) :
89     finiteHomogeneousSeries a S = homogeneousSeries (fun m => ∑ i ∈ S, a i ^ m) := by
90   have he : (∑ i ∈ S, PowerSeries.C (a i) * homogeneousGeometric (a i)) =
91       PowerSeries.derivative ℂ (powerSumLog (fun m => ∑ i ∈ S, a i ^ m)) := by
92     ext n
93     simp [pow_succ, mul_comm]
94   apply powerSeries_linear_ode_unique (H := PowerSeries.derivative ℂ (powerSumLog (fun m => ∑ i ∈ S, a i ^ m)))
95   · simp
96   · rw [finiteHomogeneousSeries_derivative, he]
97   · exact homogeneousSeries_derivative _
98 
99 /-- The finite coefficients are precisely the complete homogeneous monomial sums. -/
100 theorem finiteHomogeneousSeries_monomials {ι : Type*} (a : ι → ℂ) (S : Finset ι) (n : ℕ) :
101     PowerSeries.coeff n (finiteHomogeneousSeries a S) =
102       ∑ l ∈ S.finsuppAntidiag n, ∏ i ∈ S, a i ^ (l i) := by
103   simp [finiteHomogeneousSeries, PowerSeries.coeff_prod]
104 
105 end
106 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: af078372912668a0829f76d0d1443290671042387b5edf9f1c5628bd8c622459

Original source on GitHub

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