Documentation

Mathlib.CategoryTheory.Bicategory.Functor.Lax

Lax functors #

A lax functor F between bicategories B and C consists of

Main definitions #

Future work #

Some constructions in the bicategory library have only been done in terms of oplax functors, since lax functors had not yet been added (e.g FunctorBicategory.lean). A possible project would be to mirror these constructions for lax functors.

structure CategoryTheory.LaxFunctor (B : Type u₁) [Bicategory B] (C : Type u₂) [Bicategory C] extends CategoryTheory.PrelaxFunctor B C :
Type (max (max (max (max (max u₁ u₂) v₁) v₂) w₁) w₂)

A lax functor F between bicategories B and C consists of a function between objects F.obj, a function between 1-morphisms F.map, and a function between 2-morphisms F.map₂.

Unlike functors between categories, F.map do not need to strictly commute with the composition, and do not need to strictly preserve the identity. Instead, there are specified 2-morphisms 𝟙 (F.obj a) ⟶ F.map (𝟙 a) and F.map f ≫ F.map g ⟶ F.map (f ≫ g).

F.map₂ strictly commute with compositions and preserve the identity. They also preserve the associator, the left unitor, and the right unitor modulo some adjustments of domains and codomains of 2-morphisms.

Instances For
    @[simp]
    theorem CategoryTheory.LaxFunctor.mapComp_naturality_right_assoc {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (self : LaxFunctor B C) {a b c : B} (f : a b) {g g' : b c} (η : g g') {Z : self.obj a self.obj c} (h : self.map (CategoryStruct.comp f g') Z) :
    CategoryStruct.comp (self.mapComp f g) (CategoryStruct.comp (self.map₂ (Bicategory.whiskerLeft f η)) h) = CategoryStruct.comp (Bicategory.whiskerLeft (self.map f) (self.map₂ η)) (CategoryStruct.comp (self.mapComp f g') h)
    @[simp]
    theorem CategoryTheory.LaxFunctor.mapComp_naturality_left_assoc {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (self : LaxFunctor B C) {a b c : B} {f f' : a b} (η : f f') (g : b c) {Z : self.obj a self.obj c} (h : self.map (CategoryStruct.comp f' g) Z) :
    CategoryStruct.comp (self.mapComp f g) (CategoryStruct.comp (self.map₂ (Bicategory.whiskerRight η g)) h) = CategoryStruct.comp (Bicategory.whiskerRight (self.map₂ η) (self.map g)) (CategoryStruct.comp (self.mapComp f' g) h)
    @[simp]
    theorem CategoryTheory.LaxFunctor.map₂_associator_assoc {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (self : LaxFunctor B C) {a b c d : B} (f : a b) (g : b c) (h : c d) {Z : self.obj a self.obj d} (h✝ : self.map (CategoryStruct.comp f (CategoryStruct.comp g h)) Z) :
    CategoryStruct.comp (Bicategory.whiskerRight (self.mapComp f g) (self.map h)) (CategoryStruct.comp (self.mapComp (CategoryStruct.comp f g) h) (CategoryStruct.comp (self.map₂ (Bicategory.associator f g h).hom) h✝)) = CategoryStruct.comp (Bicategory.associator (self.map f) (self.map g) (self.map h)).hom (CategoryStruct.comp (Bicategory.whiskerLeft (self.map f) (self.mapComp g h)) (CategoryStruct.comp (self.mapComp f (CategoryStruct.comp g h)) h✝))
    @[simp]
    theorem CategoryTheory.LaxFunctor.map₂_associator_app {B : Type u_1} [Bicategory B] (self : LaxFunctor B Cat) {a b c d : B} (f : a b) (g : b c) (h : c d) (X : (self.obj a)) :
    CategoryStruct.comp ((self.map h).map ((self.mapComp f g).app X)) (CategoryStruct.comp ((self.mapComp (CategoryStruct.comp f g) h).app X) ((self.map₂ (Bicategory.associator f g h).hom).app X)) = CategoryStruct.comp ((Bicategory.associator (self.map f) (self.map g) (self.map h)).hom.app X) (CategoryStruct.comp ((self.mapComp g h).app ((self.map f).obj X)) ((self.mapComp f (CategoryStruct.comp g h)).app X))
    @[simp]
    theorem CategoryTheory.LaxFunctor.mapComp_naturality_left_app {B : Type u_1} [Bicategory B] (self : LaxFunctor B Cat) {a b c : B} {f f' : a b} (η : f f') (g : b c) (X : (self.obj a)) :
    CategoryStruct.comp ((self.mapComp f g).app X) ((self.map₂ (Bicategory.whiskerRight η g)).app X) = CategoryStruct.comp ((self.map g).map ((self.map₂ η).app X)) ((self.mapComp f' g).app X)
    @[simp]
    theorem CategoryTheory.LaxFunctor.mapComp_naturality_right_app {B : Type u_1} [Bicategory B] (self : LaxFunctor B Cat) {a b c : B} (f : a b) {g g' : b c} (η : g g') (X : (self.obj a)) :
    CategoryStruct.comp ((self.mapComp f g).app X) ((self.map₂ (Bicategory.whiskerLeft f η)).app X) = CategoryStruct.comp ((self.map₂ η).app ((self.map f).obj X)) ((self.mapComp f g').app X)
    theorem CategoryTheory.LaxFunctor.map₂_leftUnitor_assoc {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (self : LaxFunctor B C) {a b : B} (f : a b) {Z : self.obj a self.obj b} (h : self.map (CategoryStruct.comp (CategoryStruct.id a) f) Z) :
    CategoryStruct.comp (self.map₂ (Bicategory.leftUnitor f).inv) h = CategoryStruct.comp (Bicategory.leftUnitor (self.map f)).inv (CategoryStruct.comp (Bicategory.whiskerRight (self.mapId a) (self.map f)) (CategoryStruct.comp (self.mapComp (CategoryStruct.id a) f) h))
    theorem CategoryTheory.LaxFunctor.map₂_rightUnitor_assoc {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (self : LaxFunctor B C) {a b : B} (f : a b) {Z : self.obj a self.obj b} (h : self.map (CategoryStruct.comp f (CategoryStruct.id b)) Z) :
    CategoryStruct.comp (self.map₂ (Bicategory.rightUnitor f).inv) h = CategoryStruct.comp (Bicategory.rightUnitor (self.map f)).inv (CategoryStruct.comp (Bicategory.whiskerLeft (self.map f) (self.mapId b)) (CategoryStruct.comp (self.mapComp f (CategoryStruct.id b)) h))
    theorem CategoryTheory.LaxFunctor.map₂_leftUnitor_app {B : Type u_1} [Bicategory B] (self : LaxFunctor B Cat) {a b : B} (f : a b) (X : (self.obj a)) :
    (self.map₂ (Bicategory.leftUnitor f).inv).app X = CategoryStruct.comp ((Bicategory.leftUnitor (self.map f)).inv.app X) (CategoryStruct.comp ((self.map f).map ((self.mapId a).app X)) ((self.mapComp (CategoryStruct.id a) f).app X))
    theorem CategoryTheory.LaxFunctor.map₂_rightUnitor_app {B : Type u_1} [Bicategory B] (self : LaxFunctor B Cat) {a b : B} (f : a b) (X : (self.obj a)) :
    (self.map₂ (Bicategory.rightUnitor f).inv).app X = CategoryStruct.comp ((Bicategory.rightUnitor (self.map f)).inv.app X) (CategoryStruct.comp ((self.mapId b).app ((self.map f).obj X)) ((self.mapComp f (CategoryStruct.id b)).app X))
    theorem CategoryTheory.LaxFunctor.mapComp_assoc_left {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F : LaxFunctor B C) {a b c d : B} (f : a b) (g : b c) (h : c d) :
    CategoryStruct.comp (Bicategory.whiskerRight (F.mapComp f g) (F.map h)) (F.mapComp (CategoryStruct.comp f g) h) = CategoryStruct.comp (Bicategory.associator (F.map f) (F.map g) (F.map h)).hom (CategoryStruct.comp (Bicategory.whiskerLeft (F.map f) (F.mapComp g h)) (CategoryStruct.comp (F.mapComp f (CategoryStruct.comp g h)) (F.map₂ (Bicategory.associator f g h).inv)))
    theorem CategoryTheory.LaxFunctor.mapComp_assoc_left_assoc {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F : LaxFunctor B C) {a b c d : B} (f : a b) (g : b c) (h : c d) {Z : F.obj a F.obj d} (h✝ : F.map (CategoryStruct.comp (CategoryStruct.comp f g) h) Z) :
    CategoryStruct.comp (Bicategory.whiskerRight (F.mapComp f g) (F.map h)) (CategoryStruct.comp (F.mapComp (CategoryStruct.comp f g) h) h✝) = CategoryStruct.comp (Bicategory.associator (F.map f) (F.map g) (F.map h)).hom (CategoryStruct.comp (Bicategory.whiskerLeft (F.map f) (F.mapComp g h)) (CategoryStruct.comp (F.mapComp f (CategoryStruct.comp g h)) (CategoryStruct.comp (F.map₂ (Bicategory.associator f g h).inv) h✝)))
    theorem CategoryTheory.LaxFunctor.mapComp_assoc_left_app {B : Type u_1} [Bicategory B] (F : LaxFunctor B Cat) {a b c d : B} (f : a b) (g : b c) (h : c d) (X : (F.obj a)) :
    CategoryStruct.comp ((F.map h).map ((F.mapComp f g).app X)) ((F.mapComp (CategoryStruct.comp f g) h).app X) = CategoryStruct.comp ((Bicategory.associator (F.map f) (F.map g) (F.map h)).hom.app X) (CategoryStruct.comp ((F.mapComp g h).app ((F.map f).obj X)) (CategoryStruct.comp ((F.mapComp f (CategoryStruct.comp g h)).app X) ((F.map₂ (Bicategory.associator f g h).inv).app X)))
    theorem CategoryTheory.LaxFunctor.mapComp_assoc_right {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F : LaxFunctor B C) {a b c d : B} (f : a b) (g : b c) (h : c d) :
    CategoryStruct.comp (Bicategory.whiskerLeft (F.map f) (F.mapComp g h)) (F.mapComp f (CategoryStruct.comp g h)) = CategoryStruct.comp (Bicategory.associator (F.map f) (F.map g) (F.map h)).inv (CategoryStruct.comp (Bicategory.whiskerRight (F.mapComp f g) (F.map h)) (CategoryStruct.comp (F.mapComp (CategoryStruct.comp f g) h) (F.map₂ (Bicategory.associator f g h).hom)))
    theorem CategoryTheory.LaxFunctor.mapComp_assoc_right_assoc {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F : LaxFunctor B C) {a b c d : B} (f : a b) (g : b c) (h : c d) {Z : F.obj a F.obj d} (h✝ : F.map (CategoryStruct.comp f (CategoryStruct.comp g h)) Z) :
    CategoryStruct.comp (Bicategory.whiskerLeft (F.map f) (F.mapComp g h)) (CategoryStruct.comp (F.mapComp f (CategoryStruct.comp g h)) h✝) = CategoryStruct.comp (Bicategory.associator (F.map f) (F.map g) (F.map h)).inv (CategoryStruct.comp (Bicategory.whiskerRight (F.mapComp f g) (F.map h)) (CategoryStruct.comp (F.mapComp (CategoryStruct.comp f g) h) (CategoryStruct.comp (F.map₂ (Bicategory.associator f g h).hom) h✝)))
    theorem CategoryTheory.LaxFunctor.mapComp_assoc_right_app {B : Type u_1} [Bicategory B] (F : LaxFunctor B Cat) {a b c d : B} (f : a b) (g : b c) (h : c d) (X : (F.obj a)) :
    CategoryStruct.comp ((F.mapComp g h).app ((F.map f).obj X)) ((F.mapComp f (CategoryStruct.comp g h)).app X) = CategoryStruct.comp ((Bicategory.associator (F.map f) (F.map g) (F.map h)).inv.app X) (CategoryStruct.comp ((F.map h).map ((F.mapComp f g).app X)) (CategoryStruct.comp ((F.mapComp (CategoryStruct.comp f g) h).app X) ((F.map₂ (Bicategory.associator f g h).hom).app X)))
    theorem CategoryTheory.LaxFunctor.map₂_leftUnitor_hom {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F : LaxFunctor B C) {a b : B} (f : a b) :
    (Bicategory.leftUnitor (F.map f)).hom = CategoryStruct.comp (Bicategory.whiskerRight (F.mapId a) (F.map f)) (CategoryStruct.comp (F.mapComp (CategoryStruct.id a) f) (F.map₂ (Bicategory.leftUnitor f).hom))
    theorem CategoryTheory.LaxFunctor.map₂_leftUnitor_hom_assoc {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F : LaxFunctor B C) {a b : B} (f : a b) {Z : F.obj a F.obj b} (h : F.map f Z) :
    theorem CategoryTheory.LaxFunctor.map₂_leftUnitor_hom_app {B : Type u_1} [Bicategory B] (F : LaxFunctor B Cat) {a b : B} (f : a b) (X : (F.obj a)) :
    (Bicategory.leftUnitor (F.map f)).hom.app X = CategoryStruct.comp ((F.map f).map ((F.mapId a).app X)) (CategoryStruct.comp ((F.mapComp (CategoryStruct.id a) f).app X) ((F.map₂ (Bicategory.leftUnitor f).hom).app X))
    theorem CategoryTheory.LaxFunctor.map₂_rightUnitor_hom {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F : LaxFunctor B C) {a b : B} (f : a b) :
    (Bicategory.rightUnitor (F.map f)).hom = CategoryStruct.comp (Bicategory.whiskerLeft (F.map f) (F.mapId b)) (CategoryStruct.comp (F.mapComp f (CategoryStruct.id b)) (F.map₂ (Bicategory.rightUnitor f).hom))
    theorem CategoryTheory.LaxFunctor.map₂_rightUnitor_hom_assoc {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F : LaxFunctor B C) {a b : B} (f : a b) {Z : F.obj a F.obj b} (h : F.map f Z) :
    theorem CategoryTheory.LaxFunctor.map₂_rightUnitor_hom_app {B : Type u_1} [Bicategory B] (F : LaxFunctor B Cat) {a b : B} (f : a b) (X : (F.obj a)) :
    (Bicategory.rightUnitor (F.map f)).hom.app X = CategoryStruct.comp ((F.mapId b).app ((F.map f).obj X)) (CategoryStruct.comp ((F.mapComp f (CategoryStruct.id b)).app X) ((F.map₂ (Bicategory.rightUnitor f).hom).app X))

    The identity lax functor.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[simp]
      theorem CategoryTheory.LaxFunctor.id_mapComp (B : Type u₁) [Bicategory B] {a✝ b✝ c✝ : B} (f : a✝ b✝) (g : b✝ c✝) :
      @[simp]
      @[simp]
      def CategoryTheory.LaxFunctor.comp {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {D : Type u₃} [Bicategory D] (F : LaxFunctor B C) (G : LaxFunctor C D) :

      Composition of lax functors.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        @[simp]
        theorem CategoryTheory.LaxFunctor.comp_mapId {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {D : Type u₃} [Bicategory D] (F : LaxFunctor B C) (G : LaxFunctor C D) (a : B) :
        (F.comp G).mapId a = CategoryStruct.comp (G.mapId (F.obj a)) (G.map₂ (F.mapId a))
        @[simp]
        theorem CategoryTheory.LaxFunctor.comp_mapComp {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {D : Type u₃} [Bicategory D] (F : LaxFunctor B C) (G : LaxFunctor C D) {a✝ b✝ c✝ : B} (f : a✝ b✝) (g : b✝ c✝) :
        (F.comp G).mapComp f g = CategoryStruct.comp (G.mapComp (F.map f) (F.map g)) (G.map₂ (F.mapComp f g))
        @[simp]
        theorem CategoryTheory.LaxFunctor.comp_toPrelaxFunctor {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {D : Type u₃} [Bicategory D] (F : LaxFunctor B C) (G : LaxFunctor C D) :
        (F.comp G).toPrelaxFunctor = F.comp G.toPrelaxFunctor
        structure CategoryTheory.LaxFunctor.PseudoCore {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (F : LaxFunctor B C) :
        Type (max (max u₁ v₁) w₂)

        A structure on an Lax functor that promotes an Lax functor to a pseudofunctor.

        See Pseudofunctor.mkOfLax.

        • mapIdIso (a : B) : F.map (CategoryStruct.id a) CategoryStruct.id (F.obj a)

          The isomorphism giving rise to the lax unity constraint

        • mapCompIso {a b c : B} (f : a b) (g : b c) : F.map (CategoryStruct.comp f g) CategoryStruct.comp (F.map f) (F.map g)

          The isomorphism giving rise to the lax functoriality constraint

        • mapIdIso_inv {a : B} : (self.mapIdIso a).inv = F.mapId a

          mapIdIso gives rise to the lax unity constraint

        • mapCompIso_inv {a b c : B} (f : a b) (g : b c) : (self.mapCompIso f g).inv = F.mapComp f g

          mapCompIso gives rise to the lax functoriality constraint

        Instances For