|
| 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