proposition: Proposition copow_functor_enrichment_laws : @is_functor_enrichment V VC C copow_functor (self_enrichment V) EC (λ x y, copow_enriched_mor copowC x y r).
proof: Proof. repeat split. - intro x. use mor_to_copower_eq. { exact (pr2 (copowC _ r)). } cbn. rewrite !assoc'. etrans. { apply maponpaths. apply mor_to_copower_commutes. } use internal_funext. intros a h. rewrite !tensor_comp_r_id_r. rewrite !assoc'. unfold internal_postcomp, is_copower_enriched_map. rewrite !internal_beta. rewrite tensor_split. refine (!_). rewrite tensor_split. rewrite !assoc'. apply maponpaths. refine (!_). rewrite !assoc. unfold internal_id. rewrite internal_beta. refine (!_). rewrite <- tensor_split'. rewrite tensor_split. rewrite !assoc'. rewrite <- enrichment_id_left. rewrite tensor_lunitor. apply idpath. - intros x y z ; cbn. use mor_to_copower_eq. { exact (pr2 (copowC _ r)). } rewrite !assoc'. etrans. { apply maponpaths. apply mor_to_copower_commutes. } use internal_funext. intros a h. etrans. { rewrite !tensor_comp_r_id_r. rewrite !assoc'. unfold internal_postcomp. rewrite internal_beta. rewrite tensor_split. rewrite !assoc'. apply maponpaths. rewrite !assoc. unfold internal_comp. rewrite internal_beta. apply idpath. } rewrite !assoc'. rewrite <- (copow_enriched_mor_commute copowC y z r). etrans. { rewrite !tensor_comp_r_id_r. rewrite !assoc'. unfold is_copower_enriched_map. rewrite internal_beta. apply idpath. } refine (!_). rewrite !tensor_comp_r_id_r. rewrite tensor_split. rewrite !assoc'. apply maponpaths. etrans. { unfold is_copower_enriched_map. rewrite internal_beta. etrans. { apply maponpaths. rewrite !assoc. rewrite <- tensor_split'. rewrite tensor_split. rewrite !assoc'. apply maponpaths. rewrite enrichment_assoc. apply idpath. } rewrite !assoc. do 2 apply maponpaths_2. rewrite <- !tensor_comp_mor. rewrite !id_left, !id_right. rewrite tensor_lassociator. apply idpath. } rewrite !assoc. apply maponpaths_2. rewrite !assoc'. apply maponpaths. rewrite tensor_split'. refine (!_). rewrite !assoc. rewrite <- tensor_split. rewrite tensor_split'. rewrite !assoc'. apply maponpaths. rewrite <- !tensor_comp_mor. rewrite !id_left. apply maponpaths. clear z a h. etrans. { refine (!_). exact (copow_enriched_mor_commute copowC x y r). } rewrite !tensor_comp_r_id_r. rewrite !assoc'. unfold is_copower_enriched_map. rewrite internal_beta. rewrite !assoc. apply maponpaths_2. rewrite <- tensor_split'. apply idpath. - intros x y f ; cbn. use mor_to_copower_eq. { exact (pr2 (copowC _ r)). } etrans. { apply copow_mor_commute. } refine (!_). rewrite !assoc'. etrans. { apply maponpaths. apply mor_to_copower_commutes. } refine (!_). use internal_funext. intros a h. rewrite !tensor_comp_r_id_r. rewrite tensor_split. rewrite !assoc'. unfold internal_postcomp. rewrite !internal_beta. refine (!_). rewrite tensor_split. rewrite !assoc'. apply maponpaths. rewrite !assoc. apply maponpaths_2. unfold internal_from_arr. rewrite internal_beta. apply idpath. Qed.
imports: UniMath.Foundations.All UniMath.MoreFoundations.All UniMath.CategoryTheory.Core.Categories UniMath.CategoryTheory.Core.Functors UniMath.CategoryTheory.Core.Isos UniMath.CategoryTheory.Core.NaturalTransformations UniMath.CategoryTheory.Core.Univalence UniMath.CategoryTheory.Adjunctions.Core UniMath.CategoryTheory.exponentials UniMath.CategoryTheory.opp_precat UniMath.CategoryTheory.OppositeCategory.Core UniMath.CategoryTheory.Monoidal.Categories UniMath.CategoryTheory.Monoidal.WhiskeredBifunctors UniMath.CategoryTheory.Monoidal.Structure.Cartesian UniMath.CategoryTheory.Monoidal.Structure.Symmetric UniMath.CategoryTheory.Monoidal.Structure.Closed UniMath.CategoryTheory.Monoidal.Examples.CartesianMonoidal UniMath.CategoryTheory.Limits.Terminal UniMath.CategoryTheory.Limits.BinProducts UniMath.CategoryTheory.Limits.Initial UniMath.CategoryTheory.Limits.BinCoproducts UniMath.CategoryTheory.EnrichedCats.Enrichment UniMath.CategoryTheory.EnrichedCats.EnrichmentFunctor UniMath.CategoryTheory.EnrichedCats.EnrichmentTransformation UniMath.CategoryTheory.EnrichedCats.EnrichmentAdjunction UniMath.CategoryTheory.EnrichedCats.Examples.SelfEnriched UniMath.CategoryTheory.EnrichedCats.Examples.OppositeEnriched UniMath.CategoryTheory.EnrichedCats.Limits.EnrichedTerminal UniMath.CategoryTheory.EnrichedCats.Limits.EnrichedBinaryProducts UniMath.CategoryTheory.EnrichedCats.Limits.EnrichedPowers UniMath.CategoryTheory.EnrichedCats.Limits.Examples.SelfEnrichedLimits UniMath.CategoryTheory.EnrichedCats.Limits.Examples.OppositeEnrichedLimits UniMath.CategoryTheory.EnrichedCats.Colimits.EnrichedInitial UniMath.CategoryTheory.EnrichedCats.Colimits.EnrichedBinaryCoproducts UniMath.CategoryTheory.EnrichedCats.Colimits.EnrichedCopowers UniMath.CategoryTheory.EnrichedCats.Colimits.CopowerFunctor UniMath.CategoryTheory.EnrichedCats.Colimits.Examples.SelfEnrichedColimits UniMath.CategoryTheory.EnrichedCats.Colimits.Examples.OppositeEnrichedColimits UniMath.Semantics.EnrichedEffectCalculus.EECModel