Paper II · Lean source
ReleaseGluingFinite.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.
Local imports (2)
KomorebiVerification/PaperII/ReleaseGluingFinite.lean106 lines
Original source path
formal/current/KomorebiVerification/PaperII/ReleaseGluingFinite.leanSkip declarations and read code
1 import KomorebiVerification.PaperII.ReleaseGluingDVR
2 import KomorebiVerification.PaperII.ReleaseGluingSmith
3
4 /-!
5 # Finiteness of the genuine gluing module
6
7 The split submodule is proved to be a full lattice. A finite uniform
8 clearing exponent also makes the actual gluing quotient finite length;
9 no finiteness of the residue field is required.
10 -/
11
12 set_option autoImplicit false
13 open scoped BigOperators
14
15 namespace Komorebi.PaperII.ReleaseGluing
16
17 universe u v w
18 variable {O : Type u} {K : Type v} {V : Type w}
19 variable [CommRing O] [IsDomain O] [IsDiscreteValuationRing O]
20 variable [Field K] [Algebra O K] [IsFractionRing O K]
21 variable [AddCommGroup V] [Module O V] [Module K V] [IsScalarTower O K V]
22 variable {I : Type*} [Fintype I]
23
24 /-- The actual finite sum of packet intersections is a full lattice. -/
25 theorem splitLattice_isLattice
26 {ι : Type*} [Fintype ι] (Λ : Submodule O V) [Submodule.IsLattice K Λ]
27 (b : Module.Basis ι O Λ) (pi : O) (hpi : Irreducible pi)
28 (P : Projectors K V I) :
29 Submodule.IsLattice K (splitLattice (P.restrictScalars (O := O)) Λ) := by
30 let Q := P.restrictScalars (O := O)
31 let finite := full_lattice_packet_clearing_exists Λ b pi hpi P
32 obtain ⟨s, hs⟩ := gluing_finite_exponent Q Λ pi finite
33 have hclear := (annihilates_gluing_iff Q Λ (pi ^ s)).mp hs
34 refine ⟨?_, ?_⟩
35 · have : IsNoetherian O (splitLattice Q Λ) :=
36 isNoetherian_of_le (splitLattice_le Q Λ)
37 rw [← Module.Finite.iff_fg]
38 infer_instance
39 · apply eq_top_iff.mpr
40 rw [← Submodule.IsLattice.span_eq_top (A := K) (M := Λ)]
41 apply Submodule.span_le.mpr
42 intro x hx
43 have hmem : (pi ^ s) • x ∈ Submodule.span K (splitLattice Q Λ : Set V) :=
44 Submodule.subset_span (hclear x hx)
45 have hn : algebraMap O K (pi ^ s) ≠ 0 :=
46 (map_ne_zero_iff (algebraMap O K) (IsFractionRing.injective O K)).mpr
47 (pow_ne_zero s hpi.ne_zero)
48 have hinv := (Submodule.span K (splitLattice Q Λ : Set V)).smul_mem
49 ((algebraMap O K (pi ^ s))⁻¹) hmem
50 rw [← algebraMap_smul K (pi ^ s) x, smul_smul, inv_mul_cancel₀ hn, one_smul] at hinv
51 exact hinv
52
53 /-- A finite basis and a uniform annihilator give finite length of an actual quotient. -/
54 theorem finiteLength_quotient_of_power_annihilates
55 {W : Type*} [AddCommGroup W] [Module O W]
56 {ι : Type*} [Fintype ι] [DecidableEq ι]
57 (S : Submodule O W) (b : Module.Basis ι O W)
58 (pi : O) (hpi : Irreducible pi) (s : ℕ)
59 (hann : ∀ z : W ⧸ S, (pi ^ s) • z = 0) :
60 IsFiniteLength O (W ⧸ S) := by
61 let f := smithCoordinateMap b pi (fun _ => s)
62 have hker : LinearMap.ker f ≤ S := by
63 intro x hx
64 have hdiv : ∀ i, pi ^ s ∣ b.repr x i := by
65 have hz : f x = 0 := hx
66 intro i
67 have hi := congrFun hz i
68 change (Ideal.span {pi ^ s}).mkQ (b.repr x i) = 0 at hi
69 rw [Submodule.mkQ_apply, Submodule.Quotient.mk_eq_zero, Ideal.mem_span_singleton] at hi
70 exact hi
71 rw [← b.sum_repr x]
72 apply S.sum_mem
73 intro i _hi
74 obtain ⟨c, hc⟩ := hdiv i
75 have ha := hann (S.mkQ (b i))
76 rw [← map_smul, Submodule.mkQ_apply, Submodule.Quotient.mk_eq_zero] at ha
77 rw [hc, mul_comm, mul_smul]
78 exact S.smul_mem c ha
79 have hlen : Module.length O (∀ _ : ι, O ⧸ Ideal.span {pi ^ s}) = ∑ _ : ι, (s : ℕ∞) := by
80 rw [Module.length_pi_of_fintype]
81 apply Finset.sum_congr rfl
82 intro i _hi
83 have heq : Ideal.span {pi ^ s} = IsLocalRing.maximalIdeal O ^ s := by
84 rw [hpi.maximalIdeal_eq, Ideal.span_singleton_pow]
85 rw [(Submodule.quotEquivOfEq _ _ heq).length_eq]
86 exact IsDiscreteValuationRing.length_quotient_pow_maximalIdeal (R := O) s
87 have hfinite : IsFiniteLength O (∀ _ : ι, O ⧸ Ideal.span {pi ^ s}) := by
88 apply Module.length_ne_top_iff.mp
89 rw [hlen, ← Nat.cast_sum]
90 exact ENat.natCast_ne_top _
91 have hsource : IsFiniteLength O (W ⧸ LinearMap.ker f) :=
92 (f.quotKerEquivOfSurjective (smithCoordinateMap_surjective b pi (fun _ => s))).symm.isFiniteLength hfinite
93 exact hsource.of_surjective (Submodule.factor_surjective hker)
94
95 /-- The manuscript's gluing module is finite length for every full DVR lattice. -/
96 theorem dvr_gluing_finiteLength
97 {ι : Type*} [Fintype ι] (Λ : Submodule O V) [Submodule.IsLattice K Λ]
98 (b : Module.Basis ι O Λ) (pi : O) (hpi : Irreducible pi)
99 (P : Projectors K V I) :
100 IsFiniteLength O (GluingModule (P.restrictScalars (O := O)) Λ) := by
101 classical
102 let finite := full_lattice_packet_clearing_exists Λ b pi hpi P
103 obtain ⟨s, hs⟩ := gluing_finite_exponent (P.restrictScalars (O := O)) Λ pi finite
104 exact finiteLength_quotient_of_power_annihilates _ b pi hpi s hs
105
106 end Komorebi.PaperII.ReleaseGluing
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: 5f2999d006c15dae8f17ee1b3ee886c4136fff86279da28390cf07371abb64b6
Back to Paper II: Refinement Towers, Weighted Transfer, and Integral Separation of Operator Packets