Idempotent complete categories #
In this file, we define the notion of idempotent complete categories (also known as Karoubian categories, or pseudoabelian in the case of preadditive categories).
Main definitions #
IsIdempotentComplete Cexpresses thatCis idempotent complete, i.e. all idempotents inCsplit. Other characterisations of idempotent completeness are given byisIdempotentComplete_iff_hasEqualizer_of_id_and_idempotentandisIdempotentComplete_iff_idempotents_have_kernels.isIdempotentComplete_of_abelianexpresses that abelian categories are idempotent complete.isIdempotentComplete_iff_ofEquivalenceexpresses that if two categoriesCandDare equivalent, thenCis idempotent complete iffDis.isIdempotentComplete_iff_oppositeexpresses thatCᵒᵖis idempotent complete iffCis.
References #
- [Stacks: Karoubian categories] https://stacks.math.columbia.edu/tag/09SF
A category is idempotent complete iff all idempotent endomorphisms p
split as a composition p = e ≫ i with i ≫ e = 𝟙 _
- idempotents_split (X : C) (p : X ⟶ X) : CategoryStruct.comp p p = p → ∃ (Y : C) (i : Y ⟶ X) (e : X ⟶ Y), CategoryStruct.comp i e = CategoryStruct.id Y ∧ CategoryStruct.comp e i = p
Instances
theorem
CategoryTheory.Idempotents.isIdempotentComplete_iff_hasEqualizer_of_id_and_idempotent
(C : Type u_1)
[Category.{v_1, u_1} C]
:
IsIdempotentComplete C ↔ ∀ (X : C) (p : X ⟶ X), CategoryStruct.comp p p = p → Limits.HasEqualizer (CategoryStruct.id X) p
A category is idempotent complete iff for all idempotent endomorphisms, the equalizer of the identity and this idempotent exists.
theorem
CategoryTheory.Idempotents.idem_of_id_sub_idem
{C : Type u_1}
[Category.{v_1, u_1} C]
[Preadditive C]
{X : C}
(p : X ⟶ X)
(hp : CategoryStruct.comp p p = p)
:
In a preadditive category, when p : X ⟶ X is idempotent,
then 𝟙 X - p is also idempotent.
theorem
CategoryTheory.Idempotents.isIdempotentComplete_iff_idempotents_have_kernels
(C : Type u_1)
[Category.{v_1, u_1} C]
[Preadditive C]
:
A preadditive category is pseudoabelian iff all idempotent endomorphisms have a kernel.
@[instance 100]
instance
CategoryTheory.Idempotents.isIdempotentComplete_of_abelian
(D : Type u_2)
[Category.{v_2, u_2} D]
[Abelian D]
:
An abelian category is idempotent complete.
theorem
CategoryTheory.Idempotents.split_imp_of_iso
{C : Type u_1}
[Category.{v_1, u_1} C]
{X X' : C}
(φ : X ≅ X')
(p : X ⟶ X)
(p' : X' ⟶ X')
(hpp' : CategoryStruct.comp p φ.hom = CategoryStruct.comp φ.hom p')
(h : ∃ (Y : C) (i : Y ⟶ X) (e : X ⟶ Y), CategoryStruct.comp i e = CategoryStruct.id Y ∧ CategoryStruct.comp e i = p)
:
∃ (Y' : C) (i' : Y' ⟶ X') (e' : X' ⟶ Y'),
CategoryStruct.comp i' e' = CategoryStruct.id Y' ∧ CategoryStruct.comp e' i' = p'
theorem
CategoryTheory.Idempotents.split_iff_of_iso
{C : Type u_1}
[Category.{v_1, u_1} C]
{X X' : C}
(φ : X ≅ X')
(p : X ⟶ X)
(p' : X' ⟶ X')
(hpp' : CategoryStruct.comp p φ.hom = CategoryStruct.comp φ.hom p')
:
(∃ (Y : C) (i : Y ⟶ X) (e : X ⟶ Y), CategoryStruct.comp i e = CategoryStruct.id Y ∧ CategoryStruct.comp e i = p) ↔ ∃ (Y' : C) (i' : Y' ⟶ X') (e' : X' ⟶ Y'),
CategoryStruct.comp i' e' = CategoryStruct.id Y' ∧ CategoryStruct.comp e' i' = p'
theorem
CategoryTheory.Idempotents.Equivalence.isIdempotentComplete
{C : Type u_1}
[Category.{v_1, u_1} C]
{D : Type u_2}
[Category.{v_2, u_2} D]
(ε : C ≌ D)
(h : IsIdempotentComplete C)
:
theorem
CategoryTheory.Idempotents.isIdempotentComplete_iff_of_equivalence
{C : Type u_1}
[Category.{v_1, u_1} C]
{D : Type u_2}
[Category.{v_2, u_2} D]
(ε : C ≌ D)
:
If C and D are equivalent categories, that C is idempotent complete iff D is.
instance
CategoryTheory.Idempotents.instIsIdempotentCompleteOpposite
{C : Type u_1}
[Category.{v_1, u_1} C]
[IsIdempotentComplete C]
: