Strictly unitary lax functors and pseudofunctors #
In this file, we define strictly unitary Lax functors and strictly unitary pseudofunctors between bicategories.
A lax functor F
is said to be strictly unitary (sometimes, they are also
called normal) if there is an equality F.obj (𝟙 _) = 𝟙 (F.obj x)
and if the
unit 2-morphism F.obj (𝟙 _) → 𝟙 (F.obj _)
is the identity 2-morphism induced
by this equality.
A pseudofunctor is called strictly unitary (or a normal homomorphism) if it satisfies the same condition (i.e its "underlying" lax functor is strictly unitary).
References #
TODOs #
- Define lax-composable (resp. pseudo-composable) arrows as strictly unitary
lax (resp. pseudo-) functors out of
LocallyDiscrete Fin n
. - Define identity-component oplax natural transformations ("icons") between strictly unitary pseudofunctors and construct a bicategory structure on bicategories, strictly unitary pseudofunctors and icons.
- Construct the Duskin of a bicategory using lax-composable arrows
- Construct the 2-nerve of a bicategory using pseudo-composable arrows
A strictly unitary lax functor F
between bicategories B
and C
is a
lax functor F
from B
to C
such that the structure 1-cell
𝟙 (obj X) ⟶ map (𝟙 X)
is in fact an identity 1-cell for every X : B
.
- obj : B → C
- map₂_comp {a b : B} {f g h : a ⟶ b} (η : f ⟶ g) (θ : g ⟶ h) : self.map₂ (CategoryStruct.comp η θ) = CategoryStruct.comp (self.map₂ η) (self.map₂ θ)
- mapComp {a b c : B} (f : a ⟶ b) (g : b ⟶ c) : CategoryStruct.comp (self.map f) (self.map g) ⟶ self.map (CategoryStruct.comp f g)
- mapComp_naturality_left {a b c : B} {f f' : a ⟶ b} (η : f ⟶ f') (g : b ⟶ c) : CategoryStruct.comp (self.mapComp f g) (self.map₂ (Bicategory.whiskerRight η g)) = CategoryStruct.comp (Bicategory.whiskerRight (self.map₂ η) (self.map g)) (self.mapComp f' g)
- mapComp_naturality_right {a b c : B} (f : a ⟶ b) {g g' : b ⟶ c} (η : g ⟶ g') : CategoryStruct.comp (self.mapComp f g) (self.map₂ (Bicategory.whiskerLeft f η)) = CategoryStruct.comp (Bicategory.whiskerLeft (self.map f) (self.map₂ η)) (self.mapComp f g')
- map₂_associator {a b c d : B} (f : a ⟶ b) (g : b ⟶ c) (h : c ⟶ d) : CategoryStruct.comp (Bicategory.whiskerRight (self.mapComp f g) (self.map h)) (CategoryStruct.comp (self.mapComp (CategoryStruct.comp f g) h) (self.map₂ (Bicategory.associator f g h).hom)) = 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)) (self.mapComp f (CategoryStruct.comp g h)))
- map₂_leftUnitor {a b : B} (f : a ⟶ b) : self.map₂ (Bicategory.leftUnitor f).inv = CategoryStruct.comp (Bicategory.leftUnitor (self.map f)).inv (CategoryStruct.comp (Bicategory.whiskerRight (self.mapId a) (self.map f)) (self.mapComp (CategoryStruct.id a) f))
- map₂_rightUnitor {a b : B} (f : a ⟶ b) : self.map₂ (Bicategory.rightUnitor f).inv = CategoryStruct.comp (Bicategory.rightUnitor (self.map f)).inv (CategoryStruct.comp (Bicategory.whiskerLeft (self.map f) (self.mapId b)) (self.mapComp f (CategoryStruct.id b)))
Instances For
A helper structure that bundles the necessary data to
construct a StrictlyUnitaryLaxFunctor
without specifying the redundant
field mapId
.
- obj : B → C
action on objects
action on 1-morhisms
action on 2-morphisms
- map₂_comp {a b : B} {f g h : a ⟶ b} (η : f ⟶ g) (θ : g ⟶ h) : self.map₂ (CategoryStruct.comp η θ) = CategoryStruct.comp (self.map₂ η) (self.map₂ θ)
- mapComp {a b c : B} (f : a ⟶ b) (g : b ⟶ c) : CategoryStruct.comp (self.map f) (self.map g) ⟶ self.map (CategoryStruct.comp f g)
structure 2-morphism for composition of 1-morphism
- mapComp_naturality_left {a b c : B} {f f' : a ⟶ b} (η : f ⟶ f') (g : b ⟶ c) : CategoryStruct.comp (self.mapComp f g) (self.map₂ (Bicategory.whiskerRight η g)) = CategoryStruct.comp (Bicategory.whiskerRight (self.map₂ η) (self.map g)) (self.mapComp f' g)
- mapComp_naturality_right {a b c : B} (f : a ⟶ b) {g g' : b ⟶ c} (η : g ⟶ g') : CategoryStruct.comp (self.mapComp f g) (self.map₂ (Bicategory.whiskerLeft f η)) = CategoryStruct.comp (Bicategory.whiskerLeft (self.map f) (self.map₂ η)) (self.mapComp f g')
- map₂_leftUnitor {a b : B} (f : a ⟶ b) : self.map₂ (Bicategory.leftUnitor f).inv = CategoryStruct.comp (Bicategory.leftUnitor (self.map f)).inv (CategoryStruct.comp (eqToHom ⋯) (self.mapComp (CategoryStruct.id a) f))
- map₂_rightUnitor {a b : B} (f : a ⟶ b) : self.map₂ (Bicategory.rightUnitor f).inv = CategoryStruct.comp (Bicategory.rightUnitor (self.map f)).inv (CategoryStruct.comp (eqToHom ⋯) (self.mapComp f (CategoryStruct.id b)))
- map₂_associator {a b c d : B} (f : a ⟶ b) (g : b ⟶ c) (h : c ⟶ d) : CategoryStruct.comp (Bicategory.whiskerRight (self.mapComp f g) (self.map h)) (CategoryStruct.comp (self.mapComp (CategoryStruct.comp f g) h) (self.map₂ (Bicategory.associator f g h).hom)) = 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)) (self.mapComp f (CategoryStruct.comp g h)))
Instances For
An alternate constructor for strictly unitary lax functors that does not
require the mapId
fields, and that adapts the map₂_leftUnitor
and
map₂_rightUnitor
to the fact that the functor is strictly unitary.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Promote the morphism F.mapId x : 𝟙 (F.obj x) ⟶ F.map (𝟙 x)
to an isomorphism when F
is strictly unitary.
Equations
Instances For
The identity StrictlyUnitaryLaxFunctor
.
Equations
- CategoryTheory.StrictlyUnitaryLaxFunctor.id B = { toLaxFunctor := CategoryTheory.LaxFunctor.id B, map_id := ⋯, mapId_eq_eqToHom := ⋯ }
Instances For
Composition of StrictlyUnitaryLaxFunctor
.
Instances For
Composition of StrictlyUnitaryLaxFunctor
is strictly right unitary
Composition of StrictlyUnitaryLaxFunctor
is strictly left unitary
Composition of StrictlyUnitaryLaxFunctor
is strictly associative
A strictly unitary pseudofunctor (sometimes called a "normal homomorphism)
F
between bicategories B
and C
is a lax functor F
from B
to C
such that the structure isomorphism map (𝟙 X) ≅ 𝟙 (F.obj X)
is in fact an
identity 1-cell for every X : B
(in particular, there is an equality
F.map (𝟙 X) = 𝟙 (F.obj x)
).
- obj : B → C
- map₂_comp {a b : B} {f g h : a ⟶ b} (η : f ⟶ g) (θ : g ⟶ h) : self.map₂ (CategoryStruct.comp η θ) = CategoryStruct.comp (self.map₂ η) (self.map₂ θ)
- mapComp {a b c : B} (f : a ⟶ b) (g : b ⟶ c) : self.map (CategoryStruct.comp f g) ≅ CategoryStruct.comp (self.map f) (self.map g)
- map₂_whisker_left {a b c : B} (f : a ⟶ b) {g h : b ⟶ c} (η : g ⟶ h) : self.map₂ (Bicategory.whiskerLeft f η) = CategoryStruct.comp (self.mapComp f g).hom (CategoryStruct.comp (Bicategory.whiskerLeft (self.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₂ (Bicategory.whiskerRight η h) = CategoryStruct.comp (self.mapComp f h).hom (CategoryStruct.comp (Bicategory.whiskerRight (self.map₂ η) (self.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₂ (Bicategory.associator f g h).hom = CategoryStruct.comp (self.mapComp (CategoryStruct.comp f g) h).hom (CategoryStruct.comp (Bicategory.whiskerRight (self.mapComp f g).hom (self.map 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).inv) (self.mapComp f (CategoryStruct.comp g h)).inv)))
- map₂_left_unitor {a b : B} (f : a ⟶ b) : self.map₂ (Bicategory.leftUnitor f).hom = CategoryStruct.comp (self.mapComp (CategoryStruct.id a) f).hom (CategoryStruct.comp (Bicategory.whiskerRight (self.mapId a).hom (self.map f)) (Bicategory.leftUnitor (self.map f)).hom)
- map₂_right_unitor {a b : B} (f : a ⟶ b) : self.map₂ (Bicategory.rightUnitor f).hom = CategoryStruct.comp (self.mapComp f (CategoryStruct.id b)).hom (CategoryStruct.comp (Bicategory.whiskerLeft (self.map f) (self.mapId b).hom) (Bicategory.rightUnitor (self.map f)).hom)
Instances For
A helper structure that bundles the necessary data to
construct a StrictlyUnitaryPseudofunctor
without specifying the redundant
field mapId
- obj : B → C
action on objects
action on 1-morphisms
action on 2-morphisms
- map₂_comp {a b : B} {f g h : a ⟶ b} (η : f ⟶ g) (θ : g ⟶ h) : self.map₂ (CategoryStruct.comp η θ) = CategoryStruct.comp (self.map₂ η) (self.map₂ θ)
- mapComp {a b c : B} (f : a ⟶ b) (g : b ⟶ c) : self.map (CategoryStruct.comp f g) ≅ CategoryStruct.comp (self.map f) (self.map g)
structure 2-isomorphism for composition of 1-morphisms
- map₂_whisker_left {a b c : B} (f : a ⟶ b) {g h : b ⟶ c} (η : g ⟶ h) : self.map₂ (Bicategory.whiskerLeft f η) = CategoryStruct.comp (self.mapComp f g).hom (CategoryStruct.comp (Bicategory.whiskerLeft (self.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₂ (Bicategory.whiskerRight η h) = CategoryStruct.comp (self.mapComp f h).hom (CategoryStruct.comp (Bicategory.whiskerRight (self.map₂ η) (self.map h)) (self.mapComp g h).inv)
- map₂_left_unitor {a b : B} (f : a ⟶ b) : self.map₂ (Bicategory.leftUnitor f).hom = CategoryStruct.comp (self.mapComp (CategoryStruct.id a) f).hom (CategoryStruct.comp (eqToHom ⋯) (Bicategory.leftUnitor (self.map f)).hom)
- map₂_right_unitor {a b : B} (f : a ⟶ b) : self.map₂ (Bicategory.rightUnitor f).hom = CategoryStruct.comp (self.mapComp f (CategoryStruct.id b)).hom (CategoryStruct.comp (eqToHom ⋯) (Bicategory.rightUnitor (self.map f)).hom)
- map₂_associator {a b c d : B} (f : a ⟶ b) (g : b ⟶ c) (h : c ⟶ d) : self.map₂ (Bicategory.associator f g h).hom = CategoryStruct.comp (self.mapComp (CategoryStruct.comp f g) h).hom (CategoryStruct.comp (Bicategory.whiskerRight (self.mapComp f g).hom (self.map 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).inv) (self.mapComp f (CategoryStruct.comp g h)).inv)))
Instances For
An alternate constructor for strictly unitary lax functors that does not
require the mapId
fields, and that adapts the map₂_leftUnitor
and
map₂_rightUnitor
to the fact that the functor is strictly unitary.
Equations
- One or more equations did not get rendered due to their size.
Instances For
By forgetting the inverse to mapComp
, a StrictlyUnitaryPseudofunctor
is a StrictlyUnitaryLaxFunctor
.
Equations
- F.toStrictlyUnitaryLaxFunctor = { toLaxFunctor := F.toLax, map_id := ⋯, mapId_eq_eqToHom := ⋯ }
Instances For
The identity StrictlyUnitaryPseudofunctor
.
Equations
- CategoryTheory.StrictlyUnitaryPseudofunctor.id B = { toPseudofunctor := CategoryTheory.Pseudofunctor.id B, map_id := ⋯, mapId_eq_eqToIso := ⋯ }
Instances For
Composition of StrictlyUnitaryPseudofunctor
.