Documentation

Mathlib.CategoryTheory.Bicategory.EqToHom

eqToHom in bicategories #

This file records some of the behavior of eqToHom 1-morphisms and 2-morphisms in bicategories.

Given an equality of objects h : x = y in a bicategory, there is a 1-morphism eqToHom h : x ⟶ y just like in an ordinary category. The definitional property of this morphism is that if h : x = x, eqToHom h = šŸ™ x. This is implemented as the eqToHom morphism in the CategoryStruct underlying the bicategory.

Unlike the situation in ordinary category theory, these 1-morphisms do not compose strictly: eqToHom h.trans h' is merely isomorphic to eqToHom h ≫ eqToHom h'. We define this isomorphism as CategoryTheory.Bicategory.eqToHomTransIso.

Given an equality of 1-morphisms, we show that various bicategorical structure morphisms such as unitors, associators and whiskering conjugate well under eqToHoms.

TODO #

def CategoryTheory.Bicategory.eqToHomTransIso {B : Type u} [Bicategory B] {x y z : B} (e₁ : x = y) (eā‚‚ : y = z) :
eqToHom ⋯ ≅ CategoryStruct.comp (eqToHom e₁) (eqToHom eā‚‚)

In a bicategory, eqToHoms do not compose strictly, but they do up to isomorphism.

Equations
    Instances For
      theorem CategoryTheory.Bicategory.eqToHomTransIso_refl_left {B : Type u} [Bicategory B] {x y : B} (e₁ : x = y) :
      eqToHomTransIso ⋯ e₁ = (leftUnitor (eqToHom e₁)).symm
      theorem CategoryTheory.Bicategory.associator_eqToHom_hom {B : Type u} [Bicategory B] {x y z t : B} (e₁ : x = y) (eā‚‚ : y = z) (eā‚ƒ : z = t) :
      (associator (eqToHom e₁) (eqToHom eā‚‚) (eqToHom eā‚ƒ)).hom = CategoryStruct.comp (whiskerRight (eqToHomTransIso e₁ eā‚‚).inv (eqToHom eā‚ƒ)) (CategoryStruct.comp (eqToHomTransIso ⋯ eā‚ƒ).inv (CategoryStruct.comp (eqToHomTransIso e₁ ⋯).hom (whiskerLeft (eqToHom e₁) (eqToHomTransIso eā‚‚ eā‚ƒ).hom)))
      theorem CategoryTheory.Bicategory.associator_eqToHom_hom_assoc {B : Type u} [Bicategory B] {x y z t : B} (e₁ : x = y) (eā‚‚ : y = z) (eā‚ƒ : z = t) {Z : x ⟶ t} (h : CategoryStruct.comp (eqToHom e₁) (CategoryStruct.comp (eqToHom eā‚‚) (eqToHom eā‚ƒ)) ⟶ Z) :
      theorem CategoryTheory.Bicategory.associator_eqToHom_inv {B : Type u} [Bicategory B] {x y z t : B} (e₁ : x = y) (eā‚‚ : y = z) (eā‚ƒ : z = t) :
      (associator (eqToHom e₁) (eqToHom eā‚‚) (eqToHom eā‚ƒ)).inv = CategoryStruct.comp (whiskerLeft (eqToHom e₁) (eqToHomTransIso eā‚‚ eā‚ƒ).inv) (CategoryStruct.comp (eqToHomTransIso e₁ ⋯).inv (CategoryStruct.comp (eqToHomTransIso ⋯ eā‚ƒ).hom (whiskerRight (eqToHomTransIso e₁ eā‚‚).hom (eqToHom eā‚ƒ))))
      theorem CategoryTheory.Bicategory.associator_eqToHom_inv_assoc {B : Type u} [Bicategory B] {x y z t : B} (e₁ : x = y) (eā‚‚ : y = z) (eā‚ƒ : z = t) {Z : x ⟶ t} (h : CategoryStruct.comp (CategoryStruct.comp (eqToHom e₁) (eqToHom eā‚‚)) (eqToHom eā‚ƒ) ⟶ Z) :
      theorem CategoryTheory.Bicategory.associator_hom_congr {B : Type u} [Bicategory B] {x y z t : B} {f f' : x ⟶ y} {g g' : y ⟶ z} {h h' : z ⟶ t} (ef : f = f') (eg : g = g') (eh : h = h') :
      theorem CategoryTheory.Bicategory.associator_inv_congr {B : Type u} [Bicategory B] {x y z t : B} {f f' : x ⟶ y} {g g' : y ⟶ z} {h h' : z ⟶ t} (ef : f = f') (eg : g = g') (eh : h = h') :
      theorem CategoryTheory.Bicategory.congr_whiskerLeft {B : Type u} [Bicategory B] {x y : B} {f f' : x ⟶ y} (h : f = f') {z : B} {g g' : y ⟶ z} (η : g ⟶ g') :
      theorem CategoryTheory.Bicategory.whiskerRight_congr {B : Type u} [Bicategory B] {y z : B} {g g' : y ⟶ z} (h : g = g') {x : B} {f f' : x ⟶ y} (η : f ⟶ f') :