proposition: Lemma free_grfun_setquotpr {X Y : hSet} (f : X → Y) (x : free_monoid (setcoprod X X)) : free_grfun f (setquotpr _ x) = setquotpr _ (@free_monoidfun (setcoprod X X) (setcoprod Y Y) (coprodf f f) x).
proof: Proof. refine (setquotunivcomm _ _ _ _ _ @ _). refine (free_monoid_extend_homot _ x @ _). exact (sumofmaps_funcomp f free_gr_unit f (grinv (free_gr Y) ∘ free_gr_unit)). rewrite (@free_monoid_extend_funcomp (setcoprod X X) (setcoprod Y Y)). refine (free_monoid_extend_homot _ _ @ _). exact (sumofmaps_free_gr_unit). apply (@free_monoid_extend_comp (setcoprod _ _)). Defined.
imports: UniMath.MoreFoundations.Subtypes UniMath.MoreFoundations.Sets UniMath.Algebra.Monoids UniMath.Algebra.Groups UniMath.Algebra.IteratedBinaryOperations UniMath.Combinatorics.Lists