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
Naturality of the lax functoriality constraint, on the left.
Naturality of the lax functoriality constraint, on the right.
Lax associativity.
Lax left unity.
Lax right unity.
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
Instances For
mapIdIso
gives rise to the lax unity constraint
mapCompIso
gives rise to the lax functoriality constraint