@@ -4,6 +4,9 @@ Released under Apache 2.0 license as described in the file LICENSE.
4
4
Authors: Joël Riou
5
5
-/
6
6
import Mathlib.Algebra.Homology.ShortComplex.Ab
7
+ import Mathlib.Algebra.Homology.ShortComplex.ExactFunctor
8
+ import Mathlib.Algebra.Homology.ShortComplex.SnakeLemma
9
+ import Mathlib.CategoryTheory.Limits.Shapes.ConcreteCategory
7
10
8
11
/-!
9
12
# Exactness of short complexes in concrete abelian categories
@@ -14,11 +17,15 @@ if and only if it is so after applying the functor `forget₂ C Ab`.
14
17
15
18
-/
16
19
20
+ universe w v u
21
+
17
22
namespace CategoryTheory
18
23
19
24
open Limits
20
25
21
- variable {C : Type *} [Category C] [ConcreteCategory C] [HasForget₂ C Ab]
26
+ section
27
+
28
+ variable {C : Type u} [Category.{v} C] [ConcreteCategory.{w} C] [HasForget₂ C Ab]
22
29
23
30
@[simp]
24
31
lemma ShortComplex.zero_apply
@@ -41,6 +48,13 @@ lemma Preadditive.mono_iff_injective {X Y : C} (f : X ⟶ Y) :
41
48
infer_instance
42
49
· apply Functor.mono_of_mono_map
43
50
51
+ lemma Preadditive.mono_iff_injective' {X Y : C} (f : X ⟶ Y) :
52
+ Mono f ↔ Function.Injective ((forget C).map f) := by
53
+ simp only [mono_iff_injective, ← CategoryTheory.mono_iff_injective]
54
+ apply (MorphismProperty.RespectsIso.monomorphisms (Type w)).arrow_mk_iso_iff
55
+ have e : forget₂ C Ab ⋙ forget Ab ≅ forget C := eqToIso (HasForget₂.forget_comp)
56
+ exact Arrow.isoOfNatIso e (Arrow.mk f)
57
+
44
58
lemma Preadditive.epi_iff_injective {X Y : C} (f : X ⟶ Y) :
45
59
Epi f ↔ Function.Surjective ((forget₂ C Ab).map f) := by
46
60
rw [← AddCommGroupCat.epi_iff_surjective]
@@ -49,6 +63,13 @@ lemma Preadditive.epi_iff_injective {X Y : C} (f : X ⟶ Y) :
49
63
infer_instance
50
64
· apply Functor.epi_of_epi_map
51
65
66
+ lemma Preadditive.epi_iff_surjective' {X Y : C} (f : X ⟶ Y) :
67
+ Epi f ↔ Function.Surjective ((forget C).map f) := by
68
+ simp only [epi_iff_injective, ← CategoryTheory.epi_iff_surjective]
69
+ apply (MorphismProperty.RespectsIso.epimorphisms (Type w)).arrow_mk_iso_iff
70
+ have e : forget₂ C Ab ⋙ forget Ab ≅ forget C := eqToIso (HasForget₂.forget_comp)
71
+ exact Arrow.isoOfNatIso e (Arrow.mk f)
72
+
52
73
namespace ShortComplex
53
74
54
75
lemma exact_iff_exact_map_forget₂ [S.HasHomology] :
@@ -77,4 +98,48 @@ end ShortComplex
77
98
78
99
end preadditive
79
100
101
+ end
102
+
103
+ section abelian
104
+
105
+ variable {C : Type u} [Category.{v} C] [ConcreteCategory.{v} C] [HasForget₂ C Ab]
106
+ [Abelian C] [(forget₂ C Ab).Additive] [(forget₂ C Ab).PreservesHomology]
107
+
108
+ attribute [local instance] ConcreteCategory.funLike ConcreteCategory.hasCoeToSort
109
+
110
+ namespace ShortComplex
111
+
112
+ namespace SnakeInput
113
+
114
+ variable (D : SnakeInput C)
115
+
116
+ /-- This lemma allows the computation of the connecting homomorphism
117
+ `D.δ` when `D : SnakeInput C` and `C` is a concrete category. -/
118
+ lemma δ_apply (x₃ : D.L₀.X₃) (x₂ : D.L₁.X₂) (x₁ : D.L₂.X₁)
119
+ (h₂ : D.L₁.g x₂ = D.v₀₁.τ₃ x₃) (h₁ : D.L₂.f x₁ = D.v₁₂.τ₂ x₂) :
120
+ D.δ x₃ = D.v₂₃.τ₁ x₁ := by
121
+ have := (forget₂ C Ab).preservesFiniteLimitsOfPreservesHomology
122
+ have : PreservesFiniteLimits (forget C) := by
123
+ have : forget₂ C Ab ⋙ forget Ab = forget C := HasForget₂.forget_comp
124
+ simpa only [← this] using compPreservesFiniteLimits _ _
125
+ have eq := congr_fun ((forget C).congr_map D.snd_δ)
126
+ (Limits.Concrete.pullbackMk D.L₁.g D.v₀₁.τ₃ x₂ x₃ h₂)
127
+ have eq₁ := Concrete.pullbackMk_fst D.L₁.g D.v₀₁.τ₃ x₂ x₃ h₂
128
+ have eq₂ := Concrete.pullbackMk_snd D.L₁.g D.v₀₁.τ₃ x₂ x₃ h₂
129
+ dsimp [FunLike.coe] at eq₁ eq₂
130
+ rw [Functor.map_comp, types_comp_apply, FunctorToTypes.map_comp_apply] at eq
131
+ rw [eq₂] at eq
132
+ refine' eq.trans (congr_arg ((forget C).map D.v₂₃.τ₁) _)
133
+ apply (Preadditive.mono_iff_injective' D.L₂.f).1 inferInstance
134
+ rw [← FunctorToTypes.map_comp_apply, φ₁_L₂_f]
135
+ dsimp [φ₂]
136
+ rw [Functor.map_comp, types_comp_apply, eq₁]
137
+ exact h₁.symm
138
+
139
+ end SnakeInput
140
+
141
+ end ShortComplex
142
+
143
+ end abelian
144
+
80
145
end CategoryTheory
0 commit comments