intros A B.
red in |- *.
intro.
simpl in |- *.
red in |- *.
intro i.
simpl in |- *.
apply MONOID_unit_l.
Qed.
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).