intros.
red in |- *.
intros f f'.
unfold func_plus in |- *.
simpl in |- *.
red in |- *.
intro a.
unfold func_plus_fun in |- *.
simpl in |- *.
apply ABELIAN_SGROUP_com.
Qed.
Definition func_absgp (A : Setoid) (B : abelian_sgroup) : ABELIAN_SGROUP :=
Build_abelian_sgroup
(Build_abelian_sgroup_on (A:=func_sgroup A B)
(func_plus_commutative (A:=A) (B:=B))).
Definition func_zerofun : forall (A : Setoid) (B : monoid), func_set A B.
intros.
apply (Build_Map (Ap:=fun a : A => zero B)).
red in |- *.
intros.
apply Refl.
Defined.

(* Specifications: *)
Lemma func_zerofun_is_r_unit :
forall (A : Setoid) (B : monoid),
unit_r (sgroup_law_map (func_sgroup A B)) (func_zerofun A B).