Proposition dwhisker_comp_v_enriched_profunctor_square {V : benabou_cosmos} {C₁ C₂ C₃ C₄ C₅ C₆ : category} {E₁ : enrichment C₁ V} {E₂ : enrichment C₂ V} {E₃ : enrichment C₃ V} {E₄ : enrichment C₄ V} {E₅ : enrichment C₅ V} {E₆ : enrichment C₆ V} {F : C₁ ⟶ C₂} {EF : functor_enrichment F E₁ E₂} {G : C₃ ⟶ C₄} {EG : functor_enrichment G E₃ E₄} {H₁ H₂ : C₅ ⟶ C₆} {EH₁ : functor_enrichment H₁ E₅ E₆} {EH₂ : functor_enrichment H₂ E₅ E₆} {τ : H₂ ⟹ H₁} (Hτ : nat_trans_enrichment τ EH₂ EH₁) {P₁ : E₁ ↛e E₃} {P₂ : E₃ ↛e E₅} {Q₁ : E₂ ↛e E₄} {Q₂ : E₄ ↛e E₆} (θ₁ : enriched_profunctor_square EF EG P₁ Q₁) (θ₂ : enriched_profunctor_square EG EH₁ P₂ Q₂) : dwhisker_enriched_profunctor_square Hτ (comp_v_enriched_profunctor_square θ₁ θ₂) = comp_v_enriched_profunctor_square θ₁ (dwhisker_enriched_profunctor_square Hτ θ₂). Proof. use eq_enriched_profunctor_transformation ; intros z v ; cbn. use from_comp_enriched_profunctor_eq. intro x. etrans. { rewrite !assoc. do 5 apply maponpaths_2. apply comp_v_enriched_profunctor_square_mor_comm. } refine (!_). etrans. { apply comp_v_enriched_profunctor_square_mor_comm. } cbn. rewrite !assoc'. rewrite tensor_comp_l_id_r. rewrite !assoc'. apply maponpaths. refine (!_). etrans. { rewrite !assoc. rewrite tensor_linvunitor. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_split. rewrite tensor_split'. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_comp_id_l. rewrite tensor_sym_mon_braiding. rewrite !assoc'. apply maponpaths. apply comp_enriched_profunctor_lmap_comm. } etrans. { do 2 apply maponpaths. rewrite !assoc. rewrite sym_mon_braiding_inv. unfold comp_enriched_profunctor_lmap_mor. apply id_left. } rewrite !tensor_comp_id_l. rewrite !assoc. do 2 apply maponpaths_2. rewrite <- mon_linvunitor_triangle. etrans. { rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_id_id. rewrite <- tensor_lassociator. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite sym_mon_hexagon_lassociator. rewrite !assoc'. rewrite <- tensor_comp_id_l. rewrite sym_mon_braiding_inv. rewrite tensor_id_id. rewrite id_right. apply idpath. } rewrite !assoc. rewrite <- !tensor_comp_id_r. rewrite !assoc'. rewrite tensor_sym_mon_braiding. rewrite !assoc. rewrite tensor_comp_id_r. rewrite !assoc'. rewrite tensor_lassociator. rewrite !assoc. apply maponpaths_2. rewrite sym_mon_braiding_linvunitor. rewrite mon_inv_triangle. apply idpath. Qed.
Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Prelude. Require Import UniMath.CategoryTheory.EnrichedCats.BenabouCosmos. Require Import UniMath.CategoryTheory.EnrichedCats.Enrichment. Require Import UniMath.CategoryTheory.EnrichedCats.EnrichmentFunctor. Require Import UniMath.CategoryTheory.EnrichedCats.EnrichmentTransformation. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.Profunctor. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.StandardProfunctors. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.ProfunctorTransformations. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.Invertible. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.ProfunctorSquares. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.Coend. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.Composition.CompositionProf. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.Composition.SquareComp. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.Composition.Unitors. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.Composition.Associators. Require Import UniMath.CategoryTheory.EnrichedCats.Profunctors.Composition.Whiskering. Require Import UniMath.CategoryTheory.Monoidal.Categories. Require Import UniMath.CategoryTheory.Monoidal.Structure.Symmetric. Require Import UniMath.CategoryTheory.Monoidal.Structure.Closed. Import MonoidalNotations.