Lemma iterop_list_mon_map {m n : monoid} (f : monoidfun m n) : ∏ l, ((iterop_list_mon ∘ map (pr1monoidfun m n f)) l = (pr1monoidfun _ _ f ∘ iterop_list_mon) l)%functions. Proof. apply list_ind. - apply pathsinv0, monoidfununel. - intros x xs H. simpl in *. refine (maponpaths iterop_list_mon (map_cons _ _ _) @ _). refine (iterop_list_mon_step _ _ @ _). refine (_ @ !maponpaths _ (iterop_list_mon_step _ _)). refine (_ @ !binopfunisbinopfun f _ _). apply maponpaths. assumption. Qed.
Require Import UniMath.Foundations.PartD. Require Import UniMath.Foundations.Propositions. Require Import UniMath.Foundations.Sets. Require Import UniMath.Foundations.UnivalenceAxiom. Require Import UniMath.Algebra.BinaryOperations. Require Import UniMath.Algebra.Monoids. Require Import UniMath.Algebra.Free_Monoids_and_Groups. Require Import UniMath.Combinatorics.Lists. Require Import UniMath.Algebra.IteratedBinaryOperations. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.Core.NaturalTransformations. Require Import UniMath.CategoryTheory.Core.Univalence. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.CategoryTheory.Categories.HSET.Core. Require Import UniMath.CategoryTheory.Adjunctions.Core.