Proposition essentially_surjective_local_equivalence_mnd_cell_laws : is_mnd_cell essentially_surjective_local_equivalence_mnd_cell_data. Proof. unfold is_mnd_cell. cbn -[psfunctor_id psfunctor_comp]. rewrite !vassocl. etrans. { do 3 apply maponpaths. rewrite lwhisker_hcomp. rewrite <- linvunitor_natural. apply idpath. } etrans. { do 2 apply maponpaths. apply maponpaths_2. do 3 apply maponpaths. rewrite psfunctor_lunitor. etrans. { apply maponpaths. rewrite !vassocr. rewrite rwhisker_vcomp. rewrite vcomp_linv. rewrite id2_rwhisker. rewrite id2_left. apply idpath. } rewrite !vassocr. rewrite vcomp_linv. apply id2_left. } Transparent local_equivalence_inv_onecell_comp. cbn -[psfunctor_comp]. Opaque local_equivalence_inv_onecell_comp. rewrite !vassocl. etrans. { do 2 apply maponpaths. rewrite !vassocr. do 2 apply maponpaths_2. rewrite <- local_equivalence_inv_twocell_comp. apply maponpaths. rewrite !vassocr. do 2 apply maponpaths_2. rewrite <- !local_equivalence_unit_triangle_inv. cbn -[psfunctor_comp]. rewrite !vassocl. rewrite <- psfunctor_rwhisker. rewrite !vassocr. apply maponpaths_2. rewrite !vassocl. rewrite <- psfunctor_lwhisker. rewrite !vassocr. rewrite vcomp_linv. rewrite id2_left. apply idpath. } rewrite !vassocl. etrans. { do 2 apply maponpaths. rewrite !local_equivalence_inv_twocell_comp. rewrite !vassocl. do 2 apply maponpaths. rewrite !vassocr. rewrite <- local_equivalence_inv_twocell_comp. rewrite <- psfunctor_vcomp. rewrite <- local_equivalence_unit_natural_alt. rewrite !vassocl. rewrite lunitor_linvunitor. rewrite id2_right. apply idpath. } rewrite !vassocr. apply maponpaths_2. rewrite !vassocl. etrans. { apply maponpaths. etrans. { apply maponpaths. rewrite !vassocr. rewrite <- local_equivalence_inv_twocell_comp. rewrite <- psfunctor_vcomp. rewrite <- local_equivalence_unit_natural_alt. apply idpath. } rewrite !vassocr. rewrite vcomp_rinv. rewrite id2_left. apply idpath. } rewrite !vassocr. rewrite lwhisker_vcomp. rewrite vcomp_rinv. rewrite lwhisker_id2. apply id2_left. Qed.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Prelude. Require Import UniMath.CategoryTheory.Monads.Monads. Require Import UniMath.CategoryTheory.Adjunctions.Core. Require Import UniMath.CategoryTheory.Equivalences.Core. 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.Univalence. Require Import UniMath.Bicategories.Morphisms.Adjunctions. Require Import UniMath.Bicategories.DisplayedBicats.Examples.MonadsLax. Require Import UniMath.Bicategories.Monads.Examples.PsfunctorOnMonad. Require Import UniMath.Bicategories.PseudoFunctors.Display.PseudoFunctorBicat. Require Import UniMath.Bicategories.PseudoFunctors.PseudoFunctor. Import PseudoFunctor.Notations. Require Import UniMath.Bicategories.PseudoFunctors.Properties. Require Import UniMath.Bicategories.PseudoFunctors.LocalEquivalenceProperties. Require Import UniMath.Bicategories.PseudoFunctors.Examples.MonadInclusion.