Documentation

Mathlib.CategoryTheory.Idempotents.Karoubi

The Karoubi envelope of a category #

In this file, we define the Karoubi envelope Karoubi C of a category C.

Main constructions and definitions #

structure CategoryTheory.Idempotents.Karoubi (C : Type u_1) [Category.{v_1, u_1} C] :
Type (max u_1 v_1)

In a preadditive category C, when an object X decomposes as X ≅ P ⨿ Q, one may consider P as a direct factor of X and up to unique isomorphism, it is determined by the obvious idempotent X ⟶ P ⟶ X which is the projection onto P with kernel Q. More generally, one may define a formal direct factor of an object X : C : it consists of an idempotent p : XX which is thought as the "formal image" of p. The type Karoubi C shall be the type of the objects of the karoubi envelope of C. It makes sense for any category C.

  • X : C

    an object of the underlying category

  • p : self.X self.X

    an endomorphism of the object

  • idem : CategoryStruct.comp self.p self.p = self.p

    the condition that the given endomorphism is an idempotent

Instances For
    @[simp]

    the condition that the given endomorphism is an idempotent

    A morphism P ⟶ Q in the category Karoubi C is a morphism in the underlying category C which satisfies a relation, which in the preadditive case, expresses that it induces a map between the corresponding "formal direct factors" and that it vanishes on the complement formal direct factor.

    Instances For
      theorem CategoryTheory.Idempotents.Karoubi.Hom.ext_iff {C : Type u_1} {inst✝ : Category.{v_1, u_1} C} {P Q : Karoubi C} {x y : P.Hom Q} :
      x = y x.f = y.f
      theorem CategoryTheory.Idempotents.Karoubi.Hom.ext {C : Type u_1} {inst✝ : Category.{v_1, u_1} C} {P Q : Karoubi C} {x y : P.Hom Q} (f : x.f = y.f) :
      x = y
      @[implicit_reducible]
      Equations
      @[implicit_reducible]

      The category structure on the karoubi envelope of a category.

      Equations
      • One or more equations did not get rendered due to their size.
      @[simp]
      theorem CategoryTheory.Idempotents.Karoubi.hom_ext_iff {C : Type u_1} [Category.{v_1, u_1} C] {P Q : Karoubi C} {f g : P Q} :
      f = g f.f = g.f
      theorem CategoryTheory.Idempotents.Karoubi.hom_ext {C : Type u_1} [Category.{v_1, u_1} C] {P Q : Karoubi C} (f g : P Q) (h : f.f = g.f) :
      f = g
      @[simp]
      @[implicit_reducible]

      It is possible to coerce an object of C into an object of Karoubi C. See also the functor toKaroubi.

      Equations
      theorem CategoryTheory.Idempotents.Karoubi.coe_X {C : Type u_1} [Category.{v_1, u_1} C] (X : C) :
      { X := X, p := CategoryStruct.id X, idem := }.X = X
      @[simp]
      theorem CategoryTheory.Idempotents.Karoubi.coe_p {C : Type u_1} [Category.{v_1, u_1} C] (X : C) :
      { X := X, p := CategoryStruct.id X, idem := }.p = CategoryStruct.id X

      The obvious fully faithful functor toKaroubi sends an object X : C to the obvious formal direct factor of X given by 𝟙 X.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        @[simp]
        theorem CategoryTheory.Idempotents.toKaroubi_map_f (C : Type u_1) [Category.{v_1, u_1} C] {X✝ Y✝ : C} (f : X✝ Y✝) :
        ((toKaroubi C).map f).f = f

        The functor toKaroubi C : C ⥤ Karoubi C is fully faithful.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[implicit_reducible]
          Equations
          @[simp]
          theorem CategoryTheory.Idempotents.add_def {C : Type u_1} [Category.{v_1, u_1} C] [Preadditive C] {P Q : Karoubi C} (f g : P Q) :
          f + g = { f := f.f + g.f, comm := }
          @[implicit_reducible]
          Equations
          @[simp]
          theorem CategoryTheory.Idempotents.neg_def {C : Type u_1} [Category.{v_1, u_1} C] [Preadditive C] {P Q : Karoubi C} (f : P Q) :
          -f = { f := -f.f, comm := }
          @[implicit_reducible]
          Equations
          @[simp]
          theorem CategoryTheory.Idempotents.zero_def {C : Type u_1} [Category.{v_1, u_1} C] [Preadditive C] {P Q : Karoubi C} :
          0 = { f := 0, comm := }
          @[implicit_reducible]
          Equations
          • One or more equations did not get rendered due to their size.

          The map sending f : P ⟶ Q to f.f : P.X ⟶ Q.X is additive.

          Equations
          Instances For
            @[simp]
            theorem CategoryTheory.Idempotents.Karoubi.sum_hom {C : Type u_1} [Category.{v_1, u_1} C] [Preadditive C] {P Q : Karoubi C} {α : Type u_2} (s : Finset α) (f : α → (P Q)) :
            (∑ xs, f x).f = xs, (f x).f
            @[implicit_reducible]

            The category Karoubi C is preadditive if C is.

            Equations

            If C is idempotent complete, the functor toKaroubi : C ⥤ Karoubi C is an equivalence.

            def CategoryTheory.Idempotents.Karoubi.decompId_i {C : Type u_1} [Category.{v_1, u_1} C] (P : Karoubi C) :
            P { X := P.X, p := CategoryStruct.id P.X, idem := }

            The split mono which appears in the factorisation decompId P.

            Equations
            Instances For
              def CategoryTheory.Idempotents.Karoubi.decompId_p {C : Type u_1} [Category.{v_1, u_1} C] (P : Karoubi C) :
              { X := P.X, p := CategoryStruct.id P.X, idem := } P

              The split epi which appears in the factorisation decompId P.

              Equations
              Instances For

                The formal direct factor of P.X given by the idempotent P.p in the category C is actually a direct factor in the category Karoubi C.

                The formal direct factor of P.X given by the idempotent P.p in the category C is actually a direct factor in the category Karoubi C.

                @[simp]
                theorem CategoryTheory.Idempotents.Karoubi.zsmul_hom {C : Type u_1} [Category.{v_1, u_1} C] [Preadditive C] {P Q : Karoubi C} (n : ) (f : P Q) :
                (n f).f = n f.f

                If X : Karoubi C, then X is a retract of ((toKaroubi C).obj X.X).

                Equations
                • X.retract = { i := { f := X.p, comm := }, r := { f := X.p, comm := }, retract := }
                Instances For