Skip to content

Commit 48541a8

Browse files
committed
feat(RepresentationTheory/Homological): add standard resolution for finite cyclic groups (#27363)
Let `k` be a commutative ring and `G` a finite commutative group. Given `g : G` and `A : Rep k G`, we can define a periodic chain complex in `Rep k G` given by `... ⟶ A --N--> A --(ρ(g) - 𝟙)--> A --N--> A --(ρ(g) - 𝟙)--> A ⟶ 0` where `N` is the norm map sending `a : A` to `∑ ρ(g)(a)` for all `g` in `G`. When `G` is generated by `g` and `A` is the left regular representation `k[G]`, this chain complex is a projective resolution of `k` as a trivial representation, which we prove in this PR.
1 parent ca55add commit 48541a8

File tree

3 files changed

+225
-0
lines changed

3 files changed

+225
-0
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5371,6 +5371,7 @@ import Mathlib.RepresentationTheory.GroupCohomology.Functoriality
53715371
import Mathlib.RepresentationTheory.GroupCohomology.Hilbert90
53725372
import Mathlib.RepresentationTheory.GroupCohomology.LowDegree
53735373
import Mathlib.RepresentationTheory.GroupCohomology.Resolution
5374+
import Mathlib.RepresentationTheory.Homological.FiniteCyclic
53745375
import Mathlib.RepresentationTheory.Homological.GroupCohomology.Basic
53755376
import Mathlib.RepresentationTheory.Homological.GroupCohomology.Functoriality
53765377
import Mathlib.RepresentationTheory.Homological.GroupCohomology.Hilbert90
Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
/-
2+
Copyright (c) 2025 Amelia Livingston. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Amelia Livingston
5+
-/
6+
import Mathlib.Algebra.Homology.AlternatingConst
7+
import Mathlib.Algebra.Homology.ShortComplex.ModuleCat
8+
import Mathlib.CategoryTheory.Preadditive.Projective.Resolution
9+
import Mathlib.GroupTheory.OrderOfElement
10+
import Mathlib.RepresentationTheory.Coinvariants
11+
12+
/-!
13+
# Projective resolution of `k` as a trivial `k`-linear representation of a finite cyclic group
14+
15+
Let `k` be a commutative ring and `G` a finite commutative group. Given `g : G` and `A : Rep k G`,
16+
we can define a periodic chain complex in `Rep k G` given by
17+
`... ⟶ A --N--> A --(ρ(g) - 𝟙)--> A --N--> A --(ρ(g) - 𝟙)--> A ⟶ 0`
18+
where `N` is the norm map sending `a : A` to `∑ ρ(g)(a)` for all `g` in `G`.
19+
20+
When `G` is generated by `g` and `A` is the left regular representation `k[G]`, this chain complex
21+
is a projective resolution of `k` as a trivial representation, which we prove here.
22+
23+
## Main definitions
24+
25+
* `Rep.FiniteCyclicGroup.resolution k g hg`: given a finite cyclic group `G` generated by `g : G`,
26+
this is the projective resolution of `k` as a trivial `k`-linear `G`-representation given by
27+
periodic complex
28+
`... ⟶ k[G] --N--> k[G] --(ρ(g) - 𝟙)--> k[G] --N--> k[G] --(ρ(g) - 𝟙)--> k[G] ⟶ 0` where `ρ` is
29+
the left regular representation and `N` is the norm map.
30+
31+
## TODO
32+
33+
* Use this to analyse the group (co)homology of representations of finite cyclic groups.
34+
35+
-/
36+
37+
universe v u
38+
39+
open CategoryTheory Finsupp
40+
41+
namespace Representation.FiniteCyclicGroup
42+
43+
variable {k G V : Type*} [CommRing k] [Group G] [Fintype G] {V : Type*} [AddCommGroup V]
44+
[Module k V] (ρ : Representation k G V) (g : G)
45+
46+
lemma coinvariantsKer_eq_range (hg : ∀ x, x ∈ Subgroup.zpowers g) :
47+
Coinvariants.ker ρ = LinearMap.range (ρ g - LinearMap.id) := by
48+
refine le_antisymm (Submodule.span_le.2 ?_) ?_
49+
· rintro a ⟨⟨γ, α⟩, rfl⟩
50+
rcases mem_powers_iff_mem_zpowers.2 (hg γ) with ⟨i, rfl⟩
51+
induction i with | zero => exact ⟨0, by simp⟩ | succ n _ =>
52+
use (Fin.partialSum (fun (j : Fin (n + 1)) => ρ (g ^ (j : ℕ)) α) (Fin.last _))
53+
simpa using ρ.apply_sub_id_partialSum_eq _ _ _
54+
· rintro x ⟨y, rfl⟩
55+
simpa using Coinvariants.sub_mem_ker g y
56+
57+
/-- Given a finite cyclic group `G` generated by `g` and a `G` representation `(V, ρ)`, `V_G` is
58+
isomorphic to `V ⧸ Im(ρ(g - 1))`. -/
59+
noncomputable def coinvariantsEquiv (hg : ∀ x, x ∈ Subgroup.zpowers g) :
60+
ρ.Coinvariants ≃ₗ[k] (_ ⧸ LinearMap.range (ρ g - LinearMap.id)) :=
61+
Submodule.quotEquivOfEq _ _ (coinvariantsKer_eq_range ρ g hg)
62+
63+
lemma coinvariantsKer_leftRegular_eq_ker :
64+
Coinvariants.ker (Representation.leftRegular k G) =
65+
LinearMap.ker (linearCombination k (fun _ => (1 : k))) := by
66+
refine le_antisymm (Submodule.span_le.2 ?_) fun x hx => ?_
67+
· rintro x ⟨⟨g, y⟩, rfl⟩
68+
simpa [linearCombination, sub_eq_zero, sum_fintype]
69+
using Finset.sum_bijective _ (Group.mulLeft_bijective g⁻¹) (by aesop) (by aesop)
70+
· have : x = x.sum (fun g r => single g r - single 1 r) := by
71+
ext g
72+
by_cases hg : g = 1
73+
· simp_all [linearCombination, sum_apply']
74+
· simp_all [sum_apply']
75+
rw [this]
76+
exact Submodule.finsuppSum_mem _ _ _ _ fun g _ =>
77+
Coinvariants.mem_ker_of_eq g (single 1 (x g)) _ (by simp)
78+
79+
end Representation.FiniteCyclicGroup
80+
81+
namespace Rep.FiniteCyclicGroup
82+
83+
variable (k : Type u) {G : Type u} [CommRing k] [CommGroup G] [Fintype G] (A : Rep k G) (g : G)
84+
85+
namespace leftRegular
86+
87+
open Finsupp IsCyclic Representation
88+
89+
lemma range_norm_eq_ker_applyAsHom_sub (hg : ∀ x, x ∈ Subgroup.zpowers g) :
90+
LinearMap.range (leftRegular k G).norm.hom.hom =
91+
LinearMap.ker (applyAsHom (leftRegular k G) g - 𝟙 _).hom.hom :=
92+
le_antisymm (fun _ ⟨_, h⟩ => by simp_all [← h]) fun x hx => ⟨single 1 (x g), by
93+
ext j; simpa [Representation.norm] using (apply_eq_of_leftRegular_eq_of_generator g hg _
94+
(by simpa [sub_eq_zero] using hx) j).symm⟩
95+
96+
lemma range_applyAsHom_sub_eq_ker_linearCombination (hg : ∀ x, x ∈ Subgroup.zpowers g) :
97+
LinearMap.range (applyAsHom (leftRegular k G) g - 𝟙 _).hom.hom =
98+
LinearMap.ker (linearCombination k (fun _ => (1 : k))) := by
99+
simp [← FiniteCyclicGroup.coinvariantsKer_eq_range _ _ hg,
100+
← FiniteCyclicGroup.coinvariantsKer_leftRegular_eq_ker]
101+
102+
lemma range_applyAsHom_sub_eq_ker_norm (hg : ∀ x, x ∈ Subgroup.zpowers g) :
103+
LinearMap.range (applyAsHom (leftRegular k G) g - 𝟙 _).hom.hom =
104+
LinearMap.ker (leftRegular k G).norm.hom.hom := by
105+
simp [ker_leftRegular_norm_eq, ← range_applyAsHom_sub_eq_ker_linearCombination k g hg]
106+
107+
end leftRegular
108+
109+
/-- Given a finite group `G` and `g : G`, this is the functor `Rep k G ⥤ ChainComplex (Rep k G) ℕ`
110+
sending `A : Rep k G` to the periodic chain complex in `Rep k G` given by
111+
`... ⟶ A --N--> A --(ρ(g) - 𝟙)--> A --N--> A --(ρ(g) - 𝟙)--> A ⟶ 0`
112+
where `N` is the norm map. When `G` is generated by `g` and `A` is the left regular representation
113+
`k[G]`, it is a projective resolution of `k` as a trivial representation.
114+
115+
It sends a morphism `f : A ⟶ B` to the chain morphism defined by `f` in every degree. -/
116+
@[simps]
117+
noncomputable def chainComplexFunctor : Rep k G ⥤ ChainComplex (Rep k G) ℕ where
118+
obj A := HomologicalComplex.alternatingConst A (φ := A.norm) (ψ := applyAsHom A g - 𝟙 A)
119+
(by ext; simp) (by ext; simp) fun _ _ => ComplexShape.down_nat_odd_add
120+
map f := {
121+
f i := f
122+
comm' := by
123+
rintro i j ⟨rfl⟩
124+
by_cases hj : Even (j + 1)
125+
· simp [if_pos hj, norm_comm]
126+
· simp [if_neg hj, applyAsHom_comm] }
127+
map_id _ := rfl
128+
map_comp _ _ := rfl
129+
130+
variable {k}
131+
132+
/-- Given a finite cyclic group `G` generated by `g : G` and a `k`-linear `G`-representation `A`,
133+
this is the short complex in `ModuleCat k` given by `A --N--> A --(ρ(g) - 𝟙)--> A`
134+
where `N` is the norm map. Its homology is `Hⁱ(G, A)` for even `i` and `Hᵢ(G, A)` for odd `i`. -/
135+
noncomputable abbrev normHomCompSub : ShortComplex (ModuleCat k) :=
136+
ShortComplex.mk A.norm.hom (applyAsHom A g - 𝟙 A).hom (by ext; simp)
137+
138+
/-- Given a finite cyclic group `G` generated by `g : G` and a `k`-linear `G`-representation `A`,
139+
this is the short complex in `ModuleCat k` given by `A --N--> A --(ρ(g) - 𝟙)--> A`
140+
where `N` is the norm map. Its homology is `Hⁱ(G, A)` for even `i` and `Hᵢ(G, A)` for odd `i`. -/
141+
noncomputable abbrev subCompNormHom : ShortComplex (ModuleCat k) :=
142+
ShortComplex.mk (applyAsHom A g - 𝟙 A).hom A.norm.hom (by ext; simp)
143+
144+
/-- Given a finite cyclic group `G` generated by `g : G` and a `k`-linear `G`-representation `A`,
145+
this is the periodic chain complex in `ModuleCat k` given by
146+
`... ⟶ A --N--> A --(ρ(g) - 𝟙)--> A --N--> A --(ρ(g) - 𝟙)--> A ⟶ 0` where `N` is the norm map.
147+
Its homology is the group homology of `A`. -/
148+
noncomputable abbrev moduleCatChainComplex : ChainComplex (ModuleCat k) ℕ :=
149+
HomologicalComplex.alternatingConst A.V (φ := A.norm.hom) (ψ := (applyAsHom A g - 𝟙 A).hom)
150+
(by ext; simp) (by ext; simp) fun _ _ => ComplexShape.down_nat_odd_add
151+
152+
/-- Given a finite cyclic group `G` generated by `g : G` and a `k`-linear `G`-representation `A`,
153+
this is the periodic chain complex in `Rep k G` given by
154+
`0 ⟶ A --(ρ(g) - 𝟙)--> A --N--> A --(ρ(g) - 𝟙)--> A --N--> A ⟶ ...` where `N` is the norm map.
155+
Its cohomology is the group cohomology of `A`. -/
156+
noncomputable abbrev moduleCatCochainComplex : CochainComplex (ModuleCat k) ℕ :=
157+
HomologicalComplex.alternatingConst A.V (φ := (applyAsHom A g - 𝟙 A).hom) (ψ := A.norm.hom)
158+
(by ext; simp) (by ext; simp) fun _ _ => ComplexShape.up_nat_odd_add
159+
160+
variable (k)
161+
162+
/-- Given a finite cyclic group `G` generated by `g : G`, let `P` denote the periodic chain complex
163+
of `k`-linear `G`-representations given by
164+
`... ⟶ k[G] --N--> k[G] --(ρ(g) - 𝟙)--> k[G] --N--> k[G] --(ρ(g) - 𝟙)--> k[G] ⟶ 0` where `ρ` is
165+
the left regular representation and `N` is the norm map. This is the chain morphism from `P` to
166+
the chain complex concentrated at 0 by the trivial representation `k` used to show `P` is a
167+
projective resolution of `k`. It sends `x : k[G]` to the sum of its coefficients. -/
168+
@[simps!]
169+
noncomputable def resolution.π (g : G) :
170+
(chainComplexFunctor k g).obj (leftRegular k G) ⟶
171+
(ChainComplex.single₀ (Rep k G)).obj (trivial k G k) :=
172+
(((chainComplexFunctor k g).obj (leftRegular k G)).toSingle₀Equiv _).symm
173+
⟨leftRegularHom _ 1, (leftRegularHomEquiv _).injective <| by simp [leftRegularHomEquiv]⟩
174+
175+
lemma resolution_quasiIso (g : G) (hg : ∀ x, x ∈ Subgroup.zpowers g) :
176+
QuasiIso (resolution.π k g) where
177+
quasiIsoAt m := by
178+
induction m with
179+
| zero =>
180+
simp only [resolution.π]
181+
rw [ChainComplex.quasiIsoAt₀_iff, ShortComplex.quasiIso_iff_of_zeros' _ rfl rfl rfl]
182+
constructor
183+
· apply (Action.forget (ModuleCat k) _).reflects_exact_of_faithful
184+
simpa [ShortComplex.moduleCat_exact_iff_range_eq_ker,
185+
HomologicalComplex.alternatingConst, ChainComplex.toSingle₀Equiv] using
186+
leftRegular.range_applyAsHom_sub_eq_ker_linearCombination k g hg
187+
· rw [Rep.epi_iff_surjective]
188+
intro x
189+
use single 1 x
190+
simp [ChainComplex.toSingle₀Equiv]
191+
| succ m _ =>
192+
rw [quasiIsoAt_iff_exactAt' (hL := ChainComplex.exactAt_succ_single_obj ..),
193+
HomologicalComplex.exactAt_iff' _ (m + 2) (m + 1) m (by simp) (by simp)]
194+
apply (Action.forget (ModuleCat k) _).reflects_exact_of_faithful
195+
rw [ShortComplex.moduleCat_exact_iff_range_eq_ker]
196+
by_cases hm : Odd (m + 1)
197+
· simpa [if_pos (Nat.even_add_one.2 (Nat.not_even_iff_odd.2 hm)),
198+
if_neg (Nat.not_even_iff_odd.2 hm)]
199+
using leftRegular.range_norm_eq_ker_applyAsHom_sub k g hg
200+
· simpa [ShortComplex.moduleCat_exact_iff_range_eq_ker, if_pos (Nat.not_odd_iff_even.1 hm),
201+
if_neg (Nat.not_even_iff_odd.2 <| Nat.odd_add_one.2 hm)]
202+
using leftRegular.range_applyAsHom_sub_eq_ker_norm k g hg
203+
204+
/-- Given a finite cyclic group `G` generated by `g : G`, this is the projective resolution of `k`
205+
as a trivial `k`-linear `G`-representation given by periodic complex
206+
`... ⟶ k[G] --N--> k[G] --(ρ(g) - 𝟙)--> k[G] --N--> k[G] --(ρ(g) - 𝟙)--> k[G] ⟶ 0` where `ρ` is
207+
the left regular representation and `N` is the norm map. -/
208+
@[simps]
209+
noncomputable def resolution (g : G) (hg : ∀ x, x ∈ Subgroup.zpowers g) :
210+
ProjectiveResolution (trivial k G k) where
211+
complex := (FiniteCyclicGroup.chainComplexFunctor k g).obj (leftRegular k G)
212+
projective _ := inferInstanceAs <| Projective (leftRegular k G)
213+
π := FiniteCyclicGroup.resolution.π k g
214+
quasiIso := resolution_quasiIso k g hg
215+
216+
end Rep.FiniteCyclicGroup

Mathlib/RepresentationTheory/Invariants.lean

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,14 @@ theorem invariants_eq_top [ρ.IsTrivial] :
8585
invariants ρ = ⊤ :=
8686
eq_top_iff.2 (fun x _ g => ρ.isTrivial_apply g x)
8787

88+
lemma mem_invariants_iff_of_forall_mem_zpowers
89+
(g : G) (hg : ∀ x, x ∈ Subgroup.zpowers g) (x : V) :
90+
x ∈ ρ.invariants ↔ ρ g x = x :=
91+
fun h => h g, fun hx γ => by
92+
rcases hg γ with ⟨i, rfl⟩
93+
induction i with | zero => simp | succ i _ => simp_all [zpow_add_one] | pred i h => _
94+
simpa [neg_sub_comm _ (1 : ℤ), zpow_sub] using congr(ρ g⁻¹ $(h.trans hx.symm))⟩
95+
8896
section
8997

9098
variable [Fintype G] [Invertible (Fintype.card G : k)]

0 commit comments

Comments
 (0)