@@ -147,13 +147,11 @@ square commutes:
147147```
148148where 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
159157says `dOne` gives a simpler expression for the 1st differential: that is, the following
@@ -168,8 +166,8 @@ square commutes:
168166```
169167where 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:
191189where the vertical arrows are `twoCochainsLequiv` and `threeCochainsLequiv` respectively.
192190-/
193191theorem 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
210208theorem 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
219214open ShortComplex
220215
@@ -690,6 +685,10 @@ abbrev H1 := (shortComplexH1 A).moduleCatHomology
690685/-- The quotient map `Z¹(G, A) → H¹(G, A).` -/
691686abbrev 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
6946932-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).` -/
699698abbrev 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+
701704end Cohomology
702705
703706section H0
@@ -763,7 +766,7 @@ lemma shortComplexH0_exact : (shortComplexH0 A).Exact := by
763766def 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]
799802def 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
843844def 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