|
| 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 |
0 commit comments