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 explicitly 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
    @[implicit_reducible]

    The identity isomorphism of categories.

    Equations
    Instances For
      @[implicit_reducible]

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

      Equations
      Instances For
        @[implicit_reducible]
        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]
          @[implicit_reducible]

          The bijection on objects induced by an isomorphism of categories.

          Equations
          Instances For
            @[simp]
            theorem CategoryTheory.IsoCat.objEquiv_apply {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (e : IsoCat C D) (a✝ : C) :
            e.objEquiv a✝ = e.functor.obj a✝
            @[simp]
            theorem CategoryTheory.IsoCat.objEquiv_symm_apply {C : Type u_1} {D : Type u_2} [Category.{v_1, u_1} C] [Category.{v_2, u_2} D] (e : IsoCat C D) (a✝ : D) :
            e.objEquiv.symm a✝ = e.inverse.obj a✝
            theorem CategoryTheory.IsoCat.functor_comp_injective {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 G : Functor D E} (h : e.functor.comp F = e.functor.comp G) :
            F = G
            theorem CategoryTheory.IsoCat.comp_functor_injective {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 G : Functor E C} (h : F.comp e.functor = G.comp e.functor) :
            F = G

            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_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
                        @[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
                        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
                        @[implicit_reducible]

                        The isomorphism of categories between InducedCategory C e and C when e : D ≃ C is a bijection.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          @[simp]
                          theorem CategoryTheory.InducedCategory.isoCat_inverse_map_hom {C : Type u_4} {D : Type u_5} [Category.{v_4, u_4} C] (e : D C) {X✝ Y✝ : C} (f : X✝ Y✝) :
                          @[simp]
                          theorem CategoryTheory.InducedCategory.isoCat_inverse_obj {C : Type u_4} {D : Type u_5} [Category.{v_4, u_4} C] (e : D C) (X : C) :
                          (isoCat e).inverse.obj X = e.symm X
                          @[reducible, inline]

                          The equivalence of categories between InducedCategory C e and C when e : D ≃ C is a bijection.

                          Equations
                          Instances For