Proposition precomp_enriched_profunctor_laws : enriched_profunctor_laws precomp_enriched_profunctor_data. Proof. repeat split. - intros x y ; cbn. rewrite !assoc. rewrite <- tensor_comp_id_r. rewrite functor_enrichment_id. rewrite lmap_e_id. apply idpath. - intros x y ; cbn. rewrite !assoc. rewrite <- tensor_comp_id_r. rewrite functor_enrichment_id. rewrite rmap_e_id. apply idpath. - intros x₁ x₂ x₃ y ; cbn. rewrite !assoc. rewrite <- tensor_comp_id_r. rewrite !assoc'. rewrite functor_enrichment_comp. rewrite !assoc. rewrite tensor_comp_id_r. rewrite !assoc'. rewrite lmap_e_comp'. rewrite !assoc. apply maponpaths_2. refine (!_). etrans. { rewrite !assoc'. rewrite <- tensor_split. rewrite tensor_comp_l_id_r. apply idpath. } rewrite !assoc. apply maponpaths_2. rewrite <- tensor_lassociator. apply maponpaths_2. rewrite <- tensor_comp_id_r. apply maponpaths_2. rewrite <- tensor_sym_mon_braiding. rewrite !assoc'. rewrite sym_mon_braiding_inv. rewrite id_right. apply idpath. - intros x y₁ y₂ y₃ ; cbn. rewrite !assoc. rewrite <- tensor_comp_id_r. rewrite !assoc'. rewrite functor_enrichment_comp. rewrite !assoc. rewrite tensor_comp_id_r. rewrite !assoc'. rewrite rmap_e_comp. rewrite !assoc. apply maponpaths_2. refine (!_). etrans. { rewrite !assoc'. rewrite <- tensor_split. rewrite tensor_comp_l_id_r. apply idpath. } rewrite !assoc. apply maponpaths_2. rewrite <- tensor_lassociator. apply maponpaths_2. apply idpath. - intros x₁ x₂ y₁ y₂ ; cbn. rewrite !assoc'. etrans. { do 2 apply maponpaths. rewrite tensor_comp_id_l. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_split. rewrite tensor_split'. rewrite !assoc'. rewrite lmap_e_rmap_e'. apply idpath. } rewrite !assoc. apply maponpaths_2. etrans. { rewrite !assoc'. do 2 apply maponpaths. rewrite !assoc. etrans. { do 4 apply maponpaths_2. rewrite <- tensor_comp_mor. rewrite id_left. rewrite id_right. apply idpath. } rewrite tensor_rassociator. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_comp_id_r. rewrite tensor_sym_mon_braiding. rewrite tensor_comp_id_r. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite tensor_lassociator. rewrite !assoc'. apply idpath. } etrans. { apply maponpaths. rewrite !assoc. rewrite mon_lassociator_rassociator. rewrite id_left. apply idpath. } etrans. { rewrite !assoc. rewrite <- tensor_comp_id_r. rewrite sym_mon_braiding_inv. rewrite tensor_id_id. rewrite id_left. apply idpath. } refine (!_). etrans. { rewrite !assoc'. apply maponpaths. rewrite <- tensor_split. rewrite tensor_comp_l_id_r. apply idpath. } rewrite !assoc. apply idpath. Qed.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Prelude. Require Import UniMath.CategoryTheory.EnrichedCats.Enrichment. Require Import UniMath.CategoryTheory.EnrichedCats.EnrichmentFunctor. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.Profunctor. Require Import UniMath.CategoryTheory.Monoidal.Categories. Require Import UniMath.CategoryTheory.Monoidal.Structure.Symmetric. Require Import UniMath.CategoryTheory.Monoidal.Structure.Closed. Import MonoidalNotations.