Documentation

Mathlib.CategoryTheory.Bicategory.NaturalTransformation.Oplax

Transformations between oplax functors #

Just as there are natural transformations between functors, there are transformations between oplax functors. The equality in the naturality condition of a natural transformation gets replaced by a specified 2-morphism. Now, there are three possible types of transformations (between oplax functors):

These differ in the direction (and invertibility) of the 2-morphisms involved in the naturality condition.

Main definitions #

Using these, we define three (scoped) CategoryStruct instances on B ⥤ᵒᵖᴸ C, in the Oplax.LaxTrans, Oplax.OplaxTrans, and Oplax.StrongTrans namespaces. The arrows in these CategoryStruct instances are given by lax transformations, oplax transformations, and strong transformations respectively.

We also provide API for going between oplax transformations and strong transformations:

References #

structure CategoryTheory.Oplax.LaxTrans {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F G : OplaxFunctor B C) :
Type (max (max (max u₁ v₁) v₂) w₂)

If η is a lax transformation between F and G, we have a 1-morphism η.app a : F.obj a ⟶ G.obj a for each object a : B. We also have a 2-morphism η.naturality f : app a ≫ G.map f ⟶ F.map f ≫ app b for each 1-morphism f : a ⟶ b. These 2-morphisms satisfy the naturality condition, and preserve the identities and the compositions modulo some adjustments of domains and codomains of 2-morphisms.

Instances For
    @[simp]
    theorem CategoryTheory.Oplax.LaxTrans.naturality_naturality_assoc {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G : OplaxFunctor B C} (self : LaxTrans F G) {a b : B} {f g : a b} (η : f g) {Z : F.obj a G.obj b} (h : CategoryStruct.comp (F.map g) (self.app b) Z) :
    def CategoryTheory.Oplax.LaxTrans.id {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F : OplaxFunctor B C) :

    The identity lax transformation.

    Instances For
      @[implicit_reducible]
      @[reducible, inline]
      abbrev CategoryTheory.Oplax.LaxTrans.vCompApp {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G H : OplaxFunctor B C} (η : LaxTrans F G) (θ : LaxTrans G H) (a : B) :
      F.obj a H.obj a

      Auxiliary definition for vComp.

      Instances For
        @[reducible, inline]
        abbrev CategoryTheory.Oplax.LaxTrans.vCompNaturality {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G H : OplaxFunctor B C} (η : LaxTrans F G) (θ : LaxTrans G H) {a b : B} (f : a b) :

        Auxiliary definition for vComp.

        Instances For
          theorem CategoryTheory.Oplax.LaxTrans.vComp_naturality_naturality {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G H : OplaxFunctor B C} (η : LaxTrans F G) (θ : LaxTrans G H) {a b : B} {f g : a b} (β : f g) :
          def CategoryTheory.Oplax.LaxTrans.vComp {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G H : OplaxFunctor B C} (η : LaxTrans F G) (θ : LaxTrans G H) :

          Vertical composition of lax transformations.

          Instances For
            @[implicit_reducible]

            CategoryStruct on OplaxFunctor B C where the (1-)morphisms are given by lax transformations.

            Instances For
              @[simp]
              theorem CategoryTheory.Oplax.LaxTrans.comp_naturality {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {X✝ Y✝ Z✝ : OplaxFunctor B C} (η : LaxTrans X✝ Y✝) (θ : LaxTrans Y✝ Z✝) {a✝ b✝ : B} (f : a✝ b✝) :
              @[simp]
              theorem CategoryTheory.Oplax.LaxTrans.comp_app {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {X✝ Y✝ Z✝ : OplaxFunctor B C} (η : LaxTrans X✝ Y✝) (θ : LaxTrans Y✝ Z✝) (a : B) :
              @[simp]
              @[simp]
              theorem CategoryTheory.Oplax.LaxTrans.id_app {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F : OplaxFunctor B C) (a : B) :
              structure CategoryTheory.Oplax.OplaxTrans {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F G : OplaxFunctor B C) :
              Type (max (max (max u₁ v₁) v₂) w₂)

              If η is an oplax transformation between F and G, we have a 1-morphism η.app a : F.obj a ⟶ G.obj a for each object a : B. We also have a 2-morphism η.naturality f : F.map f ≫ app b ⟶ app a ≫ G.map f for each 1-morphism f : a ⟶ b. These 2-morphisms satisfy the naturality condition, and preserve the identities and the compositions modulo some adjustments of domains and codomains of 2-morphisms.

              Instances For
                @[simp]
                theorem CategoryTheory.Oplax.OplaxTrans.naturality_naturality_assoc {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G : OplaxFunctor B C} (self : OplaxTrans F G) {a b : B} {f g : a b} (η : f g) {Z : F.obj a G.obj b} (h : CategoryStruct.comp (self.app a) (G.map g) Z) :
                @[simp]
                theorem CategoryTheory.Oplax.OplaxTrans.whiskerRight_naturality_comp_assoc {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G : OplaxFunctor B C} (η : OplaxTrans F G) {a b c : B} {a' : C} (f : a b) (g : b c) (h : G.obj c a') {Z : F.obj a a'} (h✝ : CategoryStruct.comp (η.app a) (CategoryStruct.comp (CategoryStruct.comp (G.map f) (G.map g)) h) Z) :

                The identity oplax transformation.

                Instances For
                  @[implicit_reducible]
                  def CategoryTheory.Oplax.OplaxTrans.vcomp {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G H : OplaxFunctor B C} (η : OplaxTrans F G) (θ : OplaxTrans G H) :

                  Vertical composition of oplax transformations.

                  Instances For
                    @[implicit_reducible]

                    CategoryStruct on B ⥤ᵒᵖᴸ C where the (1-)morphisms are given by oplax transformations.

                    Instances For
                      @[simp]
                      theorem CategoryTheory.Oplax.OplaxTrans.categoryStruct_comp_naturality {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {X✝ Y✝ Z✝ : OplaxFunctor B C} (η : OplaxTrans X✝ Y✝) (θ : OplaxTrans Y✝ Z✝) {a b : B} (f : a b) :
                      @[simp]
                      theorem CategoryTheory.Oplax.OplaxTrans.categoryStruct_comp_app {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {X✝ Y✝ Z✝ : OplaxFunctor B C} (η : OplaxTrans X✝ Y✝) (θ : OplaxTrans Y✝ Z✝) (a : B) :
                      structure CategoryTheory.Oplax.StrongTrans {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F G : OplaxFunctor B C) :
                      Type (max (max (max u₁ v₁) v₂) w₂)

                      A strong natural transformation between oplax functors F and G is a natural transformation that is "natural up to 2-isomorphisms".

                      More precisely, it consists of the following:

                      • a 1-morphism η.app a : F.obj a ⟶ G.obj a for each object a : B.
                      • a 2-isomorphism η.naturality f : F.map f ≫ app b ≅ app a ≫ G.map f for each 1-morphism f : a ⟶ b.
                      • These 2-isomorphisms satisfy the naturality condition, and preserve the identities and the compositions modulo some adjustments of domains and codomains of 2-morphisms.
                      Instances For
                        @[simp]
                        theorem CategoryTheory.Oplax.StrongTrans.naturality_naturality_assoc {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G : OplaxFunctor B C} (self : StrongTrans F G) {a b : B} {f g : a b} (η : f g) {Z : F.obj a G.obj b} (h : CategoryStruct.comp (self.app a) (G.map g) Z) :
                        structure CategoryTheory.Oplax.OplaxTrans.StrongCore {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G : OplaxFunctor B C} (η : F G) :
                        Type (max (max u₁ v₁) w₂)

                        A structure on an oplax transformation that promotes it to a strong transformation.

                        See StrongTrans.mkOfOplax.

                        Instances For
                          def CategoryTheory.Oplax.StrongTrans.toOplax {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G : OplaxFunctor B C} (η : StrongTrans F G) :

                          The underlying oplax natural transformation of a strong natural transformation.

                          Instances For
                            @[simp]
                            theorem CategoryTheory.Oplax.StrongTrans.toOplax_app {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G : OplaxFunctor B C} (η : StrongTrans F G) (a : B) :
                            η.toOplax.app a = η.app a
                            @[simp]
                            theorem CategoryTheory.Oplax.StrongTrans.toOplax_naturality {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G : OplaxFunctor B C} (η : StrongTrans F G) {a✝ b✝ : B} (f : a✝ b✝) :
                            def CategoryTheory.Oplax.StrongTrans.mkOfOplax {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G : OplaxFunctor B C} (η : OplaxTrans F G) (η' : η.StrongCore) :

                            Construct a strong natural transformation from an oplax natural transformation whose naturality 2-morphism is an isomorphism.

                            Instances For
                              noncomputable def CategoryTheory.Oplax.StrongTrans.mkOfOplax' {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G : OplaxFunctor B C} (η : OplaxTrans F G) [∀ (a b : B) (f : a b), IsIso (η.naturality f)] :

                              Construct a strong natural transformation from an oplax natural transformation whose naturality 2-morphism is an isomorphism.

                              Instances For

                                The identity strong natural transformation.

                                Instances For
                                  @[simp]
                                  theorem CategoryTheory.Oplax.StrongTrans.id_app {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F : OplaxFunctor B C) (a : B) :
                                  (id F).app a = (OplaxTrans.id F).app a
                                  @[simp]
                                  theorem CategoryTheory.Oplax.StrongTrans.id_naturality_hom {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F : OplaxFunctor B C) {a✝ b✝ : B} (f : a✝ b✝) :
                                  @[simp]
                                  theorem CategoryTheory.Oplax.StrongTrans.id_naturality_inv {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F : OplaxFunctor B C) {a✝ b✝ : B} (f : a✝ b✝) :
                                  @[implicit_reducible]
                                  def CategoryTheory.Oplax.StrongTrans.vcomp {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G H : OplaxFunctor B C} (η : StrongTrans F G) (θ : StrongTrans G H) :

                                  Vertical composition of strong natural transformations.

                                  Instances For
                                    @[simp]
                                    theorem CategoryTheory.Oplax.StrongTrans.vcomp_app {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G H : OplaxFunctor B C} (η : StrongTrans F G) (θ : StrongTrans G H) (a : B) :
                                    (η.vcomp θ).app a = (η.toOplax.vcomp θ.toOplax).app a
                                    @[simp]
                                    theorem CategoryTheory.Oplax.StrongTrans.vcomp_naturality_inv {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G H : OplaxFunctor B C} (η : StrongTrans F G) (θ : StrongTrans G H) {a✝ b✝ : B} (f : a✝ b✝) :
                                    @[simp]
                                    theorem CategoryTheory.Oplax.StrongTrans.vcomp_naturality_hom {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G H : OplaxFunctor B C} (η : StrongTrans F G) (θ : StrongTrans G H) {a✝ b✝ : B} (f : a✝ b✝) :
                                    @[implicit_reducible]

                                    CategoryStruct on B ⥤ᵒᵖᴸ C where the (1-)morphisms are given by strong transformations.

                                    Instances For
                                      @[simp]
                                      theorem CategoryTheory.Oplax.StrongTrans.categoryStruct_comp_app {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {X✝ Y✝ Z✝ : OplaxFunctor B C} (η : StrongTrans X✝ Y✝) (θ : StrongTrans Y✝ Z✝) (a : B) :
                                      @[simp]
                                      theorem CategoryTheory.Oplax.StrongTrans.categoryStruct_comp_naturality {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {X✝ Y✝ Z✝ : OplaxFunctor B C} (η : StrongTrans X✝ Y✝) (θ : StrongTrans Y✝ Z✝) {a✝ b✝ : B} (f : a✝ b✝) :
                                      (CategoryStruct.comp η θ).naturality f = (Bicategory.associator (X✝.map f) (η.app b✝) (θ.app b✝)).symm ≪≫ Bicategory.whiskerRightIso (η.naturality f) (θ.app b✝) ≪≫ Bicategory.associator (η.app a✝) (Y✝.map f) (θ.app b✝) ≪≫ Bicategory.whiskerLeftIso (η.app a✝) (θ.naturality f) ≪≫ (Bicategory.associator (η.app a✝) (θ.app a✝) (Z✝.map f)).symm
                                      theorem CategoryTheory.Oplax.StrongTrans.whiskerLeft_naturality_naturality_app {B : Type u_1} [Bicategory B] {G H : OplaxFunctor B Cat} (θ : StrongTrans G H) {a b : B} {a' : Cat} (f : a' G.obj a) {g h : a b} (β : g h) (X : a') :
                                      theorem CategoryTheory.Oplax.StrongTrans.whiskerRight_naturality_naturality_app {B : Type u_1} [Bicategory B] {F G : OplaxFunctor B Cat} (η : StrongTrans F G) {a b : B} {a' : Cat} {f g : a b} (β : f g) (h : G.obj b a') (X : (F.obj a)) :
                                      @[simp]
                                      theorem CategoryTheory.Oplax.StrongTrans.whiskerRight_naturality_comp_assoc {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {F G : OplaxFunctor B C} (η : StrongTrans F G) {a b c : B} {a' : C} (f : a b) (g : b c) (h : G.obj c a') {Z : F.obj a a'} (h✝ : CategoryStruct.comp (η.app a) (CategoryStruct.comp (CategoryStruct.comp (G.map f) (G.map g)) h) Z) :