Pseudofunctors #
A pseudofunctor is an oplax functor whose mapId and mapComp are isomorphisms. We provide
several constructors for pseudofunctors:
Pseudofunctor.mk: the default constructor, which requiresmap₂_whiskerLeftandmap₂_whiskerRightinstead of naturality ofmapComp.Pseudofunctor.mkOfOplax: construct a pseudofunctor from an oplax functor whosemapIdandmapCompare isomorphisms. This constructor usesIsoto describe isomorphisms.pseudofunctor.mkOfOplax': similar tomkOfOplax, but usesIsIsoto describe isomorphisms.
The additional constructors are useful when constructing a pseudofunctor where the construction of the oplax functor associated with it is already done. For example, the composition of pseudofunctors can be defined by using the composition of oplax functors as follows:
def comp (F : Pseudofunctor B C) (G : Pseudofunctor C D) : Pseudofunctor B D :=
mkOfOplax ((F : OplaxFunctor B C).comp G)
{ mapIdIso := fun a ↦ (G.mapFunctor _ _).mapIso (F.mapId a) ≪≫ G.mapId (F.obj a),
mapCompIso := fun f g ↦
(G.mapFunctor _ _).mapIso (F.mapComp f g) ≪≫ G.mapComp (F.map f) (F.map g) }
although the composition of pseudofunctors in this file is defined by using the default constructor
because obviously wasn't smart enough in mathlib3 and the porter of this file was too lazy
to investigate this issue further in mathlib4. Similarly, the composition is also defined by using
mkOfOplax' after giving appropriate instances for IsIso. The former constructor
mkOfOplax requires isomorphisms as data type Iso, and so it is useful if you don't want
to forget the definitions of the inverses. On the other hand, the latter constructor
mkOfOplax' is useful if you want to use propositional type class IsIso.
Main definitions #
CategoryTheory.Pseudofunctor B C: a pseudofunctor between bicategoriesBandCCategoryTheory.Pseudofunctor.comp F G: the composition of pseudofunctors
A pseudofunctor 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 compositions,
and do not need to strictly preserve the identity. Instead, there are specified 2-isomorphisms
F.map (𝟙 a) ≅ 𝟙 (F.obj a) and F.map (f ≫ g) ≅ F.map f ≫ F.map 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
- mapId : (a : B) → (↑self.toPrelaxFunctor).map (CategoryTheory.CategoryStruct.id a) ≅ CategoryTheory.CategoryStruct.id ((↑self.toPrelaxFunctor).obj a)
- mapComp : {a b c : B} → (f : a ⟶ b) → (g : b ⟶ c) → (↑self.toPrelaxFunctor).map (CategoryTheory.CategoryStruct.comp f g) ≅ CategoryTheory.CategoryStruct.comp ((↑self.toPrelaxFunctor).map f) ((↑self.toPrelaxFunctor).map g)
- map₂_id : ∀ {a b : B} (f : a ⟶ b), self.map₂ (CategoryTheory.CategoryStruct.id f) = CategoryTheory.CategoryStruct.id ((↑self.toPrelaxFunctor).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₂ θ)
- map₂_whisker_left : ∀ {a b c : B} (f : a ⟶ b) {g h : b ⟶ c} (η : g ⟶ h), self.map₂ (CategoryTheory.Bicategory.whiskerLeft f η) = CategoryTheory.CategoryStruct.comp (self.mapComp f g).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.whiskerLeft ((↑self.toPrelaxFunctor).map f) (self.map₂ η)) (self.mapComp f h).inv)
- map₂_whisker_right : ∀ {a b c : B} {f g : a ⟶ b} (η : f ⟶ g) (h : b ⟶ c), self.map₂ (CategoryTheory.Bicategory.whiskerRight η h) = CategoryTheory.CategoryStruct.comp (self.mapComp f h).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.whiskerRight (self.map₂ η) ((↑self.toPrelaxFunctor).map h)) (self.mapComp g h).inv)
- map₂_associator : ∀ {a b c d : B} (f : a ⟶ b) (g : b ⟶ c) (h : c ⟶ d), self.map₂ (CategoryTheory.Bicategory.associator f g h).hom = CategoryTheory.CategoryStruct.comp (self.mapComp (CategoryTheory.CategoryStruct.comp f g) h).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.whiskerRight (self.mapComp f g).hom ((↑self.toPrelaxFunctor).map h)) (CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.associator ((↑self.toPrelaxFunctor).map f) ((↑self.toPrelaxFunctor).map g) ((↑self.toPrelaxFunctor).map h)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.whiskerLeft ((↑self.toPrelaxFunctor).map f) (self.mapComp g h).inv) (self.mapComp f (CategoryTheory.CategoryStruct.comp g h)).inv)))
- map₂_left_unitor : ∀ {a b : B} (f : a ⟶ b), self.map₂ (CategoryTheory.Bicategory.leftUnitor f).hom = CategoryTheory.CategoryStruct.comp (self.mapComp (CategoryTheory.CategoryStruct.id a) f).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.whiskerRight (self.mapId a).hom ((↑self.toPrelaxFunctor).map f)) (CategoryTheory.Bicategory.leftUnitor ((↑self.toPrelaxFunctor).map f)).hom)
- map₂_right_unitor : ∀ {a b : B} (f : a ⟶ b), self.map₂ (CategoryTheory.Bicategory.rightUnitor f).hom = CategoryTheory.CategoryStruct.comp (self.mapComp f (CategoryTheory.CategoryStruct.id b)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.Bicategory.whiskerLeft ((↑self.toPrelaxFunctor).map f) (self.mapId b).hom) (CategoryTheory.Bicategory.rightUnitor ((↑self.toPrelaxFunctor).map f)).hom)
Instances For
Equations
- CategoryTheory.Pseudofunctor.hasCoeToPrelaxFunctor = { coe := CategoryTheory.Pseudofunctor.toPrelaxFunctor }
The oplax functor associated with a pseudofunctor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CategoryTheory.Pseudofunctor.hasCoeToOplax = { coe := CategoryTheory.Pseudofunctor.toOplax }
Function on 1-morphisms as a functor.
Equations
- F.mapFunctor a b = F.toOplax.mapFunctor a b
Instances For
A pseudofunctor F : B ⥤ C sends 2-isomorphisms η : f ≅ f to 2-isomorphisms
F.map f ≅ F.map g
Equations
- F.map₂Iso η = F.toOplax.map₂Iso η
Instances For
Equations
- ⋯ = ⋯
The identity pseudofunctor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CategoryTheory.Pseudofunctor.instInhabited = { default := CategoryTheory.Pseudofunctor.id B }
Composition of pseudofunctors.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a pseudofunctor from an oplax functor whose mapId and mapComp are isomorphisms.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a pseudofunctor from an oplax functor whose mapId and mapComp are isomorphisms.
Equations
- One or more equations did not get rendered due to their size.