Documentation

Mathlib.CategoryTheory.InducedCategory

Induced categories and full subcategories #

Given a category D and a function F : C β†’ D from a type C to the objects of D, there is an essentially unique way to give C a category structure such that F becomes a fully faithful functor, namely by taking $ Hom_C(X, Y) = Hom_D(FX, FY) $. We call this the category induced from D along F.

Implementation notes #

The type of morphisms between X and Y in InducedCategory D F is not definitionally equal to F X ⟢ F Y. Instead, this type is made a 1-field structure. Use InducedCategory.homMk to construct morphisms in induced categories.

def CategoryTheory.InducedCategory {C : Type u₁} (D : Type uβ‚‚) (_F : C β†’ D) :
Type u₁

InducedCategory D F, where F : C β†’ D, is a typeclass synonym for C, which provides a category structure so that the morphisms X ⟢ Y are the morphisms in D from F X to F Y.

Instances For
    @[implicit_reducible]
    instance CategoryTheory.InducedCategory.hasCoeToSort {C : Type u₁} {D : Type uβ‚‚} (F : C β†’ D) {Ξ± : Sort u_1} [CoeSort D Ξ±] :
    CoeSort (InducedCategory D F) Ξ±
    structure CategoryTheory.InducedCategory.Hom {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] {F : C β†’ D} (X Y : InducedCategory D F) :

    The type of morphisms in InducedCategory D F between X and Y is a 1-field structure which identifies to F X ⟢ F Y.

    • hom : F X ⟢ F Y

      The underlying morphism.

    Instances For
      theorem CategoryTheory.InducedCategory.Hom.ext_iff {C : Type u₁} {D : Type uβ‚‚} {inst✝ : Category.{v, uβ‚‚} D} {F : C β†’ D} {X Y : InducedCategory D F} {x y : X.Hom Y} :
      x = y ↔ x.hom = y.hom
      theorem CategoryTheory.InducedCategory.Hom.ext {C : Type u₁} {D : Type uβ‚‚} {inst✝ : Category.{v, uβ‚‚} D} {F : C β†’ D} {X Y : InducedCategory D F} {x y : X.Hom Y} (hom : x.hom = y.hom) :
      x = y
      @[implicit_reducible]
      @[simp]
      theorem CategoryTheory.InducedCategory.comp_hom {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] {F : C β†’ D} {X✝ Y✝ Z✝ : InducedCategory D F} (f : X✝.Hom Y✝) (g : Y✝.Hom Z✝) :
      @[simp]
      theorem CategoryTheory.InducedCategory.id_hom {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] {F : C β†’ D} (X : InducedCategory D F) :
      theorem CategoryTheory.InducedCategory.comp_hom_assoc {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] {F : C β†’ D} {X✝ Y✝ Z✝ : InducedCategory D F} (f : X✝.Hom Y✝) (g : Y✝.Hom Z✝) {Z : D} (h : F Z✝ ⟢ Z) :
      theorem CategoryTheory.InducedCategory.hom_ext {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] {F : C β†’ D} {X Y : InducedCategory D F} {f g : X ⟢ Y} (h : f.hom = g.hom) :
      f = g
      theorem CategoryTheory.InducedCategory.hom_ext_iff {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] {F : C β†’ D} {X Y : InducedCategory D F} {f g : X ⟢ Y} :
      f = g ↔ f.hom = g.hom
      def CategoryTheory.InducedCategory.homMk {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] {F : C β†’ D} {X Y : InducedCategory D F} (f : F X ⟢ F Y) :
      X ⟢ Y

      Construct a morphism in the induced category from a morphism in the original category.

      Instances For
        @[simp]
        theorem CategoryTheory.InducedCategory.homMk_hom {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] {F : C β†’ D} {X Y : InducedCategory D F} (f : F X ⟢ F Y) :
        (homMk f).hom = f
        def CategoryTheory.InducedCategory.homEquiv {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] {F : C β†’ D} {X Y : InducedCategory D F} :
        (X ⟢ Y) ≃ (F X ⟢ F Y)

        Morphisms in InducedCategory D F identify to morphisms in D.

        Instances For
          @[simp]
          theorem CategoryTheory.InducedCategory.homEquiv_apply {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] {F : C β†’ D} {X Y : InducedCategory D F} (f : X ⟢ Y) :
          @[simp]
          theorem CategoryTheory.InducedCategory.homEquiv_symm_apply_hom {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] {F : C β†’ D} {X Y : InducedCategory D F} (f : F X ⟢ F Y) :
          (homEquiv.symm f).hom = f
          def CategoryTheory.InducedCategory.isoMk {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] {F : C β†’ D} {X Y : InducedCategory D F} (f : F X β‰… F Y) :
          X β‰… Y

          Construct an isomorphism in the induced category from an isomorphism in the original category.

          Instances For
            @[simp]
            theorem CategoryTheory.InducedCategory.isoMk_inv {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] {F : C β†’ D} {X Y : InducedCategory D F} (f : F X β‰… F Y) :
            (isoMk f).inv = homMk f.inv
            @[simp]
            theorem CategoryTheory.InducedCategory.isoMk_hom {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] {F : C β†’ D} {X Y : InducedCategory D F} (f : F X β‰… F Y) :
            (isoMk f).hom = homMk f.hom
            def CategoryTheory.inducedFunctor {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] (F : C β†’ D) :

            The forgetful functor from an induced category to the original category, forgetting the extra data.

            Instances For
              @[simp]
              theorem CategoryTheory.inducedFunctor_obj {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] (F : C β†’ D) (a✝ : C) :
              (inducedFunctor F).obj a✝ = F a✝
              @[simp]
              theorem CategoryTheory.inducedFunctor_map {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] (F : C β†’ D) {X✝ Y✝ : InducedCategory D F} (f : X✝ ⟢ Y✝) :

              The induced functor inducedFunctor F : InducedCategory D F β₯€ D is fully faithful.

              Instances For
                instance CategoryTheory.InducedCategory.full {C : Type u₁} {D : Type uβ‚‚} [Category.{v, uβ‚‚} D] (F : C β†’ D) :