proposition: Proposition continuation_functor_enrichment_laws : @is_functor_enrichment V V (V ^opp) continuation_functor (self_enrichment V) (op_enrichment V (self_enrichment V)) (λ x y, internal_lam (sym_mon_braiding V _ _ · internal_comp x y r)).
proof: Proof. repeat split ; cbn. - intro x. use internal_funext. intros a h. rewrite tensor_comp_r_id_r. rewrite !assoc'. rewrite internal_beta. refine (!_). etrans. { rewrite tensor_split. rewrite !assoc'. unfold internal_id. rewrite internal_beta. rewrite tensor_lunitor. apply idpath. } use internal_funext. intros a' h'. refine (!_). rewrite !tensor_comp_r_id_r. unfold internal_comp. rewrite !assoc'. rewrite internal_beta. rewrite !assoc. rewrite <- tensor_comp_mor. rewrite tensor_sym_mon_braiding. rewrite tensor_comp_r_id_r. rewrite id_right. rewrite !assoc'. etrans. { apply maponpaths. rewrite !assoc. rewrite tensor_lassociator. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_comp_mor. rewrite id_right. unfold internal_id. rewrite internal_beta. rewrite tensor_split. apply idpath. } rewrite !assoc. do 2 apply maponpaths_2. rewrite !assoc'. rewrite <- mon_triangle. rewrite <- tensor_comp_mor. rewrite id_right. rewrite sym_mon_braiding_runitor. apply idpath. - intros x y z. use internal_funext. intros a h. rewrite !tensor_comp_r_id_r. rewrite !assoc'. rewrite internal_beta. refine (!_). etrans. { do 2 apply maponpaths. apply internal_beta. } rewrite !assoc. rewrite <- tensor_comp_mor. rewrite tensor_sym_mon_braiding. rewrite tensor_comp_mor. rewrite !assoc'. etrans. { apply maponpaths. rewrite !assoc. rewrite tensor_lassociator. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_comp_mor. rewrite id_right. rewrite internal_beta. rewrite tensor_split. rewrite !assoc'. rewrite internal_beta. rewrite !assoc. rewrite tensor_sym_mon_braiding. apply idpath. } rewrite tensor_split. refine (!_). rewrite tensor_split. rewrite !assoc'. apply maponpaths. clear a h. rewrite !assoc. rewrite tensor_sym_mon_braiding. use internal_funext. intros a h. rewrite !tensor_comp_r_id_r. rewrite !assoc'. etrans. { apply maponpaths. etrans. { apply maponpaths. unfold internal_comp. rewrite internal_beta. apply idpath. } rewrite !assoc. rewrite tensor_lassociator. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_comp_id_l. unfold internal_comp. rewrite internal_beta. apply idpath. } refine (!_). etrans. { do 4 apply maponpaths. unfold internal_comp. rewrite internal_beta. rewrite !assoc. rewrite tensor_lassociator. rewrite !assoc'. apply maponpaths. rewrite tensor_id_id. rewrite !assoc. rewrite <- tensor_split'. rewrite tensor_split. rewrite !assoc'. rewrite internal_beta. apply idpath. } rewrite !assoc. apply maponpaths_2. rewrite !tensor_comp_l_id_r. rewrite !assoc. apply maponpaths_2. rewrite !assoc'. rewrite <- tensor_id_id. rewrite tensor_lassociator. rewrite !assoc. apply maponpaths_2. rewrite !assoc'. rewrite tensor_split. refine (!_). rewrite tensor_split. rewrite !assoc'. apply maponpaths. clear a h. rewrite mon_lassociator_lassociator. rewrite !assoc. do 2 apply maponpaths_2. rewrite <- !tensor_comp_id_r. apply maponpaths_2. refine (!_). etrans. { apply maponpaths_2. rewrite !assoc'. rewrite <- tensor_sym_mon_braiding. rewrite !assoc. apply maponpaths_2. refine (!_). apply sym_mon_hexagon_lassociator. } apply lassociator_hexagon_two. - intros x y f. use internal_funext. intros a h. rewrite !tensor_comp_r_id_r. rewrite tensor_split. rewrite !assoc'. unfold internal_from_arr. rewrite !internal_beta. use internal_funext. intros a' h'. rewrite !tensor_comp_r_id_r. unfold internal_precomp. rewrite !assoc'. unfold internal_comp. rewrite !internal_beta. refine (!_). rewrite !assoc. etrans. { rewrite <- tensor_comp_mor. rewrite tensor_sym_mon_braiding. rewrite tensor_comp_r_id_r. rewrite id_right. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite tensor_lassociator. rewrite !assoc'. apply maponpaths. rewrite !assoc. rewrite <- tensor_comp_mor. rewrite internal_beta. rewrite id_right. rewrite tensor_comp_l_id_r. rewrite tensor_split. apply idpath. } rewrite !assoc. do 2 apply maponpaths_2. rewrite !assoc'. rewrite !(maponpaths (λ z, _ · z) (assoc _ _ _)). rewrite <- mon_triangle. rewrite !assoc. rewrite <- !tensor_comp_mor. rewrite !id_right. apply maponpaths_2. rewrite sym_mon_braiding_runitor. rewrite tensor_lunitor. 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.Examples.SelfEnrichedColimits UniMath.CategoryTheory.EnrichedCats.Colimits.Examples.OppositeEnrichedColimits UniMath.Semantics.EnrichedEffectCalculus.EECModel