Proposition enriched_profunctor_collage_enrichment_laws : enrichment_laws enriched_profunctor_collage_enrichment_data. Proof. repeat split. - intros x₁ x₂. induction x₁ as [ x₁ | y₁ ] ; induction x₂ as [ x₂ | y₂ ] ; cbn in *. + apply enrichment_id_left. + use arrow_from_tensor_initial_l_benabou_cosmos_eq. + rewrite rmap_e_id. apply idpath. + apply enrichment_id_left. - intros x₁ x₂. induction x₁ as [ x₁ | y₁ ] ; induction x₂ as [ x₂ | y₂ ] ; cbn in *. + apply enrichment_id_right. + use arrow_from_tensor_initial_r_benabou_cosmos_eq. + rewrite !assoc. rewrite tensor_sym_mon_braiding. rewrite !assoc'. rewrite lmap_e_id. rewrite sym_mon_braiding_lunitor. apply idpath. + apply enrichment_id_right. - intros x₁ x₂ x₃ x₄. induction x₁ as [ x₁ | y₁ ] ; induction x₂ as [ x₂ | y₂ ] ; induction x₃ as [ x₃ | y₃ ] ; induction x₄ as [ x₄ | y₄ ] ; cbn in *. + apply enrichment_assoc. + use arrow_from_tensor_initial_1_benabou_cosmos_eq. + use arrow_from_tensor_initial_2_benabou_cosmos_eq. + use arrow_from_tensor_initial_2_benabou_cosmos_eq. + use arrow_from_tensor_initial_l_benabou_cosmos_eq. + use arrow_from_tensor_initial_1_benabou_cosmos_eq. + use arrow_from_tensor_initial_l_benabou_cosmos_eq. + use arrow_from_tensor_initial_l_benabou_cosmos_eq. + apply rmap_e_comp. + use arrow_from_tensor_initial_1_benabou_cosmos_eq. + use arrow_from_tensor_initial_2_benabou_cosmos_eq. + use arrow_from_tensor_initial_2_benabou_cosmos_eq. + etrans. { rewrite !assoc. rewrite tensor_sym_mon_braiding. rewrite !assoc'. rewrite rmap_e_lmap_e. apply idpath. } rewrite !assoc. apply maponpaths_2. rewrite tensor_comp_id_l. rewrite !assoc. apply maponpaths_2. etrans. { rewrite sym_mon_tensor_lassociator'. rewrite !assoc'. rewrite mon_rassociator_lassociator. rewrite id_right. rewrite !(maponpaths (λ z, _ · z) (assoc _ _ _)). rewrite mon_rassociator_lassociator. rewrite id_left. rewrite !assoc. rewrite sym_mon_braiding_inv. rewrite id_left. apply idpath. } apply idpath. + use arrow_from_tensor_initial_1_benabou_cosmos_eq. + refine (!_). etrans. { rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite tensor_sym_mon_braiding. rewrite !assoc'. apply maponpaths. exact (lmap_e_comp' P y₃ y₂ y₁ x₄). } rewrite !assoc. apply maponpaths_2. rewrite tensor_comp_r_id_l. rewrite !assoc'. rewrite tensor_sym_mon_braiding. rewrite !assoc. apply maponpaths_2. refine (!_). etrans. { apply maponpaths_2. apply sym_mon_tensor_lassociator'. } rewrite !assoc'. do 2 apply maponpaths. rewrite sym_mon_tensor_rassociator. etrans. { do 2 apply maponpaths. rewrite !assoc. rewrite mon_rassociator_lassociator. rewrite id_left. apply idpath. } etrans. { apply maponpaths. rewrite !assoc. rewrite <- tensor_comp_id_l. rewrite sym_mon_braiding_inv. rewrite tensor_id_id. rewrite id_left. apply idpath. } rewrite !assoc. rewrite mon_lassociator_rassociator. rewrite id_left. apply idpath. + apply enrichment_assoc. - intros x₁ x₂ f. induction x₁ as [ x₁ | y₁ ] ; induction x₂ as [ x₂ | y₂ ] ; cbn in *. + apply enriched_to_from_arr. + apply idpath. + apply idpath. + apply enriched_to_from_arr. - intros x₁ x₂ f. induction x₁ as [ x₁ | y₁ ] ; induction x₂ as [ x₂ | y₂ ] ; cbn in *. + apply enriched_from_to_arr. + apply idpath. + apply idpath. + apply enriched_from_to_arr. - intros x. induction x as [ x | y ] ; cbn in *. + apply enriched_to_arr_id. + apply enriched_to_arr_id. - intros x₁ x₂ x₃ f g. induction x₁ as [ x₁ | y₁ ] ; induction x₂ as [ x₂ | y₂ ] ; induction x₃ as [ x₃ | y₃ ] ; cbn in *. + exact (enriched_to_arr_comp E₁ f g). + rewrite tensor_split'. rewrite !assoc. rewrite mon_linvunitor_I_mon_rinvunitor_I. rewrite <- tensor_rinvunitor. refine (!(id_right _) @ _). rewrite !assoc'. apply maponpaths. apply InitialArrowEq. + apply maponpaths. rewrite tensor_split. rewrite !assoc. rewrite <- tensor_linvunitor. refine (!(id_right _) @ _). rewrite !assoc'. apply maponpaths. apply InitialArrowEq. + rewrite tensor_split. rewrite !assoc. rewrite <- tensor_linvunitor. refine (!(id_right _) @ _). rewrite !assoc'. apply maponpaths. apply InitialArrowEq. + rewrite tensor_split. rewrite !assoc. rewrite <- tensor_linvunitor. rewrite !assoc'. apply maponpaths. rewrite !assoc. apply idpath. + apply maponpaths. rewrite tensor_split'. rewrite !assoc. rewrite mon_linvunitor_I_mon_rinvunitor_I. rewrite <- tensor_rinvunitor. refine (!(id_right _) @ _). rewrite !assoc'. apply maponpaths. apply InitialArrowEq. + rewrite tensor_split'. rewrite !assoc. rewrite mon_linvunitor_I_mon_rinvunitor_I. rewrite <- tensor_rinvunitor. rewrite !assoc'. apply maponpaths. rewrite !assoc. unfold lmap_e_arr. apply maponpaths_2. rewrite !assoc'. rewrite tensor_sym_mon_braiding. rewrite !assoc. rewrite sym_mon_braiding_rinvunitor. apply idpath. + exact (enriched_to_arr_comp E₂ f g). Qed.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Prelude. Require Import UniMath.CategoryTheory.Limits.Initial. 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. Import MonoidalNotations.