Proposition enriched_profunctor_to_whiskered_laws : enriched_whiskered_bifunctor_laws enriched_profunctor_to_whiskered_data. Proof. repeat split ; cbn. - intros x y. unfold internal_id. use internal_funext. intros z h. rewrite tensor_comp_r_id_r. rewrite !assoc'. rewrite internal_beta. refine (!_). rewrite tensor_split. rewrite !assoc'. rewrite internal_beta. refine (!_). rewrite tensor_split. rewrite !assoc'. apply maponpaths. clear z h. exact (lmap_e_id P x y). - intros x y. unfold internal_id. use internal_funext. intros z h. rewrite tensor_comp_r_id_r. rewrite !assoc'. rewrite internal_beta. refine (!_). rewrite tensor_split. rewrite !assoc'. rewrite internal_beta. refine (!_). rewrite tensor_split. rewrite !assoc'. apply maponpaths. clear z h. exact (rmap_e_id P x y). - intros x₁ x₂ x₃ y. use internal_funext. intros z h. rewrite tensor_comp_r_id_r. rewrite !assoc'. rewrite internal_beta. refine (!_). etrans. { rewrite tensor_comp_r_id_r. rewrite !assoc'. unfold internal_comp. rewrite internal_beta. rewrite !assoc. rewrite tensor_lassociator. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_comp_mor. rewrite id_right. etrans. { apply maponpaths_2. apply maponpaths. rewrite tensor_split. rewrite !assoc'. rewrite internal_beta. apply idpath. } rewrite tensor_split. rewrite !assoc'. rewrite internal_beta. apply idpath. } rewrite tensor_comp_id_l. rewrite !assoc. rewrite <- tensor_lassociator. rewrite tensor_id_id. refine (!_). rewrite tensor_split. rewrite !assoc'. apply maponpaths. clear z h. rewrite !assoc. exact (lmap_e_comp P x₁ x₂ x₃ y). - intros x y₁ y₂ y₃. use internal_funext. intros z h. rewrite tensor_comp_r_id_r. rewrite !assoc'. rewrite internal_beta. refine (!_). etrans. { rewrite tensor_comp_r_id_r. rewrite !assoc'. unfold internal_comp. rewrite internal_beta. rewrite !assoc. rewrite tensor_lassociator. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_comp_mor. rewrite id_right. etrans. { apply maponpaths_2. apply maponpaths. rewrite tensor_split. rewrite !assoc'. rewrite internal_beta. apply idpath. } rewrite tensor_split. rewrite !assoc'. rewrite internal_beta. apply idpath. } rewrite tensor_comp_id_l. rewrite !assoc. rewrite <- tensor_lassociator. rewrite tensor_id_id. refine (!_). rewrite tensor_split. rewrite !assoc'. apply maponpaths. clear z h. rewrite !assoc. exact (rmap_e_comp P x y₁ y₂ y₃). - intros x₁ x₂ y₁ y₂. use internal_funext. intros z h. unfold internal_comp. rewrite !tensor_comp_r_id_r. rewrite !assoc'. rewrite !internal_beta. etrans. { rewrite !assoc. rewrite tensor_lassociator. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_comp_mor. rewrite id_right. etrans. { apply maponpaths_2. apply maponpaths. rewrite tensor_split. rewrite !assoc'. rewrite internal_beta. apply idpath. } rewrite tensor_split. rewrite !assoc'. rewrite internal_beta. rewrite tensor_comp_id_l. apply idpath. } rewrite !assoc. rewrite <- tensor_lassociator. rewrite !assoc'. refine (!_). etrans. { apply maponpaths. rewrite !assoc. rewrite tensor_lassociator. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_comp_mor. rewrite id_right. etrans. { apply maponpaths_2. apply maponpaths. rewrite tensor_split. rewrite !assoc'. rewrite internal_beta. apply idpath. } rewrite tensor_split. rewrite !assoc'. rewrite internal_beta. rewrite tensor_comp_id_l. apply idpath. } etrans. { apply maponpaths_2. rewrite tensor_split. apply idpath. } rewrite !assoc'. rewrite !tensor_id_id. apply maponpaths. clear z h. rewrite id_left. rewrite !assoc. exact (lmap_e_rmap_e P x₁ x₂ y₁ y₂). Qed.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Prelude. Require Import UniMath.CategoryTheory.OppositeCategory.Core. Require Import UniMath.CategoryTheory.EnrichedCats.Enrichment. Require Import UniMath.CategoryTheory.EnrichedCats.EnrichmentFunctor. Require Import UniMath.CategoryTheory.EnrichedCats.Enriched.Enriched. Require Import UniMath.CategoryTheory.EnrichedCats.Enriched.EnrichmentEquiv. Require Import UniMath.CategoryTheory.EnrichedCats.Examples.Tensor. Require Import UniMath.CategoryTheory.EnrichedCats.Bifunctors.WhiskeredBifunctors. Require Import UniMath.CategoryTheory.EnrichedCats.Examples.SelfEnriched. Require Import UniMath.CategoryTheory.EnrichedCats.Examples.OppositeEnriched. Require Import UniMath.CategoryTheory.Monoidal.Categories. Require Import UniMath.CategoryTheory.Monoidal.WhiskeredBifunctors. Require Import UniMath.CategoryTheory.Monoidal.Structure.Symmetric. Require Import UniMath.CategoryTheory.Monoidal.Structure.Closed. Import MonoidalNotations. Section FromEnrichedProfunctor. End FromEnrichedProfunctor.