Proposition is_inverse_linvunitor_enriched_profunctor_mor (y : C₂) (x : C₁) : is_inverse_in_precat (lunitor_enriched_profunctor y x) (linvunitor_enriched_profunctor_mor y x). Proof. split. - cbn. use from_comp_enriched_profunctor_eq. intros x'. rewrite !assoc. rewrite lunitor_enriched_profunctor_mor_comm. rewrite id_right. unfold linvunitor_enriched_profunctor_mor. etrans. { rewrite !assoc. rewrite tensor_linvunitor. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_split. rewrite tensor_split'. apply idpath. } rewrite !assoc'. etrans. { do 2 apply maponpaths. apply (comp_enriched_profunctor_comm' (identity_enriched_profunctor E₁) P). } cbn. rewrite !assoc. refine (_ @ id_left _). apply maponpaths_2. etrans. { rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_split'. rewrite tensor_split. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_id_id. rewrite tensor_rassociator. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite tensor_sym_mon_braiding. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite tensor_rassociator. rewrite !assoc'. apply maponpaths. rewrite <- tensor_comp_id_r. rewrite !assoc. rewrite tensor_sym_mon_braiding. rewrite !assoc'. rewrite <- enrichment_id_left. apply idpath. } rewrite !assoc. rewrite <- tensor_linvunitor. rewrite !assoc'. etrans. { apply maponpaths. rewrite !assoc. rewrite <- mon_linvunitor_triangle. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite mon_lassociator_rassociator. rewrite id_left. apply idpath. } etrans. { apply maponpaths. rewrite !assoc. rewrite tensor_sym_mon_braiding. apply idpath. } rewrite !assoc. rewrite sym_mon_braiding_inv. rewrite id_left. rewrite mon_inv_triangle. etrans. { rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite mon_lassociator_rassociator. rewrite id_left. apply idpath. } rewrite <- tensor_comp_id_r. rewrite !assoc. rewrite sym_mon_braiding_rinvunitor. rewrite mon_linvunitor_lunitor. apply tensor_id_id. - cbn. unfold linvunitor_enriched_profunctor_mor. rewrite !assoc'. etrans. { do 2 apply maponpaths. apply lunitor_enriched_profunctor_mor_comm. } rewrite rmap_e_id. apply mon_linvunitor_lunitor. Qed.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Prelude. Require Import UniMath.CategoryTheory.Limits.Coends. Require Import UniMath.CategoryTheory.OppositeCategory.Core. Require Import UniMath.CategoryTheory.PrecategoryBinProduct. Require Import UniMath.CategoryTheory.EnrichedCats.BenabouCosmos. Require Import UniMath.CategoryTheory.EnrichedCats.Enrichment. Require Import UniMath.CategoryTheory.EnrichedCats.EnrichmentFunctor. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.Profunctor. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.StandardProfunctors. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.ProfunctorTransformations. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.ProfunctorSquares. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.Invertible. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.Composition.CompositionProf. Require Import UniMath.CategoryTheory.Monoidal.Categories. Require Import UniMath.CategoryTheory.Monoidal.Structure.Symmetric. Require Import UniMath.CategoryTheory.Monoidal.Structure.Closed. Import MonoidalNotations.