Paper II · Lean source

ResultantSeparation.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/ResultantSeparation.lean526 lines

Original source pathformal/current/KomorebiVerification/PaperII/ResultantSeparation.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 
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 import Mathlib.Algebra.Polynomial.Basic
11 import Mathlib.Algebra.Polynomial.Coeff
12 import Mathlib.Data.Finset.NatAntidiagonal
13 import Mathlib.Data.Fintype.Card
14 import Mathlib.Data.Matrix.Basic
15 import Mathlib.LinearAlgebra.Matrix.Adjugate
16 import Mathlib.RingTheory.PowerSeries.Basic
17 import Mathlib.RingTheory.PowerSeries.Inverse
18 import Mathlib.Analysis.Normed.Ring.Basic
19 import Mathlib.Tactic.NoncommRing
20 import Mathlib.Algebra.BigOperators.Intervals
21 import Mathlib.Algebra.Module.Submodule.LinearMap
22 import Mathlib.Algebra.Polynomial.Eval.Defs
23 import Mathlib.Analysis.Normed.Operator.Basic
24 import Mathlib.Tactic.Abel
25 import Mathlib.Util.AssertNoSorry
26 import Mathlib.Analysis.Complex.Exponential
27 import Mathlib.LinearAlgebra.Matrix.Notation
28 import Mathlib.RingTheory.RootsOfUnity.PrimitiveRoots
29 import Mathlib.Data.Nat.ChineseRemainder
30 import Mathlib.GroupTheory.SpecificGroups.Cyclic
31 import Mathlib.NumberTheory.Padics.PadicVal.Basic
32 import Mathlib.RingTheory.Polynomial.Resultant.Basic
33 import Mathlib.Tactic.NormNum
34 import Mathlib.Tactic.Ring
35 import Mathlib.Tactic.FinCases
36 import Mathlib.Tactic.FieldSimp
37 import Mathlib.Tactic.Push
38 import Mathlib.Tactic.ByContra
39 import Mathlib.Tactic.SplitIfs
40 import Mathlib.Tactic.FunProp
41 
42 /-!
43 # Paper II: evaluated Bezout separation and precision delay
44 
45 Author: Komorebi P.
46 
47 This file starts with evaluated endomorphism certificates.  It does not construct polynomial
48 resultants, and it does not promote nilpotence on a primary summand to exact kernel action.  The
49 identity and zero actions below follow only from the displayed Bezout and annihilation equations.
50 -/
51 
52 set_option autoImplicit false
53 
54 namespace Komorebi.PaperII.ResultantSeparation
55 
56 universe u v
57 
58 variable {K : Type u} {M : Type v}
59 variable [Field K] [AddCommGroup M] [Module K M]
60 
61 abbrev End := Module.End K M
62 
63 /-! ## Evaluated certificate and its numerator -/
64 
65 /-- The certificate obtained after evaluating a Bezout identity at an operator.
66 
67 All four supplied endomorphisms are required to commute, `UF + VG = rI` is recorded verbatim,
68 and `FG = 0` is a separate certificate.  In particular, no resultant construction or
69 nilpotence-to-kernel inference is hidden in this structure.
70 -/
71 structure EvaluatedBezoutCertificate (F G U V : End (K := K) (M := M)) (r : K) : Prop where
72   r_ne_zero : r ≠ 0
73   commute_FG : Commute F G
74   commute_FU : Commute F U
75   commute_FV : Commute F V
76   commute_GU : Commute G U
77   commute_GV : Commute G V
78   commute_UV : Commute U V
79   bezout : U * F + V * G = r • (1 : End (K := K) (M := M))
80   annihilate : F * G = 0
81 
82 /-- The integral numerator `VG` of the evaluated separator. -/
83 def separatorNumerator (V G : End (K := K) (M := M)) : End (K := K) (M := M) :=
84   V * G
85 
86 /-- The rational separator `r⁻¹ VG`. -/
87 def separator (r : K) (V G : End (K := K) (M := M)) : End (K := K) (M := M) :=
88   r⁻¹ • separatorNumerator V G
89 
90 variable {F G U V : End (K := K) (M := M)} {r : K}
91 
92 /-- Minimal form of the numerator identity: only the evaluated Bezout equality is needed. -/
93 theorem separatorNumerator_eq_scalar_sub_of_bezout
94     (bezout : U * F + V * G = r • (1 : End (K := K) (M := M))) :
95     separatorNumerator V G = r • (1 : End (K := K) (M := M)) - U * F := by
96   apply (eq_sub_iff_add_eq).2
97   simpa only [separatorNumerator, add_comm] using bezout
98 
99 /-- The numerator is also `rI - UF`, directly from the evaluated Bezout identity. -/
100 theorem separatorNumerator_eq_scalar_sub
101     (certificate : EvaluatedBezoutCertificate F G U V r) :
102     separatorNumerator V G = r • (1 : End (K := K) (M := M)) - U * F := by
103   exact separatorNumerator_eq_scalar_sub_of_bezout certificate.bezout
104 
105 /-- Minimal form of cross-term vanishing.  Among the six commutation fields in the bundled
106 certificate, only `FG = GF` and `GU = UG` enter this calculation. -/
107 theorem separatorNumerator_mul_complement_eq_zero_of_commute
108     (commute_FG : Commute F G) (commute_GU : Commute G U) (annihilate : F * G = 0) :
109     separatorNumerator V G * (U * F) = 0 := by
110   calc
111     separatorNumerator V G * (U * F) = V * (G * U) * F := by
112       simp only [separatorNumerator, mul_assoc]
113     _ = V * (U * G) * F := by rw [commute_GU.eq]
114     _ = (V * U) * (G * F) := by simp only [mul_assoc]
115     _ = (V * U) * (F * G) := by rw [← commute_FG.eq]
116     _ = 0 := by rw [annihilate, mul_zero]
117 
118 /-- The cross term which occurs in the numerator-square calculation vanishes. -/
119 theorem separatorNumerator_mul_complement_eq_zero
120     (certificate : EvaluatedBezoutCertificate F G U V r) :
121     separatorNumerator V G * (U * F) = 0 := by
122   exact separatorNumerator_mul_complement_eq_zero_of_commute
123     certificate.commute_FG certificate.commute_GU certificate.annihilate
124 
125 /-- Minimal denominator-free quasi-idempotence theorem.  It requires neither `r ≠ 0` nor the
126 four commutation relations unused by the numerator-square calculation. -/
127 theorem separatorNumerator_mul_self_of_bezout
128     (bezout : U * F + V * G = r • (1 : End (K := K) (M := M)))
129     (commute_FG : Commute F G) (commute_GU : Commute G U) (annihilate : F * G = 0) :
130     separatorNumerator V G * separatorNumerator V G = r • separatorNumerator V G := by
131   calc
132     separatorNumerator V G * separatorNumerator V G =
133         separatorNumerator V G *
134           (r • (1 : End (K := K) (M := M)) - U * F) := by
135             exact congrArg (separatorNumerator V G * ·)
136               (separatorNumerator_eq_scalar_sub_of_bezout bezout)
137     _ = separatorNumerator V G * (r • (1 : End (K := K) (M := M))) -
138           separatorNumerator V G * (U * F) := by rw [mul_sub]
139     _ = r • separatorNumerator V G := by
140       rw [separatorNumerator_mul_complement_eq_zero_of_commute
141         commute_FG commute_GU annihilate]
142       simp only [sub_zero, mul_smul_comm, mul_one]
143 
144 /-- The denominator-free numerator identity `N² = rN`. -/
145 theorem separatorNumerator_mul_self
146     (certificate : EvaluatedBezoutCertificate F G U V r) :
147     separatorNumerator V G * separatorNumerator V G = r • separatorNumerator V G := by
148   exact separatorNumerator_mul_self_of_bezout certificate.bezout certificate.commute_FG
149     certificate.commute_GU certificate.annihilate
150 
151 /-- Minimal idempotence theorem for the normalized separator. -/
152 theorem separator_idempotent_of_bezout
153     (r_ne_zero : r ≠ 0)
154     (bezout : U * F + V * G = r • (1 : End (K := K) (M := M)))
155     (commute_FG : Commute F G) (commute_GU : Commute G U) (annihilate : F * G = 0) :
156     separator r V G * separator r V G = separator r V G := by
157   rw [separator, smul_mul_smul,
158     separatorNumerator_mul_self_of_bezout bezout commute_FG commute_GU annihilate]
159   rw [smul_smul]
160   apply congrArg (fun a : K => a • separatorNumerator V G)
161   field_simp [r_ne_zero]
162 
163 /-- The evaluated separator is idempotent. -/
164 theorem separator_idempotent
165     (certificate : EvaluatedBezoutCertificate F G U V r) :
166     separator r V G * separator r V G = separator r V G := by
167   exact separator_idempotent_of_bezout certificate.r_ne_zero certificate.bezout
168     certificate.commute_FG certificate.commute_GU certificate.annihilate
169 
170 /-! ## Exact action on the two certified kernels -/
171 
172 /-- Minimal kernel-action theorem: evaluated Bezout alone makes the numerator act by `r` on
173 `ker F`. -/
174 theorem separatorNumerator_apply_of_mem_ker_F_of_bezout
175     (bezout : U * F + V * G = r • (1 : End (K := K) (M := M))) {x : M}
176     (hx : x ∈ LinearMap.ker F) :
177     separatorNumerator V G x = r • x := by
178   change F x = 0 at hx
179   have h := LinearMap.congr_fun bezout x
180   simpa [separatorNumerator, hx] using h
181 
182 /-- On the exact kernel of `F`, the numerator acts by the scalar `r`. -/
183 theorem separatorNumerator_apply_of_mem_ker_F
184     (certificate : EvaluatedBezoutCertificate F G U V r) {x : M}
185     (hx : x ∈ LinearMap.ker F) :
186     separatorNumerator V G x = r • x := by
187   exact separatorNumerator_apply_of_mem_ker_F_of_bezout certificate.bezout hx
188 
189 /-- Minimal normalized kernel-action theorem. -/
190 theorem separator_apply_of_mem_ker_F_of_bezout
191     (r_ne_zero : r ≠ 0)
192     (bezout : U * F + V * G = r • (1 : End (K := K) (M := M))) {x : M}
193     (hx : x ∈ LinearMap.ker F) :
194     separator r V G x = x := by
195   rw [separator, LinearMap.smul_apply,
196     separatorNumerator_apply_of_mem_ker_F_of_bezout bezout hx]
197   simp [smul_smul, r_ne_zero]
198 
199 /-- The separator is exactly the identity on `ker F`. -/
200 theorem separator_apply_of_mem_ker_F
201     (certificate : EvaluatedBezoutCertificate F G U V r) {x : M}
202     (hx : x ∈ LinearMap.ker F) :
203     separator r V G x = x := by
204   exact separator_apply_of_mem_ker_F_of_bezout certificate.r_ne_zero certificate.bezout hx
205 
206 /-- The numerator vanishes on `ker G`. -/
207 theorem separatorNumerator_apply_of_mem_ker_G
208     {x : M} (hx : x ∈ LinearMap.ker G) :
209     separatorNumerator V G x = 0 := by
210   change G x = 0 at hx
211   simp [separatorNumerator, hx]
212 
213 /-- The separator is exactly zero on `ker G`. -/
214 theorem separator_apply_of_mem_ker_G
215     {x : M} (hx : x ∈ LinearMap.ker G) :
216     separator r V G x = 0 := by
217   simp [separator, separatorNumerator_apply_of_mem_ker_G hx]
218 
219 /-! ## Lattice preservation and denominator certificates -/
220 
221 /-- An endomorphism preserves the chosen additive lattice. -/
222 def PreservesLattice (T : End (K := K) (M := M)) (lattice : AddSubgroup M) : Prop :=
223   ∀ x : M, x ∈ lattice → T x ∈ lattice
224 
225 /-- A scalar preserves the chosen additive lattice.  This is deliberately explicit: when `K` is
226 a fraction field, algebraic invertibility in `K` alone does not imply preservation of a chosen
227 valuation lattice. -/
228 def ScalarPreservesLattice (a : K) (lattice : AddSubgroup M) : Prop :=
229   ∀ x : M, x ∈ lattice → a • x ∈ lattice
230 
231 /-- A field unit acts as an automorphism of the chosen lattice: both it and its inverse preserve
232 the lattice.  This is the precise lattice condition needed for unit factors in a denominator. -/
233 def IsLatticeUnit (u : Kˣ) (lattice : AddSubgroup M) : Prop :=
234   ScalarPreservesLattice (u : K) lattice ∧ ScalarPreservesLattice (↑(u⁻¹) : K) lattice
235 
236 /-- Multiplicative closure of lattice preservation under composition. -/
237 theorem PreservesLattice.mul {S T : End (K := K) (M := M)} {lattice : AddSubgroup M}
238     (hS : PreservesLattice S lattice) (hT : PreservesLattice T lattice) :
239     PreservesLattice (S * T) lattice := by
240   intro x hx
241   exact hS (T x) (hT x hx)
242 
243 /-- Multiplying a lattice-preserving endomorphism by a lattice-preserving scalar preserves the
244 lattice. -/
245 theorem ScalarPreservesLattice.smul {a : K} {T : End (K := K) (M := M)}
246     {lattice : AddSubgroup M} (ha : ScalarPreservesLattice a lattice)
247     (hT : PreservesLattice T lattice) :
248     PreservesLattice (a • T) lattice := by
249   intro x hx
250   rw [LinearMap.smul_apply]
251   exact ha (T x) (hT x hx)
252 
253 /-- Lattice-preserving scalars are closed under multiplication. -/
254 theorem ScalarPreservesLattice.mul {a b : K} {lattice : AddSubgroup M}
255     (ha : ScalarPreservesLattice a lattice)
256     (hb : ScalarPreservesLattice b lattice) :
257     ScalarPreservesLattice (a * b) lattice := by
258   intro x hx
259   rw [mul_smul]
260   exact ha (b • x) (hb x hx)
261 
262 /-- Every power of a lattice-preserving scalar preserves the lattice. -/
263 theorem ScalarPreservesLattice.pow {a : K} {lattice : AddSubgroup M}
264     (ha : ScalarPreservesLattice a lattice) :
265     ∀ n : ℕ, ScalarPreservesLattice (a ^ n) lattice := by
266   intro n
267   induction n with
268   | zero =>
269       intro x hx
270       simpa using hx
271   | succ n ih =>
272       simpa [pow_succ] using ih.mul ha
273 
274 /-- Lattice units are closed under inversion. -/
275 theorem IsLatticeUnit.inv {u : Kˣ} {lattice : AddSubgroup M}
276     (hu : IsLatticeUnit u lattice) :
277     IsLatticeUnit u⁻¹ lattice := by
278   constructor
279   · exact hu.2
280   · simpa using hu.1
281 
282 /-- If `V` and `G` preserve the lattice, so does the numerator `VG`. -/
283 theorem separatorNumerator_preservesLattice {lattice : AddSubgroup M}
284     (hV : PreservesLattice V lattice) (hG : PreservesLattice G lattice) :
285     PreservesLattice (separatorNumerator V G) lattice := by
286   exact hV.mul hG
287 
288 /-- Clearing the displayed nonzero denominator recovers the numerator exactly. -/
289 theorem scalar_mul_separator_of_ne_zero (r_ne_zero : r ≠ 0) :
290     r • separator r V G = separatorNumerator V G := by
291   simp [separator, smul_smul, r_ne_zero]
292 
293 /-- Clearing the displayed nonzero denominator recovers the numerator exactly. -/
294 theorem scalar_mul_separator
295     (certificate : EvaluatedBezoutCertificate F G U V r) :
296     r • separator r V G = separatorNumerator V G := by
297   exact scalar_mul_separator_of_ne_zero certificate.r_ne_zero
298 
299 /-- Lattice form of denominator clearing: preservation of `V` and `G` certifies preservation of
300 `rE`. -/
301 theorem scalar_mul_separator_preservesLattice_of_ne_zero
302     (r_ne_zero : r ≠ 0) {lattice : AddSubgroup M}
303     (hV : PreservesLattice V lattice) (hG : PreservesLattice G lattice) :
304     PreservesLattice (r • separator r V G) lattice := by
305   rw [scalar_mul_separator_of_ne_zero r_ne_zero]
306   exact separatorNumerator_preservesLattice hV hG
307 
308 /-- Lattice form of denominator clearing, as a wrapper around the minimal nonvanishing theorem. -/
309 theorem scalar_mul_separator_preservesLattice
310     (certificate : EvaluatedBezoutCertificate F G U V r) {lattice : AddSubgroup M}
311     (hV : PreservesLattice V lattice) (hG : PreservesLattice G lattice) :
312     PreservesLattice (r • separator r V G) lattice := by
313   exact scalar_mul_separator_preservesLattice_of_ne_zero certificate.r_ne_zero hV hG
314 
315 /-- If `r = uπ^s`, then clearing only the uniformizer power leaves the inverse unit factor:
316 `π^s E = u⁻¹ N`.  No lattice hypothesis is needed for this algebraic identity. -/
317 theorem pow_smul_separator_eq_unit_inv_smul_separatorNumerator_of_ne_zero
318     (r_ne_zero : r ≠ 0) {pi : K} {s : ℕ} (u : Kˣ)
319     (hr : (u : K) * pi ^ s = r) :
320     (pi ^ s) • separator r V G = (↑(u⁻¹) : K) • separatorNumerator V G := by
321   have hpow : pi ^ s ≠ 0 := by
322     intro h
323     apply r_ne_zero
324     rw [← hr, h, mul_zero]
325   rw [separator, smul_smul]
326   apply congrArg (fun a : K ↦ a • separatorNumerator V G)
327   rw [← hr]
328   field_simp [hpow]
329   exact u.mul_inv.symm
330 
331 /-- Certificate wrapper for unit-aware algebraic denominator clearing. -/
332 theorem pow_smul_separator_eq_unit_inv_smul_separatorNumerator
333     (certificate : EvaluatedBezoutCertificate F G U V r) {pi : K} {s : ℕ} (u : Kˣ)
334     (hr : (u : K) * pi ^ s = r) :
335     (pi ^ s) • separator r V G = (↑(u⁻¹) : K) • separatorNumerator V G := by
336   exact pow_smul_separator_eq_unit_inv_smul_separatorNumerator_of_ne_zero
337     certificate.r_ne_zero u hr
338 
339 /-- A finite certificate that `s` powers of `pi` clear a projector on a lattice. -/
340 def IsSeparationWeight (pi : K) (E : End (K := K) (M := M))
341     (lattice : AddSubgroup M) (s : ℕ) : Prop :=
342   PreservesLattice ((pi ^ s) • E) lattice
343 
344 /-- Clearing exponents are upward closed whenever the uniformizer scalar preserves the lattice. -/
345 theorem IsSeparationWeight.mono {pi : K} {E : End (K := K) (M := M)}
346     {lattice : AddSubgroup M} {s t : ℕ}
347     (hs : IsSeparationWeight pi E lattice s) (hst : s ≤ t)
348     (hpi : ScalarPreservesLattice pi lattice) :
349     IsSeparationWeight pi E lattice t := by
350   rw [IsSeparationWeight] at hs ⊢
351   have hpow : pi ^ t = pi ^ (t - s) * pi ^ s := by
352     rw [← pow_add, Nat.sub_add_cancel hst]
353   rw [hpow, mul_smul]
354   exact (hpi.pow (t - s)).smul hs
355 
356 /-- Existence of a finite separation weight is kept as explicit data. -/
357 structure FiniteSeparationWeight (pi : K) (E : End (K := K) (M := M))
358     (lattice : AddSubgroup M) where
359   weight : ℕ
360   clears : IsSeparationWeight pi E lattice weight
361 
362 /-- Propositional form of finiteness, used to define the actual least separation weight. -/
363 def HasFiniteSeparationWeight (pi : K) (E : End (K := K) (M := M))
364     (lattice : AddSubgroup M) : Prop :=
365   ∃ s : ℕ, IsSeparationWeight pi E lattice s
366 
367 /-- A bundled finite certificate supplies the corresponding existence proof. -/
368 theorem FiniteSeparationWeight.exists {pi : K} {E : End (K := K) (M := M)}
369     {lattice : AddSubgroup M} (certificate : FiniteSeparationWeight pi E lattice) :
370     HasFiniteSeparationWeight pi E lattice :=
371   ⟨certificate.weight, certificate.clears⟩
372 
373 /-- The actual separation weight: the least natural exponent which clears the projector on the
374 lattice.  Its existence proof is explicit and `Nat.find` performs only the well-ordering step. -/
375 noncomputable def separationWeight {pi : K} {E : End (K := K) (M := M)}
376     {lattice : AddSubgroup M} (finite : HasFiniteSeparationWeight pi E lattice) : ℕ :=
377   by
378     classical
379     exact Nat.find finite
380 
381 /-- The least separation weight really clears the projector. -/
382 theorem separationWeight_clears {pi : K} {E : End (K := K) (M := M)}
383     {lattice : AddSubgroup M} (finite : HasFiniteSeparationWeight pi E lattice) :
384     IsSeparationWeight pi E lattice (separationWeight finite) := by
385   classical
386   exact Nat.find_spec finite
387 
388 /-- Minimality, equivalently the abstract upper-bound rule: every supplied clearing exponent bounds
389 the actual separation weight from above. -/
390 theorem separationWeight_le_of_clears {pi : K} {E : End (K := K) (M := M)}
391     {lattice : AddSubgroup M} (finite : HasFiniteSeparationWeight pi E lattice)
392     {s : ℕ} (hs : IsSeparationWeight pi E lattice s) :
393     separationWeight finite ≤ s := by
394   classical
395   exact Nat.find_min' finite hs
396 
397 /-- A certified weight is, tautologically, a finite separation-weight certificate. -/
398 def finiteSeparationWeightOfCertificate {pi : K} {E : End (K := K) (M := M)}
399     {lattice : AddSubgroup M} {s : ℕ} (h : IsSeparationWeight pi E lattice s) :
400     FiniteSeparationWeight pi E lattice :=
401   ⟨s, h⟩
402 
403 /-- If the evaluated denominator is exactly `pi^s`, preservation of `V` and `G` supplies the
404 corresponding finite separation-weight certificate. -/
405 theorem separator_isSeparationWeight_of_pow_eq
406     (certificate : EvaluatedBezoutCertificate F G U V r) {pi : K} {s : ℕ}
407     {lattice : AddSubgroup M} (hr : pi ^ s = r)
408     (hV : PreservesLattice V lattice) (hG : PreservesLattice G lattice) :
409     IsSeparationWeight pi (separator r V G) lattice s := by
410   rw [IsSeparationWeight, hr]
411   exact scalar_mul_separator_preservesLattice certificate hV hG
412 
413 /-- Minimal unit-aware denominator clearing.  If `r = uπ^s`, only the action of the inverse
414 unit is needed to transfer preservation of the integral numerator to `π^s E`. -/
415 theorem separator_isSeparationWeight_of_unit_mul_pow_eq_of_inv_preserves
416     (r_ne_zero : r ≠ 0) {pi : K} {s : ℕ} {u : Kˣ}
417     {lattice : AddSubgroup M} (hr : (u : K) * pi ^ s = r)
418     (huInv : ScalarPreservesLattice (↑(u⁻¹) : K) lattice)
419     (hV : PreservesLattice V lattice) (hG : PreservesLattice G lattice) :
420     IsSeparationWeight pi (separator r V G) lattice s := by
421   rw [IsSeparationWeight,
422     pow_smul_separator_eq_unit_inv_smul_separatorNumerator_of_ne_zero r_ne_zero u hr]
423   exact huInv.smul (separatorNumerator_preservesLattice hV hG)
424 
425 /-- Bundled valuation-unit wrapper for unit-aware denominator clearing.  Both unit directions
426 are convenient lattice data, although this implication uses only `u⁻¹`. -/
427 theorem separator_isSeparationWeight_of_unit_mul_pow_eq_of_ne_zero
428     (r_ne_zero : r ≠ 0) {pi : K} {s : ℕ} {u : Kˣ}
429     {lattice : AddSubgroup M} (hr : (u : K) * pi ^ s = r)
430     (hu : IsLatticeUnit u lattice)
431     (hV : PreservesLattice V lattice) (hG : PreservesLattice G lattice) :
432     IsSeparationWeight pi (separator r V G) lattice s := by
433   exact separator_isSeparationWeight_of_unit_mul_pow_eq_of_inv_preserves
434     r_ne_zero hr hu.2 hV hG
435 
436 /-- Certificate wrapper for unit-aware separation-weight clearing. -/
437 theorem separator_isSeparationWeight_of_unit_mul_pow_eq
438     (certificate : EvaluatedBezoutCertificate F G U V r) {pi : K} {s : ℕ} {u : Kˣ}
439     {lattice : AddSubgroup M} (hr : (u : K) * pi ^ s = r)
440     (hu : IsLatticeUnit u lattice)
441     (hV : PreservesLattice V lattice) (hG : PreservesLattice G lattice) :
442     IsSeparationWeight pi (separator r V G) lattice s := by
443   exact separator_isSeparationWeight_of_unit_mul_pow_eq_of_ne_zero
444     certificate.r_ne_zero hr hu hV hG
445 
446 /-- The same unit-aware theorem in the conventional valuation orientation `r = uπ^s`. -/
447 theorem separator_isSeparationWeight_of_eq_unit_mul_pow
448     (certificate : EvaluatedBezoutCertificate F G U V r) {pi : K} {s : ℕ} {u : Kˣ}
449     {lattice : AddSubgroup M} (hr : r = (u : K) * pi ^ s)
450     (hu : IsLatticeUnit u lattice)
451     (hV : PreservesLattice V lattice) (hG : PreservesLattice G lattice) :
452     IsSeparationWeight pi (separator r V G) lattice s :=
453   separator_isSeparationWeight_of_unit_mul_pow_eq certificate hr.symm hu hV hG
454 
455 /-- Unit-aware denominator data supplies finiteness directly, without a redundant external
456 existence hypothesis. -/
457 theorem separator_hasFiniteSeparationWeight_of_unit_mul_pow_eq
458     (certificate : EvaluatedBezoutCertificate F G U V r) {pi : K} {s : ℕ} {u : Kˣ}
459     {lattice : AddSubgroup M} (hr : (u : K) * pi ^ s = r)
460     (hu : IsLatticeUnit u lattice)
461     (hV : PreservesLattice V lattice) (hG : PreservesLattice G lattice) :
462     HasFiniteSeparationWeight pi (separator r V G) lattice :=
463   ⟨s, separator_isSeparationWeight_of_unit_mul_pow_eq certificate hr hu hV hG⟩
464 
465 /-- Conventional-orientation finiteness theorem for `r = uπ^s`. -/
466 theorem separator_hasFiniteSeparationWeight_of_eq_unit_mul_pow
467     (certificate : EvaluatedBezoutCertificate F G U V r) {pi : K} {s : ℕ} {u : Kˣ}
468     {lattice : AddSubgroup M} (hr : r = (u : K) * pi ^ s)
469     (hu : IsLatticeUnit u lattice)
470     (hV : PreservesLattice V lattice) (hG : PreservesLattice G lattice) :
471     HasFiniteSeparationWeight pi (separator r V G) lattice :=
472   ⟨s, separator_isSeparationWeight_of_eq_unit_mul_pow certificate hr hu hV hG⟩
473 
474 /-- The canonical least weight obtained from unit-aware denominator data is at most its displayed
475 exponent. -/
476 theorem separator_separationWeight_le_of_unit_mul_pow_eq
477     (certificate : EvaluatedBezoutCertificate F G U V r) {pi : K} {s : ℕ} {u : Kˣ}
478     {lattice : AddSubgroup M} (hr : (u : K) * pi ^ s = r)
479     (hu : IsLatticeUnit u lattice)
480     (hV : PreservesLattice V lattice) (hG : PreservesLattice G lattice) :
481     separationWeight
482         (separator_hasFiniteSeparationWeight_of_unit_mul_pow_eq certificate hr hu hV hG) ≤ s := by
483   apply separationWeight_le_of_clears
484   exact separator_isSeparationWeight_of_unit_mul_pow_eq certificate hr hu hV hG
485 
486 /-- The canonical least separation weight associated to `r = uπ^s` is at most `s`. -/
487 theorem separator_separationWeight_le_of_eq_unit_mul_pow
488     (certificate : EvaluatedBezoutCertificate F G U V r) {pi : K} {s : ℕ} {u : Kˣ}
489     {lattice : AddSubgroup M} (hr : r = (u : K) * pi ^ s)
490     (hu : IsLatticeUnit u lattice)
491     (hV : PreservesLattice V lattice) (hG : PreservesLattice G lattice) :
492     separationWeight
493         (separator_hasFiniteSeparationWeight_of_eq_unit_mul_pow certificate hr hu hV hG) ≤ s := by
494   apply separationWeight_le_of_clears
495   exact separator_isSeparationWeight_of_eq_unit_mul_pow certificate hr hu hV hG
496 
497 /-- Consequently, any displayed denominator `pi^s = r` gives the manuscript's upper bound on the
498 actual minimal separation weight. -/
499 theorem separator_separationWeight_le_of_pow_eq
500     (certificate : EvaluatedBezoutCertificate F G U V r) {pi : K} {s : ℕ}
501     {lattice : AddSubgroup M}
502     (finite : HasFiniteSeparationWeight pi (separator r V G) lattice)
503     (hr : pi ^ s = r)
504     (hV : PreservesLattice V lattice) (hG : PreservesLattice G lattice) :
505     separationWeight finite ≤ s := by
506   apply separationWeight_le_of_clears finite
507   exact separator_isSeparationWeight_of_pow_eq certificate hr hV hG
508 
509 /-! ## Precision delay -/
510 
511 /-- Congruence modulo the scalar lattice `pi^n lattice`, expressed with an explicit witness. -/
512 def CongruentModLattice (pi : K) (lattice : AddSubgroup M) (n : ℕ) (x y : M) : Prop :=
513   ∃ z : M, z ∈ lattice ∧ x - y = (pi ^ n) • z
514 
515 /-- An `s`-digit denominator certificate turns `m+s` input digits into `m` output digits. -/
516 theorem projector_precision_delay {pi : K} {E : End (K := K) (M := M)}
517     {lattice : AddSubgroup M} {s m : ℕ}
518     (hweight : IsSeparationWeight pi E lattice s) {x y : M}
519     (hxy : CongruentModLattice pi lattice (m + s) x y) :
520     CongruentModLattice pi lattice m (E x) (E y) := by
521   rcases hxy with ⟨z, hz, hxy⟩
522   refine ⟨((pi ^ s) • E) z, hweight z hz, ?_⟩
523   rw [← map_sub, hxy, map_smul]
524   simp only [LinearMap.smul_apply, pow_add, smul_smul]
525 
526 end Komorebi.PaperII.ResultantSeparation

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: cd0b101b98a160df8dd0698a20015dbf2fa9f611c57fee38af4456e751bc6be7

Original source on GitHub

Back to Paper II: Refinement Towers, Weighted Transfer, and Integral Separation of Operator Packets