Lax functors #
A lax functor F
between bicategories B
and C
consists of
- a function between objects
F.obj : B ⟶ C
, - a family of functions between 1-morphisms
F.map : (a ⟶ b) → (F.obj a ⟶ F.obj b)
, - a family of functions between 2-morphisms
F.map₂ : (f ⟶ g) → (F.map f ⟶ F.map g)
, - a family of 2-morphisms
F.mapId a : 𝟙 (F.obj a) ⟶ F.map (𝟙 a)
, - a family of 2-morphisms
F.mapComp f g : F.map f ≫ F.map g ⟶ F.map (f ≫ g)
, and - certain consistency conditions on them.
Main definitions #
CategoryTheory.LaxFunctor B C
: an lax functor between bicategoriesB
andC
CategoryTheory.LaxFunctor.comp F G
: the composition of lax functorsCategoryTheory.LaxFunctor.Pseudocore
: a structure on an Lax functor that promotes a Lax functor to a pseudofunctor
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.
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.
- obj : B → C
- map₂_id : ∀ {a b : B} (f : a ⟶ b), self.map₂ (CategoryTheory.CategoryStruct.id f) = CategoryTheory.CategoryStruct.id (self.map f)
- map₂_comp : ∀ {a b : B} {f g h : a ⟶ b} (η : f ⟶ g) (θ : g ⟶ h), self.map₂ (CategoryTheory.CategoryStruct.comp η θ) = CategoryTheory.CategoryStruct.comp (self.map₂ η) (self.map₂ θ)
- mapId : (a : B) → CategoryTheory.CategoryStruct.id (self.obj a) ⟶ self.map (CategoryTheory.CategoryStruct.id a)
The 2-morphism underlying the lax unity constraint.
- mapComp : {a b c : B} → (f : a ⟶ b) → (g : b ⟶ c) → CategoryTheory.CategoryStruct.comp (self.map f) (self.map g) ⟶ self.map (CategoryTheory.CategoryStruct.comp f g)
The 2-morphism underlying the lax functoriality constraint.
- mapComp_naturality_left : ∀ {a b c : B} {f f' : a ⟶ b} (η : f ⟶ f') (g : b ⟶ c), CategoryTheory.CategoryStruct.comp (self.mapComp f g) (self.map₂ (CategoryTheory.Bicategory.whiskerRight η g)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.whiskerRight (self.map₂ η) (self.map g)) (self.mapComp f' g)
Naturality of the lax functoriality constraint, on the left.
- mapComp_naturality_right : ∀ {a b c : B} (f : a ⟶ b) {g g' : b ⟶ c} (η : g ⟶ g'), CategoryTheory.CategoryStruct.comp (self.mapComp f g) (self.map₂ (CategoryTheory.Bicategory.whiskerLeft f η)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.whiskerLeft (self.map f) (self.map₂ η)) (self.mapComp f g')
Naturality of the lax functoriality constraint, on the right.
- map₂_associator : ∀ {a b c d : B} (f : a ⟶ b) (g : b ⟶ c) (h : c ⟶ d), CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.whiskerRight (self.mapComp f g) (self.map h)) (CategoryTheory.CategoryStruct.comp (self.mapComp (CategoryTheory.CategoryStruct.comp f g) h) (self.map₂ (CategoryTheory.Bicategory.associator f g h).hom)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.associator (self.map f) (self.map g) (self.map h)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.whiskerLeft (self.map f) (self.mapComp g h)) (self.mapComp f (CategoryTheory.CategoryStruct.comp g h)))
Lax associativity.
- map₂_leftUnitor : ∀ {a b : B} (f : a ⟶ b), self.map₂ (CategoryTheory.Bicategory.leftUnitor f).inv = CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.leftUnitor (self.map f)).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.whiskerRight (self.mapId a) (self.map f)) (self.mapComp (CategoryTheory.CategoryStruct.id a) f))
Lax left unity.
- map₂_rightUnitor : ∀ {a b : B} (f : a ⟶ b), self.map₂ (CategoryTheory.Bicategory.rightUnitor f).inv = CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.rightUnitor (self.map f)).inv (CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.whiskerLeft (self.map f) (self.mapId b)) (self.mapComp f (CategoryTheory.CategoryStruct.id b)))
Lax right unity.
Instances For
The identity lax functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CategoryTheory.LaxFunctor.instInhabited = { default := CategoryTheory.LaxFunctor.id B }
Composition of lax functors.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A structure on an Lax functor that promotes an Lax functor to a pseudofunctor.
See Pseudofunctor.mkOfLax
.
- mapIdIso : (a : B) → F.map (CategoryTheory.CategoryStruct.id a) ≅ CategoryTheory.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 (CategoryTheory.CategoryStruct.comp f g) ≅ CategoryTheory.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
gives rise to the lax functoriality constraint