Proposition enriched_curried_bifunctor_whiskered_laws : enriched_whiskered_bifunctor_laws enriched_curried_bifunctor_whiskered_data. Proof. repeat split. - intros x y ; cbn. refine (_ @ enriched_curried_bifunctor_id F _ _). rewrite !assoc. apply maponpaths_2. rewrite tensor_rinvunitor. rewrite !assoc'. rewrite <- tensor_split'. rewrite mon_linvunitor_I_mon_rinvunitor_I. apply idpath. - intros x y ; cbn. refine (_ @ enriched_curried_bifunctor_id F _ _). rewrite !assoc. apply maponpaths_2. rewrite tensor_linvunitor. rewrite !assoc'. rewrite <- tensor_split. apply idpath. - intros x₁ x₂ x₃ y ; cbn. refine (!_). etrans. { rewrite tensor_comp_mor. rewrite !assoc'. rewrite <- enriched_curried_bifunctor_comp. apply idpath. } rewrite !assoc. apply maponpaths_2. rewrite tensor_comp_mor. rewrite !assoc'. etrans. { apply maponpaths. rewrite !assoc. rewrite <- naturality_inner_swap. rewrite !assoc'. apply maponpaths. etrans. { apply maponpaths. rewrite tensor_split. apply idpath. } rewrite !assoc. apply maponpaths_2. rewrite tensor_id_id. rewrite <- tensor_comp_id_l. apply maponpaths. rewrite tensor_split. rewrite !assoc'. rewrite <- enrichment_id_left. apply idpath. } etrans. { do 2 apply maponpaths. rewrite <- tensor_split. rewrite tensor_split'. rewrite tensor_lunitor. apply idpath. } rewrite tensor_comp_id_l. rewrite !assoc. apply maponpaths_2. rewrite tensor_rinvunitor. rewrite !assoc'. etrans. { do 2 apply maponpaths. rewrite <- tensor_split'. rewrite tensor_split. apply idpath. } rewrite !assoc. apply maponpaths_2. refine (!(id_right _) @ _ @ id_left _). rewrite <- mon_runitor_rinvunitor. rewrite !assoc. apply maponpaths_2. etrans. { rewrite !assoc'. apply maponpaths. refine (_ @ precompose_inner_swap_with_lunitors_and_runitor _ _ _). rewrite !assoc'. apply maponpaths. apply maponpaths_2. rewrite tensor_mor_left. apply idpath. } rewrite <- tensor_comp_mor. rewrite !mon_rinvunitor_runitor. rewrite tensor_id_id. apply idpath. - intros x y₁ y₂ y₃ ; cbn. refine (!_). etrans. { rewrite tensor_comp_mor. rewrite !assoc'. rewrite <- enriched_curried_bifunctor_comp. apply idpath. } rewrite !assoc. apply maponpaths_2. rewrite tensor_comp_mor. rewrite !assoc'. etrans. { apply maponpaths. rewrite !assoc. rewrite <- naturality_inner_swap. rewrite !assoc'. apply maponpaths. etrans. { apply maponpaths. rewrite tensor_split'. apply idpath. } rewrite !assoc. apply maponpaths_2. rewrite tensor_id_id. rewrite <- tensor_comp_id_r. apply maponpaths_2. rewrite tensor_split'. rewrite !assoc'. rewrite <- enrichment_id_right. apply idpath. } etrans. { do 2 apply maponpaths. rewrite <- tensor_split'. rewrite tensor_split. rewrite tensor_runitor. apply idpath. } rewrite tensor_comp_id_r. rewrite !assoc. apply maponpaths_2. rewrite tensor_linvunitor. rewrite !assoc'. etrans. { do 2 apply maponpaths. rewrite <- tensor_split. rewrite tensor_split'. apply idpath. } rewrite !assoc. apply maponpaths_2. refine (!(id_right _) @ _ @ id_left _). rewrite <- mon_lunitor_linvunitor. rewrite !assoc. apply maponpaths_2. etrans. { rewrite !assoc'. apply maponpaths. refine (_ @ precompose_inner_swap_with_lunitors_on_right _ _ _). rewrite !assoc'. apply maponpaths. apply maponpaths_2. rewrite tensor_mor_right. rewrite mon_runitor_I_mon_lunitor_I. apply idpath. } rewrite <- tensor_comp_mor. rewrite !mon_linvunitor_lunitor. rewrite tensor_id_id. apply idpath. - intros x₁ x₂ y₁ y₂ ; cbn. rewrite !tensor_comp_mor. rewrite !assoc'. rewrite <- !enriched_curried_bifunctor_comp. rewrite !assoc. apply maponpaths_2. rewrite !assoc'. etrans. { apply maponpaths. rewrite !assoc. rewrite <- naturality_inner_swap. rewrite !assoc'. apply maponpaths. rewrite <- tensor_comp_mor. rewrite <- enrichment_id_left. rewrite <- enrichment_id_right. apply idpath. } refine (!_). etrans. { do 2 apply maponpaths. rewrite !assoc. rewrite <- naturality_inner_swap. rewrite !assoc'. apply maponpaths. rewrite <- tensor_comp_mor. rewrite <- enrichment_id_left. rewrite <- enrichment_id_right. apply idpath. } rewrite !assoc. rewrite <- tensor_sym_mon_braiding. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- inner_swap_commute_with_swap. rewrite !assoc'. apply maponpaths. rewrite <- tensor_comp_mor. rewrite sym_mon_braiding_runitor. rewrite sym_mon_braiding_lunitor. 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.