Paper IV · Lean source
BellCompletion.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/BellCompletion.lean133 lines
Original source path
Paper_IV_Verification_Closeout_v1.1.0/formalization/lean/KomorebiPaperIV/BellCompletion.leanSkip declarations and read code
1 /-
2 Copyright (c) 2026 Komorebi P. All rights reserved.
3 Authors: Komorebi P.
4 -/
5 import KomorebiPaperIV.ParameterThetaCompletion
6
7 /-!
8 # Complete exponential Bell coefficients
9
10 The Bell coefficients are defined by their standard generating function,
11 independently of the reciprocal family. The specialization below proves the
12 exact normalization in Theorem 7.2, including the parameter degree.
13 -/
14
15 namespace Komorebi.PaperIV
16 open scoped PowerSeries
17 noncomputable section
18 variable {K : Type*} [Field K] [CharZero K]
19
20 /-- The zero-constant EGF input used to define the complete Bell polynomials. -/
21 def bellInput (x : ℕ → K) : K⟦X⟧ :=
22 PowerSeries.mk fun m => if m = 0 then 0 else x m / (m.factorial : K)
23
24 /-- The standard complete exponential Bell coefficient, normalized by `n!`. -/
25 def completeExponentialBell (n : ℕ) (x : ℕ → K) : K :=
26 (n.factorial : K) *
27 PowerSeries.coeff n ((PowerSeries.exp K).subst (bellInput x))
28
29 omit [CharZero K] in
30 @[simp] theorem constantCoeff_bellInput (x : ℕ → K) :
31 (bellInput x).constantCoeff = 0 := by
32 simp [bellInput]
33
34 /-- Generating-function normalization, including the zeroth coefficient. -/
35 theorem completeExponentialBell_generating_coefficient (n : ℕ) (x : ℕ → K) :
36 PowerSeries.coeff n ((PowerSeries.exp K).subst (bellInput x)) =
37 completeExponentialBell n x / (n.factorial : K) := by
38 have hn : (n.factorial : K) ≠ 0 := by exact_mod_cast n.factorial_ne_zero
39 simp [completeExponentialBell, hn]
40
41 @[simp] theorem completeExponentialBell_zero (x : ℕ → K) :
42 completeExponentialBell 0 x = 1 := by
43 simp only [completeExponentialBell, Nat.factorial_zero, Nat.cast_one, one_mul,
44 PowerSeries.coeff_zero_eq_constantCoeff]
45 change MvPowerSeries.constantCoeff ((PowerSeries.exp K).subst (bellInput x)) = 1
46 rw [PowerSeries.constantCoeff_subst_of_constantCoeff_zero (constantCoeff_bellInput x)]
47 simp
48
49 /-- The logarithmic normalization gives exactly the Bell input in Paper IV. -/
50 theorem bellInput_reciprocal (N : ℕ) (r : K) :
51 bellInput (fun m => r * ((m - 1).factorial : K) * kappaCoeff N m) =
52 PowerSeries.C r * negativeLogDenominator N := by
53 ext m
54 cases m with
55 | zero => simp [bellInput, constantCoeff_negativeLogDenominator,
56 PowerSeries.coeff_zero_eq_constantCoeff]
57 | succ m =>
58 simp only [bellInput, PowerSeries.coeff_mk, Nat.succ_ne_zero, ↓reduceIte,
59 Nat.succ_sub_one, kappaCoeff, PowerSeries.coeff_C_mul]
60 rw [Nat.factorial_succ, Nat.cast_mul]
61 have hm : (m.factorial : K) ≠ 0 := by exact_mod_cast m.factorial_ne_zero
62 have hs : (m.succ : K) ≠ 0 := by exact_mod_cast Nat.succ_ne_zero m
63 field_simp
64
65 /-- Theorem 7.2: the exact Bell formula, for every coefficient and parameter. -/
66 theorem reciprocalCoeff_bell_formula (N n : ℕ) (r : K) :
67 reciprocalCoeff N n r =
68 ((N * n).factorial : K) / (n.factorial : K) *
69 completeExponentialBell n
70 (fun m => r * ((m - 1).factorial : K) * kappaCoeff N m) := by
71 rw [completeExponentialBell, bellInput_reciprocal, reciprocalCoeff, blockCoeff,
72 reciprocalSeries, formalExpFamily_eq_exp_subst (constantCoeff_negativeLogDenominator N)]
73 have hn : (n.factorial : K) ≠ 0 := by exact_mod_cast n.factorial_ne_zero
74 field_simp
75
76 theorem coeff_one_negativeLogDenominator (N : ℕ) :
77 PowerSeries.coeff 1 (negativeLogDenominator (R := K) N) =
78 (N.factorial : K)⁻¹ := by
79 rw [negativeLogDenominator, map_neg,
80 coeff_one_logOf_of_constantCoeff_one (constantCoeff_reducedDenominator N),
81 coeff_reducedDenominator]
82 simp only [Nat.mul_one, pow_one, map_div₀, map_neg, map_one, map_natCast]
83 ring
84
85 /-- Exact leading parameter coefficient of the reciprocal polynomial. -/
86 theorem coeff_reciprocalCoeffPolynomialOver_parameterDegree (N n : ℕ) :
87 (reciprocalCoeffPolynomialOver (K := K) N n).coeff n =
88 ((N * n).factorial : K) /
89 ((n.factorial : K) * (N.factorial : K) ^ n) := by
90 let L : K⟦X⟧ := negativeLogDenominator (R := K) N
91 let Cφ : K →ₐ[ℚ] Polynomial K :=
92 (Polynomial.CAlgHom : K →ₐ[K] Polynomial K).restrictScalars ℚ
93 have hmapL : PowerSeries.map Polynomial.C L =
94 negativeLogDenominator (R := Polynomial K) N := by
95 have h := map_negativeLogDenominator Cφ N
96 have hc : (Cφ : K →+* Polynomial K) = Polynomial.C := by
97 ext x
98 simp [Cφ]
99 simpa only [hc] using h
100 rw [reciprocalCoeffPolynomialOver, reciprocalCoeff, blockCoeff,
101 reciprocalSeries, ← hmapL]
102 rw [show ((N * n).factorial : Polynomial K) =
103 Polynomial.C ((N * n).factorial : K) by simp]
104 rw [Polynomial.coeff_C_mul,
105 coeff_parameterDegree_formalExpFamily_map_C L
106 (constantCoeff_negativeLogDenominator N)]
107 simp only [L, coeff_one_negativeLogDenominator, inv_pow]
108 ring
109
110 /-- The degree is exact, not merely bounded above. -/
111 theorem natDegree_reciprocalCoeffPolynomialOver (N n : ℕ) :
112 (reciprocalCoeffPolynomialOver (K := K) N n).natDegree = n := by
113 apply Polynomial.natDegree_eq_of_le_of_coeff_ne_zero
114 (natDegree_reciprocalCoeffPolynomialOver_le N n)
115 rw [coeff_reciprocalCoeffPolynomialOver_parameterDegree]
116 apply div_ne_zero
117 · exact_mod_cast (N * n).factorial_ne_zero
118 · apply mul_ne_zero
119 · exact_mod_cast n.factorial_ne_zero
120 · apply pow_ne_zero
121 exact_mod_cast N.factorial_ne_zero
122
123 /-- The parameter factor holds over every characteristic-zero field. -/
124 theorem X_dvd_reciprocalCoeffPolynomialOver (N : ℕ) {n : ℕ} (hn : 0 < n) :
125 Polynomial.X ∣ reciprocalCoeffPolynomialOver (K := K) N n := by
126 rw [Polynomial.X_dvd_iff]
127 have h := eval_reciprocalCoeffPolynomialOver (K := K) N n 0
128 rw [reciprocalCoeff_zero_parameter_of_pos N hn] at h
129 rw [Polynomial.coeff_zero_eq_eval_zero]
130 exact h
131
132 end
133 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: ad3a3f177367bc7131a67fff9837194fd00cdd6686e821f89cb5050a9920895d
Back to Paper IV: Cyclic Analytic Functions, Reciprocal Families, and Spectral Zero Data