Documentation

Mathlib.CategoryTheory.Inserter.Basic

Inserter categories #

Let F G : C ⥤ D be a parallel pair of functors. In this file, we define a category Inserter F G. Objects of Inserter F G correspond to pairs (K : C) × (F.obj K ⟶ G.obj K). Such categories can be used to encode data such as algebra for endofunctors. They are also a basic building block for bicategorical limits of categories.

Main constructions #

References #

Future work #

structure CategoryTheory.Inserter {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (F G : Functor C D) :
Type (max u_1 v_2)

The inserter of a pair of parallel functors F G : C ⥤ D is the category of arrows F.obj K ⟶ G.obj K, with morphisms K ⟶ K' making the obvious square commute as morphims.

  • obj : C

    the object of C underlying the object

  • hom : F.obj self.obj ⟶ G.obj self.obj

    the morphism F.obj obj ⟶ G.obj obj corresponding to the object

Instances For
    structure CategoryTheory.Inserter.Hom {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] {F G : Functor C D} (x y : Inserter F G) :
    Type v_1

    Morphisms in the inserter category are given by morphisms between the underlying objects that make the obvious square commute.

    Instances For
      theorem CategoryTheory.Inserter.Hom.ext_iff {C : Type u_1} {D : Type u_2} {inst✝ : Category.{v_1, u_1} C} {inst✝¹ : Category.{v_2, u_2} D} {F G : Functor C D} {x y : Inserter F G} {x✝ y✝ : x.Hom y} :
      x✝ = y✝ ↔ x✝.hom = y✝.hom
      theorem CategoryTheory.Inserter.Hom.ext {C : Type u_1} {D : Type u_2} {inst✝ : Category.{v_1, u_1} C} {inst✝¹ : Category.{v_2, u_2} D} {F G : Functor C D} {x y : Inserter F G} {x✝ y✝ : x.Hom y} (hom : x✝.hom = y✝.hom) :
      x✝ = y✝
      @[instance_reducible]
      Equations
      • One or more equations did not get rendered due to their size.
      @[simp]
      theorem CategoryTheory.Inserter.comp_hom {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] {F G : Functor C D} {x y z : Inserter F G} (f : x ⟶ y) (g : y ⟶ z) :
      @[simp]
      theorem CategoryTheory.Inserter.comm {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] {F G : Functor C D} {x y : Inserter F G} (f : x ⟶ y) :
      @[simp]
      theorem CategoryTheory.Inserter.comm_assoc {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] {F G : Functor C D} {x y : Inserter F G} (f : x ⟶ y) {Z : D} (h : G.obj y.obj ⟶ Z) :
      theorem CategoryTheory.Inserter.hom_ext {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] {F G : Functor C D} {x y : Inserter F G} {f g : x ⟶ y} (h : f.hom = g.hom) :
      f = g
      theorem CategoryTheory.Inserter.hom_ext_iff {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] {F G : Functor C D} {x y : Inserter F G} {f g : x ⟶ y} :
      f = g ↔ f.hom = g.hom
      @[implicit_reducible]

      The projection Inserter F G ⥤ C that sends an object to its underlying object of C.

      Equations
      Instances For
        @[simp]
        theorem CategoryTheory.Inserter.proj_map {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (F G : Functor C D) {X✝ Y✝ : Inserter F G} (f : X✝ ⟶ Y✝) :
        (proj F G).map f = f.hom
        @[simp]
        theorem CategoryTheory.Inserter.proj_obj {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (F G : Functor C D) (x : Inserter F G) :
        (proj F G).obj x = x.obj
        def CategoryTheory.Inserter.τ {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (F G : Functor C D) :
        (proj F G).comp F ⟶ (proj F G).comp G

        The structure morphisms of objects of the inserter assemble into a natural transformation proj ⋙ F ⟶ proj ⋙ G.

        Equations
        Instances For
          @[simp]
          theorem CategoryTheory.Inserter.τ_app {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (F G : Functor C D) (x : Inserter F G) :
          (τ F G).app x = x.hom
          def CategoryTheory.Inserter.mkIso {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] {F G : Functor C D} {E E' : Inserter F G} (e : E.obj ≅ E'.obj) (he : CategoryStruct.comp (F.map e.hom) E'.hom = CategoryStruct.comp E.hom (G.map e.hom) := by cat_disch) :
          E ≅ E'

          Construct an isomorphism of inserters from an isomorphism of the underlying objects

          Equations
          Instances For
            @[simp]
            theorem CategoryTheory.Inserter.mkIso_hom_hom {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] {F G : Functor C D} {E E' : Inserter F G} (e : E.obj ≅ E'.obj) (he : CategoryStruct.comp (F.map e.hom) E'.hom = CategoryStruct.comp E.hom (G.map e.hom) := by cat_disch) :
            (mkIso e he).hom.hom = e.hom
            @[simp]
            theorem CategoryTheory.Inserter.mkIso_inv_hom {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] {F G : Functor C D} {E E' : Inserter F G} (e : E.obj ≅ E'.obj) (he : CategoryStruct.comp (F.map e.hom) E'.hom = CategoryStruct.comp E.hom (G.map e.hom) := by cat_disch) :
            (mkIso e he).inv.hom = e.inv
            instance CategoryTheory.Inserter.instIsIsoHom {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (F G : Functor C D) {E E' : Inserter F G} (f : E ⟶ E') [IsIso f] :
            @[simp]
            theorem CategoryTheory.Inserter.inv_hom {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (F G : Functor C D) {E E' : Inserter F G} (f : E ⟶ E') [IsIso f] :
            (inv f).hom = inv f.hom
            theorem CategoryTheory.Inserter.isIso_iff {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (F G : Functor C D) {E E' : Inserter F G} (f : E ⟶ E') :