Definition func_monoid (A : Setoid) (B : monoid) : MONOID :=
  Build_monoid
    (Build_monoid_on (A:=func_sgroup A B) (monoid_unit:=
       func_zerofun A B) (func_zerofun_is_r_unit (A:=A) (B:=B))
       (func_zerofun_is_l_unit (A:=A) (B:=B))).

(* Specifications: *)
Lemma func_monoid_is_abelian : forall (A : Setoid) (B : abelian_monoid), abelian_monoid_on (func_monoid A B).