Paper II · Lean source
WeightedTransfer.lean
Declared contract recorded Coverage and evidence
The cited release explicitly reports completion of its registered formal contract, under its exact hypotheses.
This viewer reads the retained source; it does not run Lean or assign new claim mappings.
KomorebiVerification/PaperII/WeightedTransfer.lean584 lines
Original source path
formal/current/KomorebiVerification/PaperII/WeightedTransfer.leanSkip declarations and read code
1 /-
2 Copyright (c) 2026 Komorebi P. All rights reserved.
3 Authors: Komorebi P.
4 -/
5
6 import Mathlib.Analysis.SpecificLimits.Normed
7 import Mathlib.Algebra.Order.Floor.Div
8 import Mathlib.Data.Fintype.BigOperators
9 import Mathlib.Data.List.OfFn
10
11 /-!
12 # Paper II: weighted transfer and finite-precision inversion
13
14 Author: Komorebi P.
15
16 This module isolates the algebraic content of weighted transfer inversion. It proves a finite
17 noncommutative geometric-inverse identity, transports that identity through quotient maps, expands
18 powers as finite sums of ordered words, and packages multiplicative-filtration certificates which
19 justify pruning every word whose cumulative weight reaches the requested precision.
20
21 Positive edge weights turn a precision cutoff into an explicit nilpotence certificate in the
22 quotient, so the resulting inverse is a finite sum. A separate analytic specialization proves the
23 usual infinite geometric formula in a complete normed ring under the explicit hypothesis
24 `‖Dinv * K‖ < 1`.
25
26 There is deliberately no theorem asserting unrestricted adic convergence: filtered results below
27 are exact statements at a fixed finite precision, while the sole convergent infinite series uses a
28 norm strictly smaller than one.
29 -/
30
31 set_option autoImplicit false
32
33 namespace Komorebi.PaperII.WeightedTransfer
34
35 open scoped BigOperators
36
37 universe u v w
38
39 /-! ## Finite noncommutative geometric inversion -/
40
41 /-- `y` is simultaneously a left and right inverse of `x`.
42
43 Keeping both equations in the certificate is important in the noncommutative setting.
44 -/
45 structure TwoSidedInverse {R : Type u} [Mul R] [One R] (x y : R) : Prop where
46 left_inv : y * x = 1
47 right_inv : x * y = 1
48
49 namespace TwoSidedInverse
50
51 /-- A ring homomorphism transports a two-sided inverse certificate. -/
52 theorem map {R : Type u} {S : Type v} [Semiring R] [Semiring S]
53 {x y : R} (h : TwoSidedInverse x y) (q : R →+* S) :
54 TwoSidedInverse (q x) (q y) := by
55 constructor
56 · simpa only [map_mul, map_one] using congrArg q h.left_inv
57 · simpa only [map_mul, map_one] using congrArg q h.right_inv
58
59 end TwoSidedInverse
60
61 /-- The finite geometric candidate for the inverse of `1 + a`.
62
63 No commutativity is assumed: this is the ordered sum `1 - a + a² - ⋯` through degree `N - 1`.
64 -/
65 def finiteGeometricInverse {R : Type u} [Ring R] (a : R) (N : ℕ) : R :=
66 ∑ n ∈ Finset.range N, (-a) ^ n
67
68 /-- If `a ^ N = 0`, the finite geometric candidate is a genuine two-sided inverse of `1 + a`. -/
69 theorem finiteGeometricInverse_spec_of_pow_eq_zero {R : Type u} [Ring R]
70 (a : R) (N : ℕ) (hN : a ^ N = 0) :
71 TwoSidedInverse (1 + a) (finiteGeometricInverse a N) := by
72 have hneg : (-a) ^ N = 0 := by
73 rw [neg_pow, hN, mul_zero]
74 constructor
75 · simpa [finiteGeometricInverse, hneg] using geom_sum_mul_neg (-a) N
76 · simpa [finiteGeometricInverse, hneg] using mul_neg_geom_sum (-a) N
77
78 /-- Data certifying a concrete nilpotence cutoff for `a`. -/
79 structure NilpotenceCertificate {R : Type u} [Ring R] (a : R) where
80 cutoff : ℕ
81 pow_eq_zero : a ^ cutoff = 0
82
83 /-- The finite inverse selected by a nilpotence certificate. -/
84 def inverseFromCertificate {R : Type u} [Ring R] (a : R)
85 (certificate : NilpotenceCertificate a) : R :=
86 finiteGeometricInverse a certificate.cutoff
87
88 /-- A nilpotence certificate produces a verified two-sided inverse. -/
89 theorem inverseFromCertificate_spec {R : Type u} [Ring R] (a : R)
90 (certificate : NilpotenceCertificate a) :
91 TwoSidedInverse (1 + a) (inverseFromCertificate a certificate) := by
92 exact finiteGeometricInverse_spec_of_pow_eq_zero
93 a certificate.cutoff certificate.pow_eq_zero
94
95 /-- Multiplying a perturbation inverse by `Dinv` gives an inverse of `D + K`. -/
96 private theorem diagonal_inverse_of_perturbation_inverse {R : Type u} [Ring R]
97 (D Dinv K S : R) (hD : TwoSidedInverse D Dinv)
98 (hS : TwoSidedInverse (1 + Dinv * K) S) :
99 TwoSidedInverse (D + K) (S * Dinv) := by
100 constructor
101 · calc
102 (S * Dinv) * (D + K) = S * (Dinv * D + Dinv * K) := by
103 simp only [mul_add, mul_assoc]
104 _ = S * (1 + Dinv * K) := by rw [hD.left_inv]
105 _ = 1 := hS.left_inv
106 · have hfactor : D + K = D * (1 + Dinv * K) := by
107 symm
108 rw [mul_add, mul_one, ← mul_assoc, hD.right_inv, one_mul]
109 rw [hfactor]
110 calc
111 (D * (1 + Dinv * K)) * (S * Dinv) =
112 D * (((1 + Dinv * K) * S) * Dinv) := by
113 simp only [mul_assoc]
114 _ = D * (1 * Dinv) := by rw [hS.right_inv]
115 _ = 1 := by simpa only [one_mul] using hD.right_inv
116
117 /-- The exact finite candidate for `(D + K)⁻¹` when `Dinv * K` is nilpotent. -/
118 def diagonalTransferInverse {R : Type u} [Ring R]
119 (Dinv K : R) (N : ℕ) : R :=
120 finiteGeometricInverse (Dinv * K) N * Dinv
121
122 /-- Exact `D + K` inversion in a possibly noncommutative ring, under an explicit nilpotence
123 certificate for `Dinv * K`. -/
124 theorem diagonalTransferInverse_spec {R : Type u} [Ring R]
125 (D Dinv K : R) (N : ℕ) (hD : TwoSidedInverse D Dinv)
126 (hNil : (Dinv * K) ^ N = 0) :
127 TwoSidedInverse (D + K) (diagonalTransferInverse Dinv K N) := by
128 apply diagonal_inverse_of_perturbation_inverse D Dinv K
129 · exact hD
130 · exact finiteGeometricInverse_spec_of_pow_eq_zero (Dinv * K) N hNil
131
132 /-! ## Exact inversion after passage to finite precision -/
133
134 /-- If a ring homomorphism kills `a ^ L`, the mapped finite geometric sum is an exact inverse of
135 the mapped `1 + a`. A quotient map is the primary application, but injectivity or surjectivity is
136 not needed. -/
137 theorem finitePrecisionInverse {R : Type u} {S : Type v} [Ring R] [Ring S]
138 (q : R →+* S) (a : R) (L : ℕ) (hPrecision : q (a ^ L) = 0) :
139 TwoSidedInverse (q (1 + a)) (q (finiteGeometricInverse a L)) := by
140 have hpow : (q a) ^ L = 0 := by
141 simpa only [map_pow] using hPrecision
142 have hmap : q (finiteGeometricInverse a L) = finiteGeometricInverse (q a) L := by
143 simp [finiteGeometricInverse]
144 simpa only [map_add, map_one, hmap] using
145 (finiteGeometricInverse_spec_of_pow_eq_zero (q a) L hpow)
146
147 /-! ## Analytic specialization -/
148
149 /-- The analytic geometric inverse. Its specification below requires `‖a‖ < 1`. -/
150 noncomputable def analyticGeometricInverse {R : Type u} [NormedRing R]
151 (a : R) : R :=
152 ∑' n : ℕ, (-a) ^ n
153
154 /-- In a complete normed ring, the geometric series is a two-sided inverse when `‖a‖ < 1`. -/
155 theorem analyticGeometricInverse_spec {R : Type u} [NormedRing R] [CompleteSpace R]
156 (a : R) (ha : ‖a‖ < 1) :
157 TwoSidedInverse (1 + a) (analyticGeometricInverse a) := by
158 have hneg : ‖-a‖ < 1 := by simpa only [norm_neg] using ha
159 have hs : Summable (fun n : ℕ ↦ (-a) ^ n) :=
160 summable_geometric_of_norm_lt_one hneg
161 constructor
162 · simpa [analyticGeometricInverse] using hs.tsum_pow_mul_one_sub
163 · simpa [analyticGeometricInverse] using hs.one_sub_mul_tsum_pow
164
165 /-- The norm-convergent diagonal-plus-transfer candidate. -/
166 noncomputable def analyticDiagonalTransferInverse {R : Type u} [NormedRing R]
167 (Dinv K : R) : R :=
168 analyticGeometricInverse (Dinv * K) * Dinv
169
170 /-- Analytic `D + K` inversion under the explicit Neumann-series condition
171 `‖Dinv * K‖ < 1`. -/
172 theorem analyticDiagonalTransferInverse_spec {R : Type u}
173 [NormedRing R] [CompleteSpace R] (D Dinv K : R)
174 (hD : TwoSidedInverse D Dinv) (hNorm : ‖Dinv * K‖ < 1) :
175 TwoSidedInverse (D + K) (analyticDiagonalTransferInverse Dinv K) := by
176 apply diagonal_inverse_of_perturbation_inverse D Dinv K
177 · exact hD
178 · exact analyticGeometricInverse_spec (Dinv * K) hNorm
179
180 /-! ## Finite ordered-word expansion -/
181
182 /-- Cumulative weight of an ordered transfer word. -/
183 def wordWeight {E : Type u} (weight : E → ℕ) (word : List E) : ℕ :=
184 (word.map weight).sum
185
186 /-- Ordered, hence generally noncommutative, product attached to a transfer word. -/
187 def wordProduct {E : Type u} {R : Type v} [Monoid R]
188 (edge : E → R) (word : List E) : R :=
189 (word.map edge).prod
190
191 @[simp] theorem wordWeight_nil {E : Type u} (weight : E → ℕ) :
192 wordWeight weight [] = 0 := rfl
193
194 @[simp] theorem wordWeight_cons {E : Type u} (weight : E → ℕ)
195 (e : E) (word : List E) :
196 wordWeight weight (e :: word) = weight e + wordWeight weight word := rfl
197
198 @[simp] theorem wordProduct_nil {E : Type u} {R : Type v} [Monoid R]
199 (edge : E → R) :
200 wordProduct edge [] = 1 := rfl
201
202 @[simp] theorem wordProduct_cons {E : Type u} {R : Type v} [Monoid R]
203 (edge : E → R) (e : E) (word : List E) :
204 wordProduct edge (e :: word) = edge e * wordProduct edge word := rfl
205
206 /-- The `n`th power of a finite sum is the sum of the ordered products indexed by all length-`n`
207 words. The order recorded by `List.ofFn` is retained, so no commutativity hypothesis appears. -/
208 theorem sum_fixedWordProduct_eq_pow {E : Type u} {R : Type v}
209 [Fintype E] [Ring R] (edge : E → R) (n : ℕ) :
210 (∑ word : Fin n → E, wordProduct edge (List.ofFn word)) =
211 (∑ e : E, edge e) ^ n := by
212 induction n with
213 | zero => simp
214 | succ n ih =>
215 let split : E × (Fin n → E) ≃ (Fin (n + 1) → E) :=
216 Fin.consEquiv (fun _ : Fin (n + 1) ↦ E)
217 calc
218 (∑ word : Fin (n + 1) → E, wordProduct edge (List.ofFn word)) =
219 ∑ pair : E × (Fin n → E),
220 wordProduct edge (List.ofFn (split pair)) := by
221 simpa only using (split.sum_comp
222 (fun word : Fin (n + 1) → E ↦ wordProduct edge (List.ofFn word))).symm
223 _ = ∑ pair : E × (Fin n → E),
224 edge pair.1 * wordProduct edge (List.ofFn pair.2) := by
225 apply Finset.sum_congr rfl
226 intro pair _
227 simp [split, wordProduct]
228 _ = (∑ e : E, edge e) *
229 (∑ word : Fin n → E, wordProduct edge (List.ofFn word)) := by
230 rw [Fintype.sum_prod_type]
231 rw [Finset.sum_mul]
232 simp only [Finset.mul_sum]
233 _ = (∑ e : E, edge e) ^ (n + 1) := by
234 rw [ih, pow_succ']
235
236 /-! ## Multiplicative filtrations and precision certificates -/
237
238 /-- A decreasing additive filtration whose levels multiply by adding indices.
239
240 The structure records exactly the closure properties needed for finite-precision transfer words.
241 It makes no completeness or convergence claim.
242 -/
243 structure MultiplicativeFiltration (R : Type u) [Ring R] where
244 Mem : ℕ → R → Prop
245 zero_mem : ∀ n, Mem n 0
246 add_mem : ∀ {n x y}, Mem n x → Mem n y → Mem n (x + y)
247 neg_mem : ∀ {n x}, Mem n x → Mem n (-x)
248 one_mem : Mem 0 1
249 antitone : ∀ {m n x}, m ≤ n → Mem n x → Mem m x
250 mul_mem : ∀ {m n x y}, Mem m x → Mem n y → Mem (m + n) (x * y)
251
252 namespace MultiplicativeFiltration
253
254 variable {R : Type u} [Ring R]
255
256 /-- Membership notation-friendly wrapper. -/
257 def Contains (filtration : MultiplicativeFiltration R) (n : ℕ) (x : R) : Prop :=
258 filtration.Mem n x
259
260 /-- Products of filtered edge terms lie at the cumulative word weight. -/
261 theorem wordProduct_mem (filtration : MultiplicativeFiltration R)
262 {E : Type v} (weight : E → ℕ) (edge : E → R)
263 (hedge : ∀ e, filtration.Mem (weight e) (edge e)) (word : List E) :
264 filtration.Mem (wordWeight weight word) (wordProduct edge word) := by
265 induction word with
266 | nil => exact filtration.one_mem
267 | cons e word ih =>
268 exact filtration.mul_mem (hedge e) ih
269
270 end MultiplicativeFiltration
271
272 /-- A map realizes precision `L` when it kills every element in filtration level `L`. -/
273 structure PrecisionCertificate {R : Type u} {S : Type v} [Ring R] [Ring S]
274 (filtration : MultiplicativeFiltration R) (q : R →+* S) (L : ℕ) : Prop where
275 map_eq_zero : ∀ {x : R}, filtration.Mem L x → q x = 0
276
277 /-- A transfer word whose cumulative weight reaches `L` vanishes in every realization carrying a
278 precision-`L` certificate. -/
279 theorem wordProduct_vanishes_at_precision {R : Type u} {S : Type v}
280 [Ring R] [Ring S] (filtration : MultiplicativeFiltration R)
281 (q : R →+* S) (L : ℕ) (certificate : PrecisionCertificate filtration q L)
282 {E : Type w} (weight : E → ℕ) (edge : E → R)
283 (hedge : ∀ e, filtration.Mem (weight e) (edge e))
284 (word : List E) (hweight : L ≤ wordWeight weight word) :
285 q (wordProduct edge word) = 0 := by
286 apply certificate.map_eq_zero
287 apply filtration.antitone hweight
288 exact filtration.wordProduct_mem weight edge hedge word
289
290 /-- Mapping a finite word expansion is unchanged when all words of cumulative weight at least `L`
291 are pruned. -/
292 theorem map_eq_pruned_of_wordExpansion {R : Type u} {S : Type v}
293 [Ring R] [Ring S] (filtration : MultiplicativeFiltration R)
294 (q : R →+* S) (L : ℕ) (certificate : PrecisionCertificate filtration q L)
295 {E : Type w} [DecidableEq E] (weight : E → ℕ) (edge : E → R)
296 (hedge : ∀ e, filtration.Mem (weight e) (edge e))
297 (words : Finset (List E)) (x : R)
298 (hexpansion : x = ∑ word ∈ words, wordProduct edge word) :
299 q x = ∑ word ∈ words.filter (fun word ↦ wordWeight weight word < L),
300 q (wordProduct edge word) := by
301 rw [hexpansion, map_sum]
302 classical
303 rw [Finset.sum_filter]
304 apply Finset.sum_congr rfl
305 intro word hword
306 by_cases hlow : wordWeight weight word < L
307 · simp [hlow]
308 · simp only [hlow, ↓reduceIte]
309 exact wordProduct_vanishes_at_precision
310 filtration q L certificate weight edge hedge word (Nat.le_of_not_gt hlow)
311
312 /-! ## Explicit pruned word inverses -/
313
314 /-- The length-`n` part of the word expansion after retaining exactly the words whose cumulative
315 weight is strictly below precision `L`. -/
316 def retainedFixedWordSum {E : Type u} {R : Type v} [Fintype E] [Ring R]
317 (weight : E → ℕ) (edge : E → R) (L n : ℕ) : R :=
318 ∑ word : Fin n → E with wordWeight weight (List.ofFn word) < L,
319 wordProduct edge (List.ofFn word)
320
321 /-- The explicit signed, weight-pruned word candidate through word length `N - 1`.
322
323 Unlike `finiteGeometricInverse`, this expression visibly contains only retained transfer words:
324 every summand has cumulative weight strictly below `L`. The independent length cutoff `N` permits
325 the sharper cutoff obtained from a lower bound on all edge weights. -/
326 def prunedWordInverse {E : Type u} {R : Type v} [Fintype E] [Ring R]
327 (weight : E → ℕ) (edge : E → R) (L N : ℕ) : R :=
328 ∑ n ∈ Finset.range N, (-1 : R) ^ n * retainedFixedWordSum weight edge L n
329
330 /-- At precision `L`, the full length-`n` word expansion maps to its explicitly retained part. -/
331 theorem map_pow_eq_retainedFixedWordSum {R : Type u} {S : Type v}
332 [Ring R] [Ring S] (filtration : MultiplicativeFiltration R)
333 (q : R →+* S) (L : ℕ) (certificate : PrecisionCertificate filtration q L)
334 {E : Type w} [Fintype E] (weight : E → ℕ) (edge : E → R)
335 (hedge : ∀ e, filtration.Mem (weight e) (edge e)) (n : ℕ) :
336 q ((∑ e : E, edge e) ^ n) = q (retainedFixedWordSum weight edge L n) := by
337 rw [← sum_fixedWordProduct_eq_pow edge n]
338 simp only [retainedFixedWordSum, map_sum]
339 classical
340 rw [Finset.sum_filter]
341 apply Finset.sum_congr rfl
342 intro word _
343 by_cases hlow : wordWeight weight (List.ofFn word) < L
344 · simp [hlow]
345 · simp only [hlow, ↓reduceIte]
346 exact wordProduct_vanishes_at_precision filtration q L certificate weight edge hedge
347 (List.ofFn word) (Nat.le_of_not_gt hlow)
348
349 /-- The mapped finite geometric inverse is exactly the mapped explicit pruned-word expression.
350
351 This is the direct bridge missing from the abstract pruning statement: it derives the expansion
352 from the finite edge sum, keeps the noncommutative word order, inserts the alternating geometric
353 sign, and removes every word of weight at least `L`. -/
354 theorem map_finiteGeometricInverse_eq_prunedWordInverse
355 {R : Type u} {S : Type v} [Ring R] [Ring S]
356 (filtration : MultiplicativeFiltration R)
357 (q : R →+* S) (L N : ℕ) (certificate : PrecisionCertificate filtration q L)
358 {E : Type w} [Fintype E] (weight : E → ℕ) (edge : E → R)
359 (hedge : ∀ e, filtration.Mem (weight e) (edge e)) :
360 q (finiteGeometricInverse (∑ e : E, edge e) N) =
361 q (prunedWordInverse weight edge L N) := by
362 simp only [finiteGeometricInverse, prunedWordInverse, map_sum, map_mul, map_pow, map_neg,
363 map_one]
364 apply Finset.sum_congr rfl
365 intro n _
366 rw [neg_pow]
367 congr 1
368 simpa only [map_pow, map_sum] using
369 (map_pow_eq_retainedFixedWordSum filtration q L certificate weight edge hedge n)
370
371 /-- If the normalized transfer is nilpotent after mapping, the explicit pruned word sum is a
372 two-sided inverse. The precision cutoff `L` and nilpotence/length cutoff `N` are independent. -/
373 theorem prunedWordInverse_spec_of_pow_eq_zero
374 {R : Type u} {S : Type v} [Ring R] [Ring S]
375 (filtration : MultiplicativeFiltration R)
376 (q : R →+* S) (L N : ℕ) (certificate : PrecisionCertificate filtration q L)
377 {E : Type w} [Fintype E] (weight : E → ℕ) (edge : E → R)
378 (hedge : ∀ e, filtration.Mem (weight e) (edge e))
379 (hNil : q ((∑ e : E, edge e) ^ N) = 0) :
380 TwoSidedInverse
381 (q (1 + ∑ e : E, edge e))
382 (q (prunedWordInverse weight edge L N)) := by
383 have hfull := finitePrecisionInverse q (∑ e : E, edge e) N hNil
384 rw [← map_finiteGeometricInverse_eq_prunedWordInverse
385 filtration q L N certificate weight edge hedge]
386 exact hfull
387
388 /-- When each edge has positive weight, word length is bounded by cumulative weight. -/
389 theorem length_le_wordWeight {E : Type u} (weight : E → ℕ)
390 (hpositive : ∀ e, 1 ≤ weight e) (word : List E) :
391 word.length ≤ wordWeight weight word := by
392 induction word with
393 | nil => simp
394 | cons e word ih =>
395 rw [List.length_cons, wordWeight_cons]
396 calc
397 word.length + 1 = 1 + word.length := Nat.add_comm _ _
398 _ ≤ weight e + wordWeight weight word := Nat.add_le_add (hpositive e) ih
399
400 /-- A uniform lower bound `m` on edge weights gives the sharper estimate
401 `m * word.length ≤ wordWeight weight word`. -/
402 theorem minWeight_mul_length_le_wordWeight {E : Type u} (weight : E → ℕ) (m : ℕ)
403 (hmin : ∀ e, m ≤ weight e) (word : List E) :
404 m * word.length ≤ wordWeight weight word := by
405 induction word with
406 | nil => simp
407 | cons e word ih =>
408 rw [List.length_cons, wordWeight_cons, Nat.mul_succ, Nat.add_comm (m * word.length) m]
409 exact Nat.add_le_add (hmin e) ih
410
411 /-- Positive edge weights force the `L`th power of their sum to vanish in a precision-`L`
412 realization. The proof uses the full noncommutative word expansion. -/
413 theorem map_sum_pow_eq_zero_at_cutoff {R : Type u} {S : Type v}
414 [Ring R] [Ring S] (filtration : MultiplicativeFiltration R)
415 (q : R →+* S) (L : ℕ) (certificate : PrecisionCertificate filtration q L)
416 {E : Type w} [Fintype E] (weight : E → ℕ) (edge : E → R)
417 (hpositive : ∀ e, 1 ≤ weight e)
418 (hedge : ∀ e, filtration.Mem (weight e) (edge e)) :
419 q ((∑ e : E, edge e) ^ L) = 0 := by
420 rw [← sum_fixedWordProduct_eq_pow edge L, map_sum]
421 apply Finset.sum_eq_zero
422 intro word _
423 apply wordProduct_vanishes_at_precision
424 filtration q L certificate weight edge hedge (List.ofFn word)
425 simpa only [List.length_ofFn] using
426 length_le_wordWeight weight hpositive (List.ofFn word)
427
428 /-- A minimum edge weight `m` permits any nilpotence cutoff `N` satisfying `L ≤ m * N`.
429
430 For `m > 1`, this can be strictly smaller than the coarse length cutoff `N = L`. -/
431 theorem map_sum_pow_eq_zero_at_scaled_cutoff {R : Type u} {S : Type v}
432 [Ring R] [Ring S] (filtration : MultiplicativeFiltration R)
433 (q : R →+* S) (L m N : ℕ) (certificate : PrecisionCertificate filtration q L)
434 {E : Type w} [Fintype E] (weight : E → ℕ) (edge : E → R)
435 (hmin : ∀ e, m ≤ weight e) (hcutoff : L ≤ m * N)
436 (hedge : ∀ e, filtration.Mem (weight e) (edge e)) :
437 q ((∑ e : E, edge e) ^ N) = 0 := by
438 rw [← sum_fixedWordProduct_eq_pow edge N, map_sum]
439 apply Finset.sum_eq_zero
440 intro word _
441 apply wordProduct_vanishes_at_precision
442 filtration q L certificate weight edge hedge (List.ofFn word)
443 calc
444 L ≤ m * N := hcutoff
445 _ = m * (List.ofFn word).length := by simp only [List.length_ofFn]
446 _ ≤ wordWeight weight (List.ofFn word) :=
447 minWeight_mul_length_le_wordWeight weight m hmin (List.ofFn word)
448
449 /-- The executable ceiling cutoff used in the manuscript satisfies the
450 scaled cutoff inequality. Positivity of `m` is essential: ceiling division
451 by zero is not a valid minimum-weight cutoff. -/
452 theorem le_mul_ceilDiv (L m : ℕ) (hm : 0 < m) :
453 L ≤ m * (L ⌈/⌉ m) := by
454 exact (ceilDiv_le_iff_le_mul hm).mp le_rfl
455
456 /-- The explicit pruned word expression is a two-sided finite-precision inverse at any scaled
457 cutoff `N` satisfying `L ≤ m * N`. -/
458 theorem prunedWordInverse_spec_of_minWeight
459 {R : Type u} {S : Type v} [Ring R] [Ring S]
460 (filtration : MultiplicativeFiltration R)
461 (q : R →+* S) (L m N : ℕ) (certificate : PrecisionCertificate filtration q L)
462 {E : Type w} [Fintype E] (weight : E → ℕ) (edge : E → R)
463 (hmin : ∀ e, m ≤ weight e) (hcutoff : L ≤ m * N)
464 (hedge : ∀ e, filtration.Mem (weight e) (edge e)) :
465 TwoSidedInverse
466 (q (1 + ∑ e : E, edge e))
467 (q (prunedWordInverse weight edge L N)) := by
468 apply prunedWordInverse_spec_of_pow_eq_zero
469 filtration q L N certificate weight edge hedge
470 exact map_sum_pow_eq_zero_at_scaled_cutoff
471 filtration q L m N certificate weight edge hmin hcutoff hedge
472
473 /-- The common positive-weight specialization uses the coarse but assumption-free cutoff `N=L`. -/
474 theorem finitePrecisionPrunedInverse_of_weightedEdges
475 {R : Type u} {S : Type v} [Ring R] [Ring S]
476 (filtration : MultiplicativeFiltration R)
477 (q : R →+* S) (L : ℕ) (certificate : PrecisionCertificate filtration q L)
478 {E : Type w} [Fintype E] (weight : E → ℕ) (edge : E → R)
479 (hpositive : ∀ e, 1 ≤ weight e)
480 (hedge : ∀ e, filtration.Mem (weight e) (edge e)) :
481 TwoSidedInverse
482 (q (1 + ∑ e : E, edge e))
483 (q (prunedWordInverse weight edge L L)) := by
484 exact prunedWordInverse_spec_of_minWeight
485 filtration q L 1 L certificate weight edge hpositive (by simp) hedge
486
487 /-- Weighted finite-precision inversion: positive filtered edge weights provide the nilpotence
488 cutoff needed by the finite geometric inverse. -/
489 theorem finitePrecisionInverse_of_weightedEdges {R : Type u} {S : Type v}
490 [Ring R] [Ring S] (filtration : MultiplicativeFiltration R)
491 (q : R →+* S) (L : ℕ) (certificate : PrecisionCertificate filtration q L)
492 {E : Type w} [Fintype E] (weight : E → ℕ) (edge : E → R)
493 (hpositive : ∀ e, 1 ≤ weight e)
494 (hedge : ∀ e, filtration.Mem (weight e) (edge e)) :
495 TwoSidedInverse
496 (q (1 + ∑ e : E, edge e))
497 (q (finiteGeometricInverse (∑ e : E, edge e) L)) := by
498 apply finitePrecisionInverse q (∑ e : E, edge e) L
499 exact map_sum_pow_eq_zero_at_cutoff
500 filtration q L certificate weight edge hpositive hedge
501
502 /--
503 Full mapped diagonal-plus-transfer inversion from positive filtered edge data.
504
505 The equality `Dinv * K = ∑ e, edge e` identifies the normalized transfer with
506 the supplied weighted edge expansion. Its `L`th power vanishes after `q`, the
507 inverse certificate for `D` maps to the target ring, and the diagonal
508 factorization then gives the displayed two-sided inverse of `q (D + K)`.
509 -/
510 theorem finitePrecisionDiagonalTransferInverse_of_weightedEdges
511 {R : Type u} {S : Type v} [Ring R] [Ring S]
512 (filtration : MultiplicativeFiltration R)
513 (q : R →+* S) (L : ℕ) (certificate : PrecisionCertificate filtration q L)
514 (D Dinv K : R) (hD : TwoSidedInverse D Dinv)
515 {E : Type w} [Fintype E] (weight : E → ℕ) (edge : E → R)
516 (htransfer : Dinv * K = ∑ e : E, edge e)
517 (hpositive : ∀ e, 1 ≤ weight e)
518 (hedge : ∀ e, filtration.Mem (weight e) (edge e)) :
519 TwoSidedInverse
520 (q (D + K))
521 (q (finiteGeometricInverse (Dinv * K) L * Dinv)) := by
522 have hprecision : q ((Dinv * K) ^ L) = 0 := by
523 rw [htransfer]
524 exact map_sum_pow_eq_zero_at_cutoff
525 filtration q L certificate weight edge hpositive hedge
526 have hnil : (q Dinv * q K) ^ L = 0 := by
527 simpa only [map_pow, map_mul] using hprecision
528 have hmappedD : TwoSidedInverse (q D) (q Dinv) := hD.map q
529 have hdiagonal :=
530 diagonalTransferInverse_spec (q D) (q Dinv) (q K) L hmappedD hnil
531 have hgeometric :
532 q (finiteGeometricInverse (Dinv * K) L) =
533 finiteGeometricInverse (q Dinv * q K) L := by
534 simp [finiteGeometricInverse]
535 simpa only [diagonalTransferInverse, map_add, map_mul, hgeometric] using hdiagonal
536
537 /-- The explicit weight-pruned diagonal-plus-transfer inverse candidate. -/
538 def prunedDiagonalTransferInverse {E : Type u} {R : Type v} [Fintype E] [Ring R]
539 (weight : E → ℕ) (edge : E → R) (Dinv : R) (L N : ℕ) : R :=
540 prunedWordInverse weight edge L N * Dinv
541
542 /-- Full mapped diagonal-plus-transfer inversion with an explicit pruned word inverse and the
543 scaled cutoff supplied by a minimum edge weight. -/
544 theorem finitePrecisionPrunedDiagonalTransferInverse_of_minWeight
545 {R : Type u} {S : Type v} [Ring R] [Ring S]
546 (filtration : MultiplicativeFiltration R)
547 (q : R →+* S) (L m N : ℕ) (certificate : PrecisionCertificate filtration q L)
548 (D Dinv K : R) (hD : TwoSidedInverse D Dinv)
549 {E : Type w} [Fintype E] (weight : E → ℕ) (edge : E → R)
550 (htransfer : Dinv * K = ∑ e : E, edge e)
551 (hmin : ∀ e, m ≤ weight e) (hcutoff : L ≤ m * N)
552 (hedge : ∀ e, filtration.Mem (weight e) (edge e)) :
553 TwoSidedInverse
554 (q (D + K))
555 (q (prunedDiagonalTransferInverse weight edge Dinv L N)) := by
556 have hpruned := prunedWordInverse_spec_of_minWeight
557 filtration q L m N certificate weight edge hmin hcutoff hedge
558 have htransferMapped : q Dinv * q K = ∑ e : E, q (edge e) := by
559 simpa only [map_mul, map_sum] using congrArg q htransfer
560 have hnormalized :
561 TwoSidedInverse (1 + q Dinv * q K) (q (prunedWordInverse weight edge L N)) := by
562 simpa only [map_add, map_one, map_sum, htransferMapped] using hpruned
563 have hdiagonal := diagonal_inverse_of_perturbation_inverse
564 (q D) (q Dinv) (q K) (q (prunedWordInverse weight edge L N)) (hD.map q) hnormalized
565 simpa only [prunedDiagonalTransferInverse, map_add, map_mul] using hdiagonal
566
567 /-- Positive edge weights give the explicit pruned diagonal inverse at the standard cutoff
568 `N = L`. -/
569 theorem finitePrecisionPrunedDiagonalTransferInverse_of_weightedEdges
570 {R : Type u} {S : Type v} [Ring R] [Ring S]
571 (filtration : MultiplicativeFiltration R)
572 (q : R →+* S) (L : ℕ) (certificate : PrecisionCertificate filtration q L)
573 (D Dinv K : R) (hD : TwoSidedInverse D Dinv)
574 {E : Type w} [Fintype E] (weight : E → ℕ) (edge : E → R)
575 (htransfer : Dinv * K = ∑ e : E, edge e)
576 (hpositive : ∀ e, 1 ≤ weight e)
577 (hedge : ∀ e, filtration.Mem (weight e) (edge e)) :
578 TwoSidedInverse
579 (q (D + K))
580 (q (prunedDiagonalTransferInverse weight edge Dinv L L)) := by
581 exact finitePrecisionPrunedDiagonalTransferInverse_of_minWeight
582 filtration q L 1 L certificate D Dinv K hD weight edge htransfer hpositive (by simp) hedge
583
584 end Komorebi.PaperII.WeightedTransfer
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: a6565343f45bd187fcf7a349cd506bc13a8bac7f85cf665516c2b65b062d7bcc
Back to Paper II: Refinement Towers, Weighted Transfer, and Integral Separation of Operator Packets