Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(Algebra/Homology): computation of the connecting homomorphism of…
… the homology sequence (#8771) This PR adds a variant of a lemma introduced in #8512: `ShortComplex.SnakeInput.δ_apply'` computes the connecting homomorphism of the snake lemma in a concrete categoriy `C` with a phrasing based on the functor `forget₂ C Ab` rather than `forget C`. From this, the lemma `ShortComplex.ShortExact.δ_apply` is obtained in a new file `Algebra.Homology.ConcreteCategory`: it gives a computation in terms of (co)cycles of the connecting homomorphism in homology attached to a short exact sequence of homological complexes in `C`. This PR also adds a lemma which computes "up to refinements" the connecting homomorphism of the homology sequence in general abelian categories.
- Loading branch information
Showing
7 changed files
with
189 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
/- | ||
Copyright (c) 2023 Joël Riou. All rights reserved. | ||
Released under Apache 2.0 license as described in the file LICENSE. | ||
Authors: Joël Riou | ||
-/ | ||
import Mathlib.Algebra.Homology.HomologySequence | ||
import Mathlib.Algebra.Homology.ShortComplex.ConcreteCategory | ||
|
||
/-! | ||
# Homology of complexes in concrete categories | ||
The homology of short complexes in concrete categories was studied in | ||
`Mathlib.Algebra.Homology.ShortComplex.ConcreteCategory`. In this file, | ||
we introduce specific definitions and lemmas for the homology | ||
of homological complexes in concrete categories. In particular, | ||
we give a computation of the connecting homomorphism of | ||
the homology sequence in terms of (co)cycles. | ||
-/ | ||
|
||
open CategoryTheory | ||
|
||
universe v u | ||
|
||
variable {C : Type u} [Category.{v} C] [ConcreteCategory.{v} C] [HasForget₂ C Ab.{v}] | ||
[Abelian C] [(forget₂ C Ab).Additive] [(forget₂ C Ab).PreservesHomology] | ||
{ι : Type*} {c : ComplexShape ι} | ||
|
||
namespace HomologicalComplex | ||
|
||
variable (K : HomologicalComplex C c) | ||
|
||
/-- Constructor for cycles of a homological complex in a concrete category. -/ | ||
noncomputable def cyclesMk {i : ι} (x : (forget₂ C Ab).obj (K.X i)) (j : ι) (hj : c.next i = j) | ||
(hx : ((forget₂ C Ab).map (K.d i j)) x = 0) : | ||
(forget₂ C Ab).obj (K.cycles i) := | ||
(K.sc i).cyclesMk x (by subst hj; exact hx) | ||
|
||
@[simp] | ||
lemma i_cyclesMk {i : ι} (x : (forget₂ C Ab).obj (K.X i)) (j : ι) (hj : c.next i = j) | ||
(hx : ((forget₂ C Ab).map (K.d i j)) x = 0) : | ||
((forget₂ C Ab).map (K.iCycles i)) (K.cyclesMk x j hj hx) = x := by | ||
subst hj | ||
apply (K.sc i).i_cyclesMk | ||
|
||
end HomologicalComplex | ||
|
||
namespace CategoryTheory | ||
|
||
namespace ShortComplex | ||
|
||
namespace ShortExact | ||
|
||
variable {S : ShortComplex (HomologicalComplex C c)} | ||
(hS : S.ShortExact) (i j : ι) (hij : c.Rel i j) | ||
|
||
lemma δ_apply' (x₃ : (forget₂ C Ab).obj (S.X₃.homology i)) | ||
(x₂ : (forget₂ C Ab).obj (S.X₂.opcycles i)) | ||
(x₁ : (forget₂ C Ab).obj (S.X₁.cycles j)) | ||
(h₂ : (forget₂ C Ab).map (HomologicalComplex.opcyclesMap S.g i) x₂ = | ||
(forget₂ C Ab).map (S.X₃.homologyι i) x₃) | ||
(h₁ : (forget₂ C Ab).map (HomologicalComplex.cyclesMap S.f j) x₁ = | ||
(forget₂ C Ab).map (S.X₂.opcyclesToCycles i j) x₂) : | ||
(forget₂ C Ab).map (hS.δ i j hij) x₃ = (forget₂ C Ab).map (S.X₁.homologyπ j) x₁ := | ||
(HomologicalComplex.HomologySequence.snakeInput hS i j hij).δ_apply' x₃ x₂ x₁ h₂ h₁ | ||
|
||
lemma δ_apply (x₃ : (forget₂ C Ab).obj (S.X₃.X i)) | ||
(hx₃ : (forget₂ C Ab).map (S.X₃.d i j) x₃ = 0) | ||
(x₂ : (forget₂ C Ab).obj (S.X₂.X i)) (hx₂ : (forget₂ C Ab).map (S.g.f i) x₂ = x₃) | ||
(x₁ : (forget₂ C Ab).obj (S.X₁.X j)) | ||
(hx₁ : (forget₂ C Ab).map (S.f.f j) x₁ = (forget₂ C Ab).map (S.X₂.d i j) x₂) | ||
(k : ι) (hk : c.next j = k) : | ||
(forget₂ C Ab).map (hS.δ i j hij) | ||
((forget₂ C Ab).map (S.X₃.homologyπ i) (S.X₃.cyclesMk x₃ j (c.next_eq' hij) hx₃)) = | ||
(forget₂ C Ab).map (S.X₁.homologyπ j) (S.X₁.cyclesMk x₁ k hk (by | ||
have := hS.mono_f | ||
apply (Preadditive.mono_iff_injective (S.f.f k)).1 inferInstance | ||
erw [← forget₂_comp_apply, ← HomologicalComplex.Hom.comm, forget₂_comp_apply, hx₁, | ||
← forget₂_comp_apply, HomologicalComplex.d_comp_d, Functor.map_zero, map_zero, | ||
AddMonoidHom.zero_apply])) := by | ||
refine hS.δ_apply' i j hij _ ((forget₂ C Ab).map (S.X₂.pOpcycles i) x₂) _ ?_ ?_ | ||
· erw [← forget₂_comp_apply, ← forget₂_comp_apply, | ||
HomologicalComplex.p_opcyclesMap, Functor.map_comp, comp_apply, | ||
HomologicalComplex.homology_π_ι, forget₂_comp_apply, hx₂, HomologicalComplex.i_cyclesMk] | ||
· apply (Preadditive.mono_iff_injective (S.X₂.iCycles j)).1 inferInstance | ||
conv_lhs => | ||
erw [← forget₂_comp_apply, HomologicalComplex.cyclesMap_i, forget₂_comp_apply, | ||
HomologicalComplex.i_cyclesMk, hx₁] | ||
conv_rhs => | ||
erw [← forget₂_comp_apply, ← forget₂_comp_apply, | ||
HomologicalComplex.pOpcycles_opcyclesToCycles_assoc, HomologicalComplex.toCycles_i] | ||
|
||
end ShortExact | ||
|
||
end ShortComplex | ||
|
||
end CategoryTheory |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters