proposition: Proposition essentially_surjective_local_equivalence_mnd_cell_laws : is_mnd_cell essentially_surjective_local_equivalence_mnd_cell_data.
proof: 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.
imports: UniMath.Foundations.All UniMath.MoreFoundations.All UniMath.CategoryTheory.Core.Prelude UniMath.CategoryTheory.Monads.Monads UniMath.CategoryTheory.Adjunctions.Core UniMath.CategoryTheory.Equivalences.Core UniMath.Bicategories.Core.Bicat UniMath.Bicategories.Core.Invertible_2cells UniMath.Bicategories.Core.BicategoryLaws UniMath.Bicategories.Core.Unitors UniMath.Bicategories.Core.Univalence UniMath.Bicategories.Morphisms.Adjunctions UniMath.Bicategories.DisplayedBicats.Examples.MonadsLax UniMath.Bicategories.Monads.Examples.PsfunctorOnMonad UniMath.Bicategories.PseudoFunctors.Display.PseudoFunctorBicat UniMath.Bicategories.PseudoFunctors.PseudoFunctor UniMath.Bicategories.PseudoFunctors.Properties UniMath.Bicategories.PseudoFunctors.LocalEquivalenceProperties UniMath.Bicategories.PseudoFunctors.Examples.MonadInclusion