Paper I · Lean source
RegularMultiplicity.lean
4 claims linked to this Lean module
- Regular-module multiplicities · Read statement beside this module
- Semisimple seed-rank formula over arbitrary division rings · Read statement beside this module
- Full matrix algebra · Read statement beside this module
- Multiplicity obstruction · Read statement beside this module
These links follow the claim index. They do not extend the recorded proof or Lean coverage.
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 (1)
PaperICompletion8/RegularMultiplicity.lean208 lines
Original source path
formal/current/PaperICompletion8/RegularMultiplicity.leanSkip declarations and read code
1 import PaperICompletion8.DivisionProduct
2 import Mathlib.Algebra.DirectSum.Module
3 import Mathlib.RingTheory.SimpleModule.Basic
4
5 /-! Literal natural modules, column decompositions, and regular multiplicities.
6 The matrices act on the LEFT. Taking columns is an A-linear rearrangement of
7 coordinates, not the false assertion that transpose preserves multiplication. -/
8 set_option autoImplicit false
9 set_option linter.unusedSectionVars false
10
11 namespace Komorebi.PaperICompletion8.RegularMultiplicity
12
13 open scoped BigOperators DirectSum
14 open Komorebi.SeedRankBasics Komorebi.SeedRankOperations
15 open Komorebi.PaperICompletion8.DivisionProduct
16
17 universe u v
18
19 section Natural
20 variable {D : Type u} [DivisionRing D]
21 variable {n : ℕ}
22
23 /-- A nonzero vector generates the natural module over a division ring. -/
24 theorem natural_nonzero_generates {x : Fin n → D} (hx : x ≠ 0) :
25 Generates (Matrix (Fin n) (Fin n) D) (Fin n → D) {x} := by
26 rw [generates_singleton_iff_surjective]
27 obtain ⟨j, hj⟩ : ∃ j, x j ≠ 0 := by
28 by_contra h
29 apply hx
30 funext i
31 by_contra hi
32 exact h ⟨i, hi⟩
33 intro y
34 let A : Matrix (Fin n) (Fin n) D := fun i k ↦ if k = j then y i / x j else 0
35 refine ⟨A, ?_⟩
36 funext i
37 change (Matrix.mulVec A x) i = y i
38 simp [A, Matrix.mulVec, dotProduct, hj]
39
40 /-- The exact canonical seed rank on a positive-dimensional natural module. -/
41 theorem natural_seedRank_eq_one (hn : 0 < n) :
42 seedRank (Matrix (Fin n) (Fin n) D) (Fin n → D) = 1 := by
43 classical
44 let : Nonempty (Fin n) := ⟨⟨0, hn⟩⟩
45 let x : Fin n → D := Pi.single ⟨0, hn⟩ 1
46 have hx : x ≠ 0 := by
47 intro h
48 have hh := congrFun h ⟨0, hn⟩
49 simp [x] at hh
50 have hsurj := (generates_singleton_iff_surjective _ _ x).mp (natural_nonzero_generates hx)
51 let : Module.Finite (Matrix (Fin n) (Fin n) D) (Fin n → D) :=
52 Module.Finite.of_surjective (oneSeedMap _ _ x) hsurj
53 exact (seedRank_eq_one_iff_cyclic _ _).mpr ⟨x, natural_nonzero_generates hx⟩
54
55 section SingleMultiplicity
56 variable (d m : ℕ)
57 local instance (priority := 100) singleBlockAction :
58 Module (Matrix (Fin d) (Fin d) D) (Matrix (Fin d) (Fin m) D) :=
59 Matrix.Module.matrixModule
60
61 /-- A single rectangular multiplicity block is its family of natural columns. -/
62 def singleColumnsEquiv :
63 Matrix (Fin d) (Fin m) D ≃ₗ[Matrix (Fin d) (Fin d) D]
64 (Fin m → Fin d → D) where
65 toFun a j i := a i j
66 invFun x i j := x j i
67 left_inv _ := rfl
68 right_inv _ := rfl
69 map_add' _ _ := rfl
70 map_smul' a x := by
71 funext j i
72 change (∑ s, a i s • x s) j = ∑ s, a i s * x s j
73 simp
74
75 /-- Literal multiplicity formula for finite copies of a division-ring natural module. -/
76 theorem naturalCopies_seedRank (hd : 0 < d) :
77 seedRank (Matrix (Fin d) (Fin d) D) (Fin m → Fin d → D) =
78 ((m ⌈/⌉ d : ℕ) : Cardinal) := by
79 rw [← seedRank_linearEquiv (singleColumnsEquiv (D := D) d m)]
80 exact Komorebi.PaperICompletion8.DivisionBlock.oneBlock_seedRank_eq_ceilDiv hd
81
82 /-- The same exact formula with the printed finite direct sum rather than a product. -/
83 theorem naturalDirectSum_seedRank (hd : 0 < d) :
84 seedRank (Matrix (Fin d) (Fin d) D) (⨁ _ : Fin m, (Fin d → D)) =
85 ((m ⌈/⌉ d : ℕ) : Cardinal) := by
86 rw [seedRank_linearEquiv (DirectSum.linearEquivFunOnFintype
87 (Matrix (Fin d) (Fin d) D) (Fin m) (fun _ ↦ Fin d → D))]
88 exact naturalCopies_seedRank d m hd
89
90 end SingleMultiplicity
91
92 end Natural
93
94 section Product
95 variable {I : Type v} [Fintype I] [DecidableEq I]
96 variable {D : I → Type u} [∀ i, DivisionRing (D i)]
97 variable (d m : I → ℕ)
98
99 /-- The natural module of factor i, inflated along the actual coordinate projection. -/
100 abbrev Simple (i : I) := Fin (d i) → D i
101
102 /-- Scalar restriction along the coordinate ring homomorphism, not a central action. -/
103 scoped instance simpleModule (i : I) :
104 Module (DivisionProductAlgebra (D := D) d) (Simple (D := D) d i) :=
105 Module.compHom (Simple (D := D) d i)
106 (Pi.evalRingHom (fun j ↦ Matrix (Fin (d j)) (Fin (d j)) (D j)) i)
107
108 /-- The scalar action selects exactly the ith matrix factor. -/
109 theorem simple_smul (a : DivisionProductAlgebra (D := D) d)
110 (i : I) (x : Simple (D := D) d i) : a • x = Matrix.mulVec (a i) x := rfl
111
112 /-- The literal product of multiplicity copies of natural modules. -/
113 abbrev MultiplicityModule := ∀ i : I, Fin (m i) → Simple (D := D) d i
114
115 /-- Every nonzero vector of an inflated simple factor generates it. -/
116 theorem simple_nonzero_generates (i : I) {x : Simple (D := D) d i} (hx : x ≠ 0) :
117 Generates (DivisionProductAlgebra (D := D) d) (Simple (D := D) d i) {x} := by
118 rw [generates_singleton_iff_surjective]
119 have h := (generates_singleton_iff_surjective _ _ x).mp (natural_nonzero_generates hx)
120 intro y
121 obtain ⟨a, ha⟩ := h y
122 refine ⟨Pi.single i a, ?_⟩
123 simpa only [oneSeedMap_apply, simple_smul, Pi.single_eq_same, Matrix.smul_eq_mulVec] using ha
124
125 /-- The inflated natural module is genuinely simple when its matrix size is positive. -/
126 theorem simple_isSimple (i : I) (hd : 0 < d i) :
127 IsSimpleModule (DivisionProductAlgebra (D := D) d) (Simple (D := D) d i) := by
128 let : Nonempty (Fin (d i)) := ⟨⟨0, hd⟩⟩
129 apply isSimpleModule_iff_toSpanSingleton_surjective.mpr
130 refine ⟨inferInstance, ?_⟩
131 intro x hx
132 exact (generates_singleton_iff_surjective _ _ x).mp (simple_nonzero_generates d i hx)
133
134 /-- Other product factors act by zero on the ith simple module. -/
135 theorem other_factor_smul_zero (i j : I) (hji : j ≠ i)
136 (a : Matrix (Fin (d j)) (Fin (d j)) (D j)) (x : Simple (D := D) d i) :
137 (Pi.single j a : DivisionProductAlgebra (D := D) d) • x = 0 := by
138 rw [simple_smul]
139 simp [Pi.single_eq_of_ne hji.symm]
140
141 /-- Regular matrix-ring coordinates are literally its columns. -/
142 def regularColumnsEquiv :
143 DivisionProductAlgebra (D := D) d ≃ₗ[DivisionProductAlgebra (D := D) d]
144 MultiplicityModule (D := D) d d where
145 toFun a i j r := a i r j
146 invFun x i r j := x i j r
147 left_inv _ := rfl
148 right_inv _ := rfl
149 map_add' _ _ := rfl
150 map_smul' a b := by
151 funext i j r
152 change (a i * b i) r j = (Matrix.mulVec (a i) (fun s ↦ b i s j)) r
153 rfl
154
155 /-- The regular equivalence is a column rearrangement on every entry. -/
156 theorem regularColumnsEquiv_apply (a : DivisionProductAlgebra (D := D) d)
157 (i : I) (j r : Fin (d i)) : regularColumnsEquiv d a i j r = a i r j := rfl
158
159 /-- The product-to-finite-direct-sum equivalence keeps the inflated actions. -/
160 noncomputable def multiplicityDirectSumEquiv :
161 MultiplicityModule (D := D) d m ≃ₗ[DivisionProductAlgebra (D := D) d]
162 ⨁ i : I, (Fin (m i) → Simple (D := D) d i) :=
163 (DirectSum.linearEquivFunOnFintype (DivisionProductAlgebra (D := D) d) I
164 (fun i ↦ Fin (m i) → Simple (D := D) d i)).symm
165
166 /-- The printed regular-module multiplicity equivalence over arbitrary division rings. -/
167 noncomputable def regularDirectSumEquiv :
168 DivisionProductAlgebra (D := D) d ≃ₗ[DivisionProductAlgebra (D := D) d]
169 ⨁ i : I, (Fin (d i) → Simple (D := D) d i) :=
170 (regularColumnsEquiv d).trans (multiplicityDirectSumEquiv d d)
171
172 section Rectangular
173 local instance (priority := 100) blockModuleAction (i : I) :
174 Module (Matrix (Fin (d i)) (Fin (d i)) (D i))
175 (Matrix (Fin (d i)) (Fin (m i)) (D i)) := Matrix.Module.matrixModule
176
177 /-- Rectangular matrices are the literal multiplicity copies by columns. -/
178 def columnsEquiv :
179 DivisionProductModule (D := D) d m ≃ₗ[DivisionProductAlgebra (D := D) d]
180 MultiplicityModule (D := D) d m where
181 toFun a i j r := a i r j
182 invFun x i r j := x i j r
183 left_inv _ := rfl
184 right_inv _ := rfl
185 map_add' _ _ := rfl
186 map_smul' a x := by
187 funext i j r
188 change (∑ s, a i r s • x i s) j = ∑ s, a i r s * x i s j
189 simp
190
191 /-- The multiplicity seed formula is about natural-module copies, not just a matrix alias. -/
192 theorem multiplicity_seedRank (hd : ∀ i, 0 < d i) :
193 seedRank (DivisionProductAlgebra (D := D) d) (MultiplicityModule (D := D) d m) =
194 (maxCeilDiv d m : Cardinal) := by
195 rw [← seedRank_linearEquiv (columnsEquiv (D := D) d m)]
196 exact divisionProduct_seedRank_eq_maxCeilDiv d m hd
197
198 /-- The exact finite-direct-sum form of the multiplicity formula. -/
199 theorem directSum_seedRank (hd : ∀ i, 0 < d i) :
200 seedRank (DivisionProductAlgebra (D := D) d)
201 (⨁ i : I, (Fin (m i) → Simple (D := D) d i)) =
202 (maxCeilDiv d m : Cardinal) := by
203 rw [← seedRank_linearEquiv (multiplicityDirectSumEquiv (D := D) d m)]
204 exact multiplicity_seedRank d m hd
205
206 end Rectangular
207 end Product
208 end Komorebi.PaperICompletion8.RegularMultiplicity
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: 0127412d410f91519a3d7a6c1565305e7e4b8abf848301e13e14b5f807fd0c03
Back to Paper I: Typed Operator Systems, Seed Rank, and Exact Packet Coordinates