Definition FaG_set := Build_Setoid eqFaG_Equiv.Definition FreeAbelianGroup : ABELIAN_GROUP.Fixpoint FaG_lift_fun (p : FreeAbelianGroup) : G :=
  match p with
  | Var v => f v
  | Law p1 p2 => sgroup_law _ (FaG_lift_fun p1) (FaG_lift_fun p2)
  | Unit => monoid_unit G
  | Inv p1 => group_inverse G (FaG_lift_fun p1)
  end.Definition FaG_lift : Hom FreeAbelianGroup G.Definition FaG_var : Hom V FreeAbelianGroup.

(* Specifications: *)
Lemma FaG_comp_prop : Equal f (comp_hom (FaG_lift:Hom (FreeAbelianGroup:SET) G) FaG_var).