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 constraight, 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 constraight, 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 constraight, on the left.
Naturality of the lax functoriality constraight, 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)
- 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)
- mapIdIso_inv : ∀ {a : B}, (self.mapIdIso a).inv = F.mapId a