Skip to content

Commit 26e2786

Browse files
committed
feat: port CategoryTheory.Preadditive.Generator (#3644)
1 parent 6137962 commit 26e2786

File tree

2 files changed

+84
-0
lines changed

2 files changed

+84
-0
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,7 @@ import Mathlib.CategoryTheory.Preadditive.Basic
589589
import Mathlib.CategoryTheory.Preadditive.Biproducts
590590
import Mathlib.CategoryTheory.Preadditive.EilenbergMoore
591591
import Mathlib.CategoryTheory.Preadditive.FunctorCategory
592+
import Mathlib.CategoryTheory.Preadditive.Generator
592593
import Mathlib.CategoryTheory.Preadditive.LeftExact
593594
import Mathlib.CategoryTheory.Preadditive.OfBiproducts
594595
import Mathlib.CategoryTheory.Preadditive.Opposite
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/-
2+
Copyright (c) 2022 Markus Himmel. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Markus Himmel
5+
6+
! This file was ported from Lean 3 source module category_theory.preadditive.generator
7+
! leanprover-community/mathlib commit 09f981f72d43749f1fa072deade828d9c1e185bb
8+
! Please do not edit these lines, except to modify the commit id
9+
! if you have ported upstream changes.
10+
-/
11+
import Mathlib.CategoryTheory.Generator
12+
import Mathlib.CategoryTheory.Preadditive.Yoneda.Basic
13+
14+
/-!
15+
# Separators in preadditive categories
16+
17+
This file contains characterizations of separating sets and objects that are valid in all
18+
preadditive categories.
19+
20+
-/
21+
22+
23+
universe v u
24+
25+
open CategoryTheory Opposite
26+
27+
namespace CategoryTheory
28+
29+
variable {C : Type u} [Category.{v} C] [Preadditive C]
30+
31+
theorem Preadditive.isSeparating_iff (𝒢 : Set C) :
32+
IsSeparating 𝒢 ↔ ∀ ⦃X Y : C⦄ (f : X ⟶ Y), (∀ G ∈ 𝒢, ∀ (h : G ⟶ X), h ≫ f = 0) → f = 0 :=
33+
fun h𝒢 X Y f hf => h𝒢 _ _ (by simpa only [Limits.comp_zero] using hf), fun h𝒢 X Y f g hfg =>
34+
sub_eq_zero.1 <| h𝒢 _ (by simpa only [Preadditive.comp_sub, sub_eq_zero] using hfg)⟩
35+
#align category_theory.preadditive.is_separating_iff CategoryTheory.Preadditive.isSeparating_iff
36+
37+
theorem Preadditive.isCoseparating_iff (𝒢 : Set C) :
38+
IsCoseparating 𝒢 ↔ ∀ ⦃X Y : C⦄ (f : X ⟶ Y), (∀ G ∈ 𝒢, ∀ (h : Y ⟶ G), f ≫ h = 0) → f = 0 :=
39+
fun h𝒢 X Y f hf => h𝒢 _ _ (by simpa only [Limits.zero_comp] using hf), fun h𝒢 X Y f g hfg =>
40+
sub_eq_zero.1 <| h𝒢 _ (by simpa only [Preadditive.sub_comp, sub_eq_zero] using hfg)⟩
41+
#align category_theory.preadditive.is_coseparating_iff CategoryTheory.Preadditive.isCoseparating_iff
42+
43+
theorem Preadditive.isSeparator_iff (G : C) :
44+
IsSeparator G ↔ ∀ ⦃X Y : C⦄ (f : X ⟶ Y), (∀ h : G ⟶ X, h ≫ f = 0) → f = 0 :=
45+
fun hG X Y f hf => hG.def _ _ (by simpa only [Limits.comp_zero] using hf), fun hG =>
46+
(isSeparator_def _).2 fun X Y f g hfg =>
47+
sub_eq_zero.1 <| hG _ (by simpa only [Preadditive.comp_sub, sub_eq_zero] using hfg)⟩
48+
#align category_theory.preadditive.is_separator_iff CategoryTheory.Preadditive.isSeparator_iff
49+
50+
theorem Preadditive.isCoseparator_iff (G : C) :
51+
IsCoseparator G ↔ ∀ ⦃X Y : C⦄ (f : X ⟶ Y), (∀ h : Y ⟶ G, f ≫ h = 0) → f = 0 :=
52+
fun hG X Y f hf => hG.def _ _ (by simpa only [Limits.zero_comp] using hf), fun hG =>
53+
(isCoseparator_def _).2 fun X Y f g hfg =>
54+
sub_eq_zero.1 <| hG _ (by simpa only [Preadditive.sub_comp, sub_eq_zero] using hfg)⟩
55+
#align category_theory.preadditive.is_coseparator_iff CategoryTheory.Preadditive.isCoseparator_iff
56+
57+
theorem isSeparator_iff_faithful_preadditiveCoyoneda (G : C) :
58+
IsSeparator G ↔ Faithful (preadditiveCoyoneda.obj (op G)) := by
59+
rw [isSeparator_iff_faithful_coyoneda_obj, ← whiskering_preadditiveCoyoneda, Functor.comp_obj,
60+
whiskeringRight_obj_obj]
61+
exact ⟨fun h => Faithful.of_comp _ (forget AddCommGroupCat), fun h => Faithful.comp _ _⟩
62+
#align category_theory.is_separator_iff_faithful_preadditive_coyoneda CategoryTheory.isSeparator_iff_faithful_preadditiveCoyoneda
63+
64+
theorem isSeparator_iff_faithful_preadditiveCoyonedaObj (G : C) :
65+
IsSeparator G ↔ Faithful (preadditiveCoyonedaObj (op G)) := by
66+
rw [isSeparator_iff_faithful_preadditiveCoyoneda, preadditiveCoyoneda_obj]
67+
exact ⟨fun h => Faithful.of_comp _ (forget₂ _ AddCommGroupCat.{v}), fun h => Faithful.comp _ _⟩
68+
#align category_theory.is_separator_iff_faithful_preadditive_coyoneda_obj CategoryTheory.isSeparator_iff_faithful_preadditiveCoyonedaObj
69+
70+
theorem isCoseparator_iff_faithful_preadditiveYoneda (G : C) :
71+
IsCoseparator G ↔ Faithful (preadditiveYoneda.obj G) := by
72+
rw [isCoseparator_iff_faithful_yoneda_obj, ← whiskering_preadditiveYoneda, Functor.comp_obj,
73+
whiskeringRight_obj_obj]
74+
exact ⟨fun h => Faithful.of_comp _ (forget AddCommGroupCat), fun h => Faithful.comp _ _⟩
75+
#align category_theory.is_coseparator_iff_faithful_preadditive_yoneda CategoryTheory.isCoseparator_iff_faithful_preadditiveYoneda
76+
77+
theorem isCoseparator_iff_faithful_preadditiveYonedaObj (G : C) :
78+
IsCoseparator G ↔ Faithful (preadditiveYonedaObj G) := by
79+
rw [isCoseparator_iff_faithful_preadditiveYoneda, preadditiveYoneda_obj]
80+
exact ⟨fun h => Faithful.of_comp _ (forget₂ _ AddCommGroupCat.{v}), fun h => Faithful.comp _ _⟩
81+
#align category_theory.is_coseparator_iff_faithful_preadditive_yoneda_obj CategoryTheory.isCoseparator_iff_faithful_preadditiveYonedaObj
82+
83+
end CategoryTheory

0 commit comments

Comments
 (0)