Proposition enriched_whiskered_bifunctor_to_curried_laws : enriched_curried_bifunctor_laws enriched_whiskered_bifunctor_to_curried_data. Proof. split. - intros x y ; cbn. rewrite !assoc'. etrans. { apply maponpaths. rewrite !assoc. apply maponpaths_2. rewrite <- tensor_comp_mor. rewrite enriched_whiskered_bifunctor_left_id. rewrite enriched_whiskered_bifunctor_right_id. apply idpath. } rewrite tensor_split. rewrite !assoc'. rewrite <- enrichment_id_left. rewrite tensor_lunitor. rewrite !assoc. rewrite mon_linvunitor_lunitor. apply id_left. - intros x₁ x₂ x₃ y₁ y₂ y₃ ; cbn. rewrite !assoc'. etrans. { apply maponpaths. rewrite !assoc. rewrite <- tensor_comp_mor. rewrite enriched_whiskered_bifunctor_left_comp. rewrite enriched_whiskered_bifunctor_right_comp. rewrite tensor_comp_mor. rewrite !assoc'. apply idpath. } rewrite !assoc. rewrite naturality_inner_swap. rewrite !assoc'. etrans. { apply maponpaths_2. etrans. { apply maponpaths_2. rewrite tensor_split'. apply idpath. } etrans. { apply maponpaths. rewrite tensor_split. apply idpath. } rewrite tensor_comp_mor. apply idpath. } rewrite !assoc'. refine (!_). etrans. { rewrite tensor_comp_mor. do 2 apply maponpaths_2. etrans. { apply maponpaths_2. rewrite tensor_split'. apply idpath. } etrans. { apply maponpaths. rewrite tensor_split. apply idpath. } rewrite tensor_comp_mor. apply idpath. } rewrite !assoc'. apply maponpaths. etrans. { etrans. { apply maponpaths. rewrite tensor_split. rewrite !assoc'. rewrite enrichment_assoc. rewrite !assoc. rewrite <- tensor_id_id. rewrite tensor_lassociator. apply idpath. } rewrite !assoc. rewrite tensor_lassociator. rewrite !assoc'. apply maponpaths. rewrite !assoc. apply maponpaths_2. rewrite <- !tensor_comp_id_l. apply maponpaths. rewrite !assoc'. rewrite enrichment_assoc'. rewrite !assoc. rewrite tensor_rassociator. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_comp_id_r. do 2 apply maponpaths_2. apply enriched_whiskered_bifunctor_left_right'. } rewrite !tensor_comp_id_l. rewrite !tensor_comp_id_r. rewrite !assoc'. etrans. { do 2 apply maponpaths. rewrite !assoc. do 2 apply maponpaths_2. apply maponpaths. apply maponpaths_2. rewrite <- tensor_comp_id_r. rewrite <- tensor_sym_mon_braiding. apply idpath. } etrans. { apply maponpaths. rewrite !assoc. rewrite <- tensor_comp_id_l. rewrite tensor_comp_id_r. rewrite !assoc. rewrite <- tensor_rassociator. apply idpath. } etrans. { rewrite !tensor_comp_id_l. rewrite !assoc. rewrite <- tensor_lassociator. apply idpath. } rewrite !assoc'. apply maponpaths. unfold inner_swap. rewrite tensor_mor_left, tensor_mor_right. rewrite !tensor_comp_id_l. rewrite !assoc'. do 3 apply maponpaths. refine (!_). etrans. { do 2 apply maponpaths. rewrite tensor_split. rewrite !assoc'. rewrite enrichment_assoc. rewrite !assoc. rewrite <- tensor_id_id. rewrite tensor_lassociator. apply idpath. } rewrite !assoc. apply maponpaths_2. rewrite !assoc'. etrans. { apply maponpaths. rewrite !assoc. rewrite mon_rassociator_lassociator. rewrite id_left. apply idpath. } rewrite <- !tensor_comp_id_l. apply maponpaths. rewrite enrichment_assoc'. rewrite !assoc. rewrite mon_lassociator_rassociator. rewrite id_left. 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.Enriched.Enriched. Require Import UniMath.CategoryTheory.EnrichedCats.Enriched.EnrichmentEquiv. Require Import UniMath.CategoryTheory.EnrichedCats.Examples.Tensor. Require Import UniMath.CategoryTheory.EnrichedCats.Bifunctors.CurriedBifunctors. 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.SymmetricDiagonal. Import MonoidalNotations. Section FromWhiskeredBifunctor. End FromWhiskeredBifunctor.