Proposition enriched_profunctor_graph_square_laws : enriched_profunctor_transformation_laws enriched_profunctor_graph_square_data. Proof. split. - intros ; cbn. etrans. { rewrite !assoc. rewrite <- tensor_split. rewrite tensor_split'. rewrite tensor_comp_id_l. rewrite !assoc'. do 2 apply maponpaths. refine (!(id_left _) @ _). rewrite <- mon_rassociator_lassociator. rewrite !assoc'. apply maponpaths. rewrite !assoc. refine (!_). apply lmap_e_comp. } rewrite !assoc. apply maponpaths_2. etrans. { apply maponpaths_2. rewrite tensor_comp_id_l. rewrite !assoc'. rewrite tensor_rassociator. rewrite !assoc. apply maponpaths_2. rewrite !assoc'. rewrite tensor_comp_id_l. rewrite !assoc'. rewrite mon_rinvunitor_triangle. apply idpath. } refine (!_). etrans. { do 2 apply maponpaths_2. rewrite !assoc'. rewrite graph_enriched_profunctor_enrichment_comp_pr2. apply idpath. } etrans. { rewrite !assoc'. do 2 apply maponpaths. rewrite !assoc. rewrite tensor_rinvunitor. rewrite !assoc'. rewrite <- tensor_split'. rewrite tensor_split. apply idpath. } rewrite tensor_comp_id_r. rewrite !assoc. apply maponpaths_2. refine (!_). etrans. { rewrite !assoc'. do 3 apply maponpaths. rewrite tensor_id_id. rewrite <- tensor_split. rewrite tensor_split'. apply idpath. } rewrite !assoc. apply maponpaths_2. etrans. { rewrite !assoc'. rewrite <- tensor_rinvunitor. rewrite !assoc. apply idpath. } apply maponpaths_2. rewrite <- tensor_sym_mon_braiding. rewrite <- tensor_split'. apply idpath. - intros. rewrite !enriched_profunctor_graph_square_data_eq ; cbn. etrans. { rewrite !assoc. rewrite <- tensor_split. rewrite tensor_split'. rewrite tensor_comp_id_l. rewrite !assoc'. do 2 apply maponpaths. refine (!(id_left _) @ _). rewrite <- mon_rassociator_lassociator. rewrite !assoc'. apply maponpaths. rewrite !assoc. refine (!_). apply rmap_e_comp. } rewrite !assoc. apply maponpaths_2. etrans. { apply maponpaths_2. rewrite tensor_comp_id_l. rewrite !assoc'. rewrite tensor_rassociator. rewrite !assoc. apply maponpaths_2. rewrite !assoc'. rewrite tensor_comp_id_l. rewrite !assoc'. rewrite mon_rinvunitor_triangle. apply idpath. } refine (!_). rewrite graph_enriched_profunctor_enrichment_comp_pr1. etrans. { rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite tensor_rinvunitor. rewrite !assoc'. rewrite <- tensor_split'. rewrite tensor_split. apply idpath. } rewrite !assoc. rewrite tensor_id_id. do 3 apply maponpaths_2. rewrite <- tensor_split'. apply idpath. Qed.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Prelude. Require Import UniMath.CategoryTheory.Limits.BinProducts. Require Import UniMath.CategoryTheory.Limits.Equalizers. 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.ProfunctorTransformations. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.ProfunctorSquares. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.StandardProfunctors. Require Import UniMath.CategoryTheory.Monoidal.Categories. Require Import UniMath.CategoryTheory.Monoidal.Structure.Symmetric. Require Import UniMath.CategoryTheory.Monoidal.Structure.Closed. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.TwoSidedDispCat. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Isos. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Univalence. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Total. Import MonoidalNotations.