Skip to content

Commit 8afd8c5

Browse files
committed
feat(CategoryTheory/Preadditive/AdditiveFunctor): finite products in a quotient preadditive category (#41067)
Prove that, if `F : C ⥤ D` is an additive essentially surjective functor between preadditive categories and `C` has finite products, then `D` also has finite products. Use this to shorten the proof that the localization of an abelian category by a Serre class has finite products (in `CategoryTheory/Abelian/SerreClass/Localization`). Co-authored-by: morel <sophie.morel@ens-lyon.fr>
1 parent 7e24eee commit 8afd8c5

2 files changed

Lines changed: 14 additions & 16 deletions

File tree

Mathlib/CategoryTheory/Abelian/SerreClass/Localization.lean

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@ Authors: Joël Riou
55
-/
66
module
77

8+
public import Mathlib.Algebra.Homology.ShortComplex.ExactFunctor
89
public import Mathlib.CategoryTheory.Abelian.SerreClass.MorphismProperty
910
public import Mathlib.CategoryTheory.Localization.CalculusOfFractions.Preadditive
10-
public import Mathlib.Algebra.Homology.ShortComplex.ExactFunctor
11-
public import Mathlib.CategoryTheory.Limits.ExactFunctor
1211

1312
/-!
1413
# Localization with respect to a Serre class
@@ -29,7 +28,7 @@ universe v'' v' v u'' u' u
2928

3029
namespace CategoryTheory
3130

32-
open Limits ZeroObject
31+
open Limits
3332

3433
namespace ObjectProperty
3534

@@ -139,9 +138,6 @@ lemma isZero_obj_iff (X : C) :
139138
rintro ⟨Y, h⟩
140139
simpa using h.2
141140

142-
lemma hasZeroObject : HasZeroObject D :=
143-
⟨L.obj 0, by simpa [isZero_obj_iff L P] using P.prop_zero⟩
144-
145141
lemma map_eq_zero_iff {X Y : C} (f : X ⟶ Y) :
146142
L.map f = 0 ↔ P (Abelian.image f) := by
147143
rw [← L.map_zero, MorphismProperty.map_eq_iff_precomp L P.isoModSerre]
@@ -381,17 +377,9 @@ lemma hasCoequalizers : HasCoequalizers D :=
381377
Preadditive.hasCoequalizer_of_hasCokernel _ _
382378
hasCoequalizers_of_hasColimit_parallelPair _
383379

384-
lemma hasBinaryProducts : HasBinaryProducts D :=
385-
have := Localization.essSurj L P.isoModSerre
386-
have (X Y : D) : HasBinaryProduct X Y :=
387-
hasLimit_of_iso (show Limits.pair _ _ ≅ _ from
388-
mapPairIso (L.objObjPreimageIso X) (L.objObjPreimageIso Y))
389-
hasBinaryProducts_of_hasLimit_pair D
390-
391380
lemma hasFiniteProducts : HasFiniteProducts D :=
392-
have := hasZeroObject L P
393-
have := hasBinaryProducts L P
394-
hasFiniteProducts_of_has_binary_and_terminal
381+
have := Localization.essSurj L P.isoModSerre
382+
L.hasFiniteProducts_of_additive_of_essSurj
395383

396384
lemma isNormalMonoCategory : IsNormalMonoCategory D where
397385
normalMonoOfMono f hf := by
@@ -438,6 +426,10 @@ def abelian : Abelian D := by
438426
have := isNormalEpiCategory L P
439427
constructor
440428

429+
lemma hasZeroObject : HasZeroObject D :=
430+
have := abelian L P
431+
Abelian.hasZeroObject
432+
441433
lemma preservesFiniteLimits : PreservesFiniteLimits L := by
442434
letI := abelian L P
443435
rw [((Functor.preservesFiniteLimits_tfae L).out 3 2 :)]

Mathlib/CategoryTheory/Preadditive/AdditiveFunctor.lean

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,12 @@ instance (priority := 100) preservesFiniteProductsOfAdditive [Additive F] :
218218
PreservesFiniteProducts F where
219219
preserves _ := preservesProductsOfShape_of_preservesBiproductsOfShape F
220220

221+
lemma hasFiniteProducts_of_additive_of_essSurj [HasFiniteProducts C] [Additive F]
222+
[EssSurj F] : HasFiniteProducts D :=
223+
fun _ ↦ ⟨fun K ↦ hasLimit_of_iso
224+
(F := Discrete.functor (fun i ↦ F.objPreimage (K.obj ⟨i⟩)) ⋙ F)
225+
(Discrete.natIso (fun _ ↦ F.objObjPreimageIso _))⟩⟩
226+
221227
theorem additive_of_preservesBinaryBiproducts [HasBinaryBiproducts C] [PreservesZeroMorphisms F]
222228
[PreservesBinaryBiproducts F] : Additive F where
223229
map_add {X Y f g} := by

0 commit comments

Comments
 (0)