Definition FM_set := Build_Setoid eqFM_Equiv.Definition FreeMonoid : MONOID.Fixpoint FM_lift_fun (p : FreeMonoid) : M :=
  match p with
  | Var v => f v
  | Law p1 p2 => sgroup_law _ (FM_lift_fun p1) (FM_lift_fun p2)
  | Unit => monoid_unit M
  end.Definition FM_lift : Hom FreeMonoid M.Definition FM_var : Hom V FreeMonoid.

(* Specifications: *)
Lemma FM_comp_prop : Equal f (comp_hom (FM_lift:Hom (FreeMonoid:SET) M) FM_var).