Skip to content

Commit 87c5915

Browse files
committed
bit more
1 parent 9306e29 commit 87c5915

3 files changed

Lines changed: 29 additions & 25 deletions

File tree

Mathlib/RepresentationTheory/GroupCohomology/Basic.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,11 @@ theorem inhomogeneousCochains.d_def (n : ℕ) :
203203
(inhomogeneousCochains A).d n (n + 1) = ModuleCat.ofHom (inhomogeneousCochains.d n A) :=
204204
CochainComplex.of_d _ _ _ _
205205

206+
theorem inhomogeneousCochains.d_comp_d (n : ℕ) :
207+
inhomogeneousCochains.d (n + 1) A ∘ₗ inhomogeneousCochains.d n A = 0 := by
208+
simpa [CochainComplex.of] using
209+
congr(ModuleCat.Hom.hom $((inhomogeneousCochains A).d_comp_d n (n + 1) (n + 2)))
210+
206211
/-- Given a `k`-linear `G`-representation `A`, the complex of inhomogeneous cochains is isomorphic
207212
to `Hom(P, A)`, where `P` is the standard resolution of `k` as a trivial `G`-representation. -/
208213
def inhomogeneousCochainsIso : inhomogeneousCochains A ≅ linearYonedaObjResolution A := by

Mathlib/RepresentationTheory/GroupCohomology/Hilbert90.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ variable (K L : Type) [Field K] [Field L] [Algebra K L] [FiniteDimensional K L]
102102
first group cohomology `H¹(Aut_K(L), Lˣ)` is trivial. -/
103103
noncomputable instance H1ofAutOnUnitsUnique : Unique (H1 (Rep.ofAlgebraAutOnUnits K L)) where
104104
default := 0
105-
uniq := fun a => Quotient.inductionOn' a fun x => (Submodule.Quotient.mk_eq_zero _).2 <| by
105+
uniq := fun a => Quotient.inductionOn' a fun x => (H1π_eq_zero_iff _).2 <| by
106106
refine (oneCoboundariesOfIsMulOneCoboundary ?_).2
107107
rcases isMulOneCoboundary_of_isMulOneCocycle_of_aut_to_units x.1
108108
(isMulOneCocycle_of_oneCocycles x) with ⟨β, hβ⟩

Mathlib/RepresentationTheory/GroupCohomology/LowDegree.lean

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -147,13 +147,11 @@ square commutes:
147147
```
148148
where the vertical arrows are `zeroCochainsLequiv` and `oneCochainsLequiv` respectively.
149149
-/
150-
theorem dZero_comp_eq : dZero A ∘ₗ (zeroCochainsLequiv A) =
151-
oneCochainsLequiv A ∘ₗ ((inhomogeneousCochains A).d 0 1).hom := by
150+
theorem dZero_comp_eq : (zeroCochainsLequiv A).toModuleIso.hom ≫ ModuleCat.ofHom (dZero A) =
151+
(inhomogeneousCochains A).d 0 1 ≫ (oneCochainsLequiv A).toModuleIso.hom := by
152152
ext x y
153-
show A.ρ y (x default) - x default = _ + ({0} : Finset _).sum _
154-
simp_rw [Fin.val_eq_zero, zero_add, pow_one, neg_smul, one_smul,
155-
Finset.sum_singleton, sub_eq_add_neg]
156-
rcongr i <;> exact Fin.elim0 i
153+
simp [inhomogeneousCochains.d_def, zeroCochainsLequiv, oneCochainsLequiv,
154+
inhomogeneousCochains.d_apply, Unique.eq_default (α := Fin 0 → G), sub_eq_add_neg]
157155

158156
/-- Let `C(G, A)` denote the complex of inhomogeneous cochains of `A : Rep k G`. This lemma
159157
says `dOne` gives a simpler expression for the 1st differential: that is, the following
@@ -168,8 +166,8 @@ square commutes:
168166
```
169167
where the vertical arrows are `oneCochainsLequiv` and `twoCochainsLequiv` respectively.
170168
-/
171-
theorem dOne_comp_eq : dOne A ∘ₗ oneCochainsLequiv A =
172-
twoCochainsLequiv A ∘ₗ ((inhomogeneousCochains A).d 1 2).hom := by
169+
theorem dOne_comp_eq : (oneCochainsLequiv A).toModuleIso.hom ≫ ModuleCat.ofHom (dOne A) =
170+
(inhomogeneousCochains A).d 1 2 ≫ (twoCochainsLequiv A).toModuleIso.hom := by
173171
ext x y
174172
show A.ρ y.1 (x _) - x _ + x _ = _ + _
175173
rw [Fin.sum_univ_two]
@@ -191,8 +189,8 @@ square commutes:
191189
where the vertical arrows are `twoCochainsLequiv` and `threeCochainsLequiv` respectively.
192190
-/
193191
theorem dTwo_comp_eq :
194-
dTwo A ∘ₗ twoCochainsLequiv A =
195-
threeCochainsLequiv A ∘ₗ ((inhomogeneousCochains A).d 2 3).hom := by
192+
(twoCochainsLequiv A).toModuleIso.hom ≫ ModuleCat.ofHom (dTwo A) =
193+
(inhomogeneousCochains A).d 2 3 ≫ (threeCochainsLequiv A).toModuleIso.hom := by
196194
ext x y
197195
show A.ρ y.1 (x _) - x _ + x _ - x _ = _ + _
198196
dsimp
@@ -208,13 +206,10 @@ theorem dOne_comp_dZero : dOne A ∘ₗ dZero A = 0 := by
208206
rfl
209207

210208
theorem dTwo_comp_dOne : dTwo A ∘ₗ dOne A = 0 := by
211-
show (ModuleCat.ofHom (dOne A) ≫ ModuleCat.ofHom (dTwo A)).hom = _
212-
have h1 := congr_arg ModuleCat.ofHom (dOne_comp_eq A)
213-
have h2 := congr_arg ModuleCat.ofHom (dTwo_comp_eq A)
214-
simp only [ModuleCat.ofHom_comp, ModuleCat.ofHom_comp, ← LinearEquiv.toModuleIso_hom] at h1 h2
215-
simp only [(Iso.eq_inv_comp _).2 h2, (Iso.eq_inv_comp _).2 h1, ModuleCat.ofHom_hom,
216-
ModuleCat.hom_ofHom, Category.assoc, Iso.hom_inv_id_assoc, HomologicalComplex.d_comp_d_assoc,
217-
zero_comp, comp_zero, ModuleCat.hom_zero]
209+
apply_fun ModuleCat.ofHom using fun _ _ => ModuleCat.hom_ext_iff.1
210+
simp [(Iso.eq_inv_comp _).2 (dTwo_comp_eq A), (Iso.eq_inv_comp _).2 (dOne_comp_eq A),
211+
inhomogeneousCochains.d_comp_d, LinearMap.comp_assoc, ModuleCat.hom_ext_iff,
212+
-LinearEquiv.toModuleIso_hom, -LinearEquiv.toModuleIso_inv]
218213

219214
open ShortComplex
220215

@@ -690,6 +685,10 @@ abbrev H1 := (shortComplexH1 A).moduleCatHomology
690685
/-- The quotient map `Z¹(G, A) → H¹(G, A).` -/
691686
abbrev H1π : ModuleCat.of k (oneCocycles A) ⟶ H1 A := (shortComplexH1 A).moduleCatHomologyπ
692687

688+
variable {A} in
689+
lemma H1π_eq_zero_iff (x : oneCocycles A) : H1π A x = 0 ↔ x ∈ oneCoboundaries A :=
690+
Submodule.Quotient.mk_eq_zero _
691+
693692
/-- We define the 2nd group cohomology of a `k`-linear `G`-representation `A`, `H²(G, A)`, to be
694693
2-cocycles (i.e. `Z²(G, A) := Ker(d² : Fun(G², A) → Fun(G³, A)`) modulo 2-coboundaries
695694
(i.e. `B²(G, A) := Im(d¹: Fun(G, A) → Fun(G², A))`). -/
@@ -698,6 +697,10 @@ abbrev H2 := (shortComplexH2 A).moduleCatHomology
698697
/-- The quotient map `Z²(G, A) → H²(G, A).` -/
699698
abbrev H2π : ModuleCat.of k (twoCocycles A) ⟶ H2 A := (shortComplexH2 A).moduleCatHomologyπ
700699

700+
variable {A} in
701+
lemma H2π_eq_zero_iff (x : twoCocycles A) : H2π A x = 0 ↔ x ∈ twoCoboundaries A :=
702+
Submodule.Quotient.mk_eq_zero _
703+
701704
end Cohomology
702705

703706
section H0
@@ -763,7 +766,7 @@ lemma shortComplexH0_exact : (shortComplexH0 A).Exact := by
763766
def dZeroArrowIso : Arrow.mk ((inhomogeneousCochains A).d 0 1) ≅
764767
Arrow.mk (ModuleCat.ofHom (dZero A)) :=
765768
Arrow.isoMk (zeroCochainsLequiv A).toModuleIso
766-
(oneCochainsLequiv A).toModuleIso (ModuleCat.hom_ext (dZero_comp_eq A))
769+
(oneCochainsLequiv A).toModuleIso (dZero_comp_eq A)
767770

768771
/-- The 0-cocycles of the complex of inhomogeneous cochains of `A` are isomorphic to
769772
`A.ρ.invariants`, which is a simpler type. -/
@@ -798,9 +801,7 @@ short complex associated to the complex of inhomogeneous cochains of `A`. -/
798801
@[simps! hom inv]
799802
def shortComplexH1Iso : (inhomogeneousCochains A).sc' 0 1 2 ≅ shortComplexH1 A :=
800803
isoMk (zeroCochainsLequiv A).toModuleIso (oneCochainsLequiv A).toModuleIso
801-
(twoCochainsLequiv A).toModuleIso
802-
(ModuleCat.hom_ext (dZero_comp_eq A))
803-
(ModuleCat.hom_ext (dOne_comp_eq A))
804+
(twoCochainsLequiv A).toModuleIso (dZero_comp_eq A) (dOne_comp_eq A)
804805

805806
/-- The 1-cocycles of the complex of inhomogeneous cochains of `A` are isomorphic to
806807
`oneCocycles A`, which is a simpler type. -/
@@ -843,9 +844,7 @@ isomorphic to the 2nd short complex associated to the complex of inhomogeneous c
843844
def shortComplexH2Iso :
844845
(inhomogeneousCochains A).sc' 1 2 3 ≅ shortComplexH2 A :=
845846
isoMk (oneCochainsLequiv A).toModuleIso (twoCochainsLequiv A).toModuleIso
846-
(threeCochainsLequiv A).toModuleIso
847-
(ModuleCat.hom_ext (dOne_comp_eq A))
848-
(ModuleCat.hom_ext (dTwo_comp_eq A))
847+
(threeCochainsLequiv A).toModuleIso (dOne_comp_eq A) (dTwo_comp_eq A)
849848

850849
/-- The 2-cocycles of the complex of inhomogeneous cochains of `A` are isomorphic to
851850
`twoCocycles A`, which is a simpler type. -/

0 commit comments

Comments
 (0)