Definition FaM_set := Build_Setoid eqFaM_Equiv.Definition FreeAbelianMonoid : ABELIAN_MONOID.Fixpoint FaM_lift_fun (p : FreeAbelianMonoid) : M :=
  match p with
  | Var v => f v
  | Law p1 p2 => sgroup_law _ (FaM_lift_fun p1) (FaM_lift_fun p2)
  | Unit => monoid_unit M
  end.Definition FaM_lift : Hom FreeAbelianMonoid M.Definition FaM_var : Hom V FreeAbelianMonoid.

(* Specifications: *)
Lemma FaM_comp_prop : Equal f (comp_hom (FaM_lift:Hom (FreeAbelianMonoid:SET) M) FaM_var).