Paper XII · Lean source

TruncatedGroupAlgebra.lean

Inherited / related evidence Coverage and evidence

The edition relies on earlier or related formal evidence. That evidence is not a fresh full-edition replay.

This viewer reads the retained source; it does not run Lean or assign new claim mappings.

Local imports (1)

PaperXII/TruncatedGroupAlgebra.lean297 lines

Original source pathcore/publication/source/lean_guide/formal_release/lean/PaperXII/TruncatedGroupAlgebra.lean
Skip declarations and read code

Skip source text

1 import PaperXII.ResidualAugmentation
2 import Mathlib.Algebra.CharP.Lemmas
3 import Mathlib.Algebra.CharP.Algebra
4 import Mathlib.Algebra.MvPolynomial.CommRing
5 import Mathlib.RingTheory.MvPolynomial.Basic
6 import Mathlib.RingTheory.MvPolynomial.Ideal
7 import Mathlib.Data.ZMod.Basic
8 import Mathlib.Algebra.BigOperators.Group.Finset.Pi
9 
10 set_option autoImplicit false
11 
12 /-! Paper XII, Theorem 5.2: explicit multivariable residual group-algebra presentation. -/
13 namespace PaperXII.TruncatedGroupAlgebra
14 
15 open scoped BigOperators MonoidAlgebra
16 
17 variable {k ι : Type*} [CommRing k] [Fintype ι] [DecidableEq ι]
18 variable (p : ℕ) [Fact p.Prime] [CharP k p] (n : ι → ℕ)
19 
20 /-- The actual product of cyclic groups in the chosen decomposition. -/
21 abbrev Delta := ∀ i, Multiplicative (ZMod (p ^ n i))
22 
23 /-- The standard generator of the indicated cyclic factor. -/
24 def gamma (i : ι) : Delta p n := Pi.mulSingle i (Multiplicative.ofAdd 1)
25 
26 /-- The ideal of the actual multivariable truncation relations. -/
27 noncomputable def relations : Ideal (MvPolynomial ι k) :=
28   Ideal.span (Set.range fun i => (MvPolynomial.X i : MvPolynomial ι k) ^ (p ^ n i))
29 
30 abbrev Truncated := MvPolynomial ι k ⧸ relations (k := k) p n
31 
32 omit [Fintype ι] [Fact p.Prime] in
33 theorem gamma_pow (i : ι) : gamma p n i ^ (p ^ n i) = 1 := by
34   rw [gamma, ← Pi.mulSingle_pow]
35   have h : Multiplicative.ofAdd (1 : ZMod (p ^ n i)) ^ (p ^ n i) = 1 := by
36     change (p ^ n i) • (1 : ZMod (p ^ n i)) = 0
37     simp [nsmul_eq_mul]
38   rw [h, Pi.mulSingle_one]
39 
40 /-- Polynomial evaluation at the augmentation generators. -/
41 noncomputable def presentation : MvPolynomial ι k →ₐ[k] k[Delta p n] :=
42   MvPolynomial.aeval fun i => MonoidAlgebra.single (gamma p n i) 1 - 1
43 
44 omit [Fintype ι] [Fact p.Prime] [CharP k p] in
45 theorem presentation_X (i : ι) :
46     presentation (k := k) p n (MvPolynomial.X i) =
47       MonoidAlgebra.single (gamma p n i) 1 - 1 := by
48   simp [presentation]
49 
50 omit [Fintype ι] in
51 theorem presentation_relation (i : ι) :
52     presentation (k := k) p n (MvPolynomial.X i ^ (p ^ n i)) = 0 := by
53   let : CharP k[Delta p n] p := charP_of_injective_algebraMap' k p
54   rw [map_pow, presentation_X, sub_pow_char_pow]
55   simp [MonoidAlgebra.single_pow, gamma_pow, ← MonoidAlgebra.one_def]
56 
57 omit [Fintype ι] in
58 theorem relations_le_ker :
59     relations (k := k) p n ≤ RingHom.ker (presentation (k := k) p n).toRingHom := by
60   rw [relations, Ideal.span_le]
61   rintro _ ⟨i, rfl⟩
62   exact presentation_relation p n i
63 
64 /-- The forward map from the actual truncated polynomial quotient. -/
65 noncomputable def forward : Truncated (k := k) p n →ₐ[k] k[Delta p n] :=
66   Ideal.Quotient.liftₐ _ (presentation p n) (fun _ h => relations_le_ker p n h)
67 
68 omit [Fintype ι] in
69 theorem forward_mk (f : MvPolynomial ι k) :
70     forward p n (Ideal.Quotient.mk _ f) = presentation p n f := rfl
71 
72 /-- The image of one plus a polynomial variable. -/
73 noncomputable def onePlusX (i : ι) : Truncated (k := k) p n :=
74   1 + Ideal.Quotient.mk _ (MvPolynomial.X i)
75 
76 omit [Fintype ι] [DecidableEq ι] in
77 theorem onePlusX_pow (i : ι) : onePlusX (k := k) p n i ^ (p ^ n i) = 1 := by
78   rw [onePlusX, ← map_one (Ideal.Quotient.mk (relations (k := k) p n)),
79     ← map_add, ← map_pow, add_pow_char_pow, one_pow, map_add, map_one]
80   have h : (MvPolynomial.X i : MvPolynomial ι k) ^ (p ^ n i) ∈ relations p n :=
81     Ideal.subset_span ⟨i, rfl⟩
82   rw [Ideal.Quotient.eq_zero_iff_mem.mpr h, add_zero]
83 
84 /-- A cyclic factor acts by powers of any element with the required relation. -/
85 noncomputable def cyclicMap {A : Type*} [Monoid A] (N : ℕ) [NeZero N]
86     (b : A) (h : b ^ N = 1) : Multiplicative (ZMod N) →* A where
87   toFun g := b ^ g.toAdd.val
88   map_one' := by simp
89   map_mul' g h' := by
90     change b ^ (g.toAdd + h'.toAdd).val = b ^ g.toAdd.val * b ^ h'.toAdd.val
91     rw [ZMod.val_add, ← pow_eq_pow_mod _ h, pow_add]
92 
93 theorem cyclicMap_generator {A : Type*} [Monoid A] (N : ℕ) [NeZero N]
94     (b : A) (h : b ^ N = 1) : cyclicMap N b h (Multiplicative.ofAdd 1) = b := by
95   change b ^ (1 : ZMod N).val = b
96   rw [ZMod.val_one_eq_one_mod, ← pow_eq_pow_mod _ h, pow_one]
97 
98 /-- The explicit monoid map underlying the inverse presentation. -/
99 noncomputable def groupMap : Delta p n →* Truncated (k := k) p n where
100   toFun g := ∏ i, cyclicMap (p ^ n i) (onePlusX p n i) (onePlusX_pow p n i) (g i)
101   map_one' := by simp
102   map_mul' g h := by simp [Finset.prod_mul_distrib]
103 
104 theorem groupMap_gamma (i : ι) :
105     groupMap (k := k) p n (gamma p n i) = onePlusX p n i := by
106   change (∏ j, cyclicMap (p ^ n j) (onePlusX p n j) (onePlusX_pow p n j)
107     (gamma p n i j)) = _
108   rw [Finset.prod_eq_single i]
109   · rw [gamma, Pi.mulSingle_eq_same, cyclicMap_generator]
110   · intro j _ hj
111     rw [gamma, Pi.mulSingle_eq_of_ne hj, map_one]
112   · simp
113 
114 /-- The inverse sends each group basis element to its explicit product of powers. -/
115 noncomputable def backward : k[Delta p n] →ₐ[k] Truncated (k := k) p n :=
116   MonoidAlgebra.lift k _ _ (groupMap p n)
117 
118 omit [DecidableEq ι] in
119 theorem backward_single (g : Delta p n) (a : k) :
120     backward p n (MonoidAlgebra.single g a) = a • groupMap p n g := by
121   simp [backward]
122 
123 theorem backward_presentation :
124     (backward (k := k) p n).comp (presentation p n) =
125       Ideal.Quotient.mkₐ k (relations p n) := by
126   ext i
127   simp [AlgHom.comp_apply, presentation_X, backward_single, groupMap_gamma, onePlusX]
128 
129 /-- Every group element is the product of the selected generators to its residue exponents. -/
130 theorem group_decomposition (g : Delta p n) :
131     (∏ i, gamma p n i ^ (g i).toAdd.val) = g := by
132   ext j
133   simp only [Finset.prod_apply, Pi.pow_apply]
134   rw [Finset.prod_eq_single j]
135   · simp only [gamma, Pi.mulSingle_eq_same]
136     change Multiplicative.ofAdd ((g j).toAdd.val • (1 : ZMod (p ^ n j))) = g j
137     simp [nsmul_eq_mul]
138   · intro i _ hij
139     rw [gamma, Pi.mulSingle_eq_of_ne (Ne.symm hij), one_pow]
140   · simp
141 
142 omit [Fintype ι] in
143 theorem forward_onePlusX (i : ι) :
144     forward (k := k) p n (onePlusX p n i) = MonoidAlgebra.single (gamma p n i) 1 := by
145   simp [onePlusX, forward_mk, presentation_X]
146 
147 theorem forward_groupMap (g : Delta p n) :
148     forward (k := k) p n (groupMap p n g) = MonoidAlgebra.single g 1 := by
149   change forward p n (∏ i, onePlusX p n i ^ (g i).toAdd.val) = _
150   simp only [map_prod, map_pow, forward_onePlusX, MonoidAlgebra.single_pow, one_pow]
151   rw [MonoidAlgebra.prod_single, group_decomposition]
152   simp
153 
154 theorem forward_backward :
155     (forward (k := k) p n).comp (backward p n) = AlgHom.id k k[Delta p n] := by
156   apply MonoidAlgebra.algHom_ext
157   · intro g
158     simp [AlgHom.comp_apply, backward_single, forward_groupMap]
159   · ext
160 
161 theorem backward_forward :
162     (backward (k := k) p n).comp (forward p n) =
163       AlgHom.id k (Truncated (k := k) p n) := by
164   ext x
165   obtain ⟨f, rfl⟩ := Ideal.Quotient.mk_surjective x
166   exact DFunLike.congr_fun (backward_presentation (k := k) p n) f
167 
168 /-- The full multivariable quotient presentation, with an explicitly proved inverse. -/
169 noncomputable def truncatedPolynomialEquiv :
170     Truncated (k := k) p n ≃ₐ[k] k[Delta p n] :=
171   AlgEquiv.ofAlgHom (forward p n) (backward p n) (forward_backward p n) (backward_forward p n)
172 
173 /-- The presentation sends each actual residue variable to the selected group generator minus one. -/
174 theorem truncatedPolynomialEquiv_X (i : ι) :
175     truncatedPolynomialEquiv (k := k) p n (Ideal.Quotient.mk _ (MvPolynomial.X i)) =
176       MonoidAlgebra.single (gamma p n i) 1 - 1 := by
177   exact presentation_X p n i
178 
179 omit [Fintype ι] [DecidableEq ι] in
180 /-- Zero constant coefficient is equivalent to membership in the variable ideal. -/
181 theorem constantCoeff_ker :
182     RingHom.ker (MvPolynomial.constantCoeff : MvPolynomial ι k →+* k) =
183       Ideal.span (Set.range (MvPolynomial.X : ι → MvPolynomial ι k)) := by
184   classical
185   ext f
186   rw [← Set.image_univ, MvPolynomial.mem_ideal_span_X_image]
187   change f.coeff 0 = 0 ↔ _
188   constructor
189   · intro hf m hm
190     have hm0 : m ≠ 0 := by
191       intro heq
192       subst m
193       exact (MvPolynomial.mem_support_iff.mp hm) hf
194     obtain ⟨i, hi⟩ := Finsupp.ne_iff.mp hm0
195     exact ⟨i, Set.mem_univ _, hi⟩
196   · intro hf
197     by_contra h
198     obtain ⟨i, _, hi⟩ := hf 0 (MvPolynomial.mem_support_iff.mpr h)
199     exact hi rfl
200 
201 omit [Fintype ι] [Fact p.Prime] [CharP k p] in
202 /-- Augmentation after polynomial presentation is the actual constant-coefficient map. -/
203 theorem augmentation_presentation :
204     (AuxiliaryGroupAlgebra.augmentation (R := k) (G := Delta p n)).toRingHom.comp
205       (presentation p n).toRingHom = MvPolynomial.constantCoeff := by
206   apply MvPolynomial.ringHom_ext
207   · intro a
208     simp [presentation, AuxiliaryGroupAlgebra.augmentation_single]
209   · intro i
210     simp [presentation_X, AuxiliaryGroupAlgebra.augmentation_single]
211 
212 /-- The selected augmentation generators generate the whole augmentation ideal. -/
213 theorem augmentationIdeal_eq :
214     AuxiliaryGroupAlgebra.augmentationIdeal (R := k) (G := Delta p n) =
215       Ideal.span (Set.range fun i => (MonoidAlgebra.single (gamma p n i) 1 - 1 : k[Delta p n])) := by
216   have hs : Function.Surjective (presentation (k := k) p n) := by
217     intro x
218     obtain ⟨y, hy⟩ := (truncatedPolynomialEquiv (k := k) p n).surjective x
219     obtain ⟨f, rfl⟩ := Ideal.Quotient.mk_surjective y
220     exact ⟨f, hy⟩
221   have hc : (AuxiliaryGroupAlgebra.augmentationIdeal (R := k) (G := Delta p n)).comap
222       (presentation p n).toRingHom = Ideal.span (Set.range (MvPolynomial.X : ι → MvPolynomial ι k)) := by
223     rw [AuxiliaryGroupAlgebra.augmentationIdeal, RingHom.comap_ker,
224       augmentation_presentation, constantCoeff_ker]
225   rw [← Ideal.map_comap_of_surjective (presentation p n).toRingHom hs
226     (AuxiliaryGroupAlgebra.augmentationIdeal (R := k) (G := Delta p n)), hc,
227     Ideal.map_span, ← Set.range_comp]
228   congr 2
229   funext i
230   exact presentation_X p n i
231 
232 /-- The canonical finite product has the required p-power order. -/
233 theorem delta_isPGroup : IsPGroup p (Delta p n) := by
234   apply IsPGroup.of_card (n := ∑ i, n i)
235   simp [Nat.card_eq_fintype_card, Delta, Fintype.card_pi, ← Finset.prod_pow_eq_pow_sum]
236 
237 variable {G : Type*} [CommGroup G]
238 
239 /-- Transport the explicit presentation along the supplied product decomposition. -/
240 noncomputable def equivalenceOfDecomposition (e : G ≃* Delta p n) :
241     Truncated (k := k) p n ≃ₐ[k] k[G] :=
242   (truncatedPolynomialEquiv p n).trans (MonoidAlgebra.domCongr k k e.symm)
243 
244 /-- The transported variables are precisely the chosen generators minus one. -/
245 theorem equivalenceOfDecomposition_X (e : G ≃* Delta p n) (i : ι) :
246     equivalenceOfDecomposition (k := k) p n e (Ideal.Quotient.mk _ (MvPolynomial.X i)) =
247       MonoidAlgebra.single (e.symm (gamma p n i)) 1 - 1 := by
248   simp [equivalenceOfDecomposition, truncatedPolynomialEquiv_X]
249 
250 omit [Fintype ι] [DecidableEq ι] [Fact p.Prime] [CharP k p] in
251 /-- Augmentation commutes with the chosen decomposition. -/
252 theorem augmentation_decomposition (e : G ≃* Delta p n) :
253     (AuxiliaryGroupAlgebra.augmentation (R := k) (G := G)).toRingHom.comp
254       (MonoidAlgebra.domCongr k k e.symm).toRingHom =
255         (AuxiliaryGroupAlgebra.augmentation (R := k) (G := Delta p n)).toRingHom := by
256   have h := AuxiliaryGroupAlgebra.augmentation_transfer (R := k) e.symm.toMonoidHom
257   exact congrArg AlgHom.toRingHom h
258 
259 /-- The chosen generators span the augmentation kernel after transport. -/
260 theorem augmentationIdeal_eq_of_decomposition (e : G ≃* Delta p n) :
261     AuxiliaryGroupAlgebra.augmentationIdeal (R := k) (G := G) =
262       Ideal.span (Set.range fun i => (MonoidAlgebra.single (e.symm (gamma p n i)) 1 - 1 : k[G])) := by
263   have hc : (AuxiliaryGroupAlgebra.augmentationIdeal (R := k) (G := G)).comap
264       (MonoidAlgebra.domCongr k k e.symm).toRingHom =
265         AuxiliaryGroupAlgebra.augmentationIdeal (R := k) (G := Delta p n) := by
266     rw [AuxiliaryGroupAlgebra.augmentationIdeal, RingHom.comap_ker,
267       augmentation_decomposition]
268   rw [← Ideal.map_comap_of_surjective (MonoidAlgebra.domCongr k k e.symm).toRingHom
269     (MonoidAlgebra.domCongr k k e.symm).surjective
270     (AuxiliaryGroupAlgebra.augmentationIdeal (R := k) (G := G)), hc,
271     augmentationIdeal_eq, Ideal.map_span, ← Set.range_comp]
272   congr 2
273   funext i
274   simp
275 
276 variable {K : Type*} [Field K] [CharP K p]
277 
278 /-- Locality for the actual group algebra with the supplied cyclic decomposition. -/
279 theorem isLocalRing_of_decomposition (e : G ≃* Delta p n) : IsLocalRing K[G] :=
280   ResidualAugmentation.isLocalRing ((delta_isPGroup p n).of_equiv e.symm)
281 
282 /-- Paper XII, Theorem 5.2: the full presentation, chosen-generator identities,
283 augmentation-ideal equality, and locality. No positive-rank or nontrivial-factor hypothesis
284 is needed. The inverse equivalence is proved above rather than supplied as an assumption. -/
285 theorem residual_augmentation_algebra (e : G ≃* Delta p n) :
286     (∃ E : Truncated (k := K) p n ≃ₐ[K] K[G],
287       ∀ i, E (Ideal.Quotient.mk _ (MvPolynomial.X i)) =
288         MonoidAlgebra.single (e.symm (gamma p n i)) 1 - 1) ∧
289     AuxiliaryGroupAlgebra.augmentationIdeal (R := K) (G := G) =
290       Ideal.span (Set.range fun i =>
291         (MonoidAlgebra.single (e.symm (gamma p n i)) 1 - 1 : K[G])) ∧
292     IsLocalRing K[G] := by
293   refine ⟨⟨equivalenceOfDecomposition p n e, equivalenceOfDecomposition_X p n e⟩, ?_,
294     isLocalRing_of_decomposition p n e⟩
295   exact augmentationIdeal_eq_of_decomposition p n e
296 
297 end PaperXII.TruncatedGroupAlgebra

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: 676626c8a833d93839711162312db77f1f852c8e4912123d28c46a7f09f8ec43

Original source on GitHub

Back to Paper XII: Patching Support, Hecke Packets, and Conditional Automorphic Completion