Documentation

Mathlib.CategoryTheory.IsoCat

Isomorphisms of categories #

An IsoCat C D is an isomorphism of categories: a pair of functors C ⥤ D and D ⥤ C whose composites are equal (not merely naturally isomorphic) to the identity functors. This is a strict notion, stronger than an equivalence of categories C ≌ D. We also define Functor.IsIso as a property saying that a functor is fully faithful and bijective on objects. We develop basic api for these two concepts.

Unless the application explicitely demands an isomorphism, the equivalence of categories is to be preferred.

Main definitions #

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

An isomorphism of categories: a pair of functors whose composites are equal to the identity functors.

Instances For

    The identity isomorphism of categories.

    Equations
    Instances For

      The inverse isomorphism of categories, obtained by swapping functor and inverse.

      Equations
      Instances For
        def CategoryTheory.IsoCat.trans {C : Type u_1} {D : Type u_2} {E : Type u_3} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] [Category.{v_3, u_3} E] (e : IsoCat C D) (f : IsoCat D E) :
        IsoCat C E

        Composition of isomorphisms of categories.

        Equations
        Instances For
          @[simp]
          @[simp]

          A functor F : C ⥤ D is an isomorphism of categories if it is full, faithful and bijective on objects. Such a functor has a strict inverse Functor.strictInv and assembles into an IsoCat via Functor.asIsomorphism.

          • faithful : F.Faithful

            A functor which is an isomorphism of categories is faithful.

          • full : F.Full

            A functor which is an isomorphism of categories is full.

          • bijective_obj : Function.Bijective F.obj

            A functor which is an isomorphism of categories is bijective on objects.

          Instances
            noncomputable def CategoryTheory.Functor.objEquiv {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (F : Functor C D) [F.IsIso] :
            C D

            The bijection on objects induced by a functor that is an isomorphism of categories.

            Equations
            Instances For
              @[simp]
              @[simp]
              noncomputable def CategoryTheory.Functor.strictInv {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (F : Functor C D) [F.IsIso] :

              The strict inverse of a functor that is an isomorphism of categories, defined using Functor.objEquiv on objects and Functor.preimage on morphisms.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                noncomputable def CategoryTheory.Functor.asIsomorphism {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (F : Functor C D) [F.IsIso] :
                IsoCat C D

                A functor that is an isomorphism of categories assembles into an IsoCat, with Functor.strictInv as its inverse.

                Equations
                Instances For

                  The equivalence of categories underlying an IsoCat, with the unit and counit isomorphisms induced by the defining equalities.

                  Equations
                  Instances For
                    def CategoryTheory.Equivalence.toIsoCat {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (e : C D) (h : ∀ (X : C), e.inverse.obj (e.functor.obj X) = X) (h' : ∀ (Y : D), e.functor.obj (e.inverse.obj Y) = Y) (k : ∀ (X : C), e.unitIso.hom.app X = eqToHom := by cat_disch) (k' : ∀ (Y : D), e.counitIso.hom.app Y = eqToHom := by cat_disch) :
                    IsoCat C D

                    Promotes an equivalence of categories e : C ≌ D whose unit and counit isomorphisms are given by equalities of objects into an IsoCat C D.

                    Equations
                    Instances For
                      @[simp]
                      theorem CategoryTheory.Equivalence.toIsoCat_inverse {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (e : C D) (h : ∀ (X : C), e.inverse.obj (e.functor.obj X) = X) (h' : ∀ (Y : D), e.functor.obj (e.inverse.obj Y) = Y) (k : ∀ (X : C), e.unitIso.hom.app X = eqToHom := by cat_disch) (k' : ∀ (Y : D), e.counitIso.hom.app Y = eqToHom := by cat_disch) :
                      (e.toIsoCat h h' k k').inverse = e.inverse
                      @[simp]
                      theorem CategoryTheory.Equivalence.toIsoCat_functor {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (e : C D) (h : ∀ (X : C), e.inverse.obj (e.functor.obj X) = X) (h' : ∀ (Y : D), e.functor.obj (e.inverse.obj Y) = Y) (k : ∀ (X : C), e.unitIso.hom.app X = eqToHom := by cat_disch) (k' : ∀ (Y : D), e.counitIso.hom.app Y = eqToHom := by cat_disch) :
                      (e.toIsoCat h h' k k').functor = e.functor
                      instance CategoryTheory.instIsIsoComp {C : Type u_1} {D : Type u_2} {E : Type u_3} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] [Category.{v_3, u_3} E] (F : Functor C D) (G : Functor D E) [F.IsIso] [G.IsIso] :
                      (F.comp G).IsIso