Lemma binprod_runitor {a₁ a₂ b₁ b₂ : B} (f : a₁ --> a₂) (g : b₁ --> b₂) : runitor (f ⊗₁ g) = (f ⊗₁ g ◃ (pair_1cell_id_id_invertible _ _)^-1) • pair_1cell_comp f (id₁ _) g (id₁ _) • runitor f ⊗₂ runitor g. Proof. use binprod_ump_2cell_unique_alt. - apply (pr2 B). - rewrite <- !rwhisker_vcomp. rewrite !vassocl. refine (!_). etrans. { apply maponpaths. etrans. { apply maponpaths. apply pair_2cell_pr1. } apply maponpaths_2. apply binprod_ump_2cell_pr1. } rewrite !vassocl. etrans. { do 6 apply maponpaths. rewrite !vassocr. rewrite vcomp_linv. rewrite id2_left. apply idpath. } rewrite !vassocr. rewrite <- rwhisker_lwhisker_rassociator. rewrite !vassocl. etrans. { apply maponpaths. apply maponpaths_2. apply maponpaths. apply binprod_ump_2cell_pr1. } cbn. etrans. { apply maponpaths. rewrite !vassocr. rewrite lwhisker_vcomp. rewrite !vassocl. rewrite vcomp_linv. rewrite id2_right. rewrite <- lwhisker_vcomp. apply idpath. } rewrite !vassocr. rewrite lwhisker_hcomp. rewrite triangle_l. rewrite <- rwhisker_hcomp. rewrite !vassocl. refine (_ @ id2_right _). apply maponpaths. etrans. { do 2 apply maponpaths. etrans. { apply maponpaths. rewrite !vassocr. rewrite runitor_triangle. rewrite <- vcomp_runitor. apply idpath. } rewrite !vassocr. rewrite rwhisker_vcomp. rewrite vcomp_rinv. rewrite id2_rwhisker. apply id2_left. } rewrite <- runitor_triangle. etrans. { apply maponpaths. rewrite !vassocr. rewrite lassociator_rassociator. apply id2_left. } rewrite lwhisker_vcomp. rewrite rinvunitor_runitor. apply lwhisker_id2. - rewrite <- !rwhisker_vcomp. rewrite !vassocl. refine (!_). etrans. { apply maponpaths. etrans. { apply maponpaths. apply pair_2cell_pr2. } apply maponpaths_2. apply binprod_ump_2cell_pr2. } rewrite !vassocl. etrans. { do 6 apply maponpaths. rewrite !vassocr. rewrite vcomp_linv. rewrite id2_left. apply idpath. } rewrite !vassocr. rewrite <- rwhisker_lwhisker_rassociator. rewrite !vassocl. etrans. { apply maponpaths. apply maponpaths_2. apply maponpaths. apply binprod_ump_2cell_pr2. } cbn. etrans. { apply maponpaths. rewrite !vassocr. rewrite lwhisker_vcomp. rewrite !vassocl. rewrite vcomp_linv. rewrite id2_right. rewrite <- lwhisker_vcomp. apply idpath. } rewrite !vassocr. rewrite lwhisker_hcomp. rewrite triangle_l. rewrite <- rwhisker_hcomp. rewrite !vassocl. refine (_ @ id2_right _). apply maponpaths. etrans. { do 2 apply maponpaths. etrans. { apply maponpaths. rewrite !vassocr. rewrite runitor_triangle. rewrite <- vcomp_runitor. apply idpath. } rewrite !vassocr. rewrite rwhisker_vcomp. rewrite vcomp_rinv. rewrite id2_rwhisker. apply id2_left. } rewrite <- runitor_triangle. etrans. { apply maponpaths. rewrite !vassocr. rewrite lassociator_rassociator. apply id2_left. } rewrite lwhisker_vcomp. rewrite rinvunitor_runitor. apply lwhisker_id2. Qed.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.CategoryTheory.Core.NaturalTransformations. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.Core.Univalence. Require Import UniMath.CategoryTheory.Categories.StandardCategories. Require Import UniMath.CategoryTheory.Equivalences.Core. Require Import UniMath.CategoryTheory.Equivalences.FullyFaithful. Require Import UniMath.CategoryTheory.PrecategoryBinProduct. Require Import UniMath.Bicategories.Core.Bicat. Import Bicat.Notations. Require Import UniMath.Bicategories.Core.Invertible_2cells. Require Import UniMath.Bicategories.Core.BicategoryLaws. Require Import UniMath.Bicategories.Core.Unitors. Require Import UniMath.Bicategories.Core.Examples.BicatOfUnivCats. Require Import UniMath.Bicategories.Morphisms.Adjunctions. Require Import UniMath.Bicategories.Core.AdjointUnique. Require Import UniMath.Bicategories.Core.Univalence.