intros.
apply Build_abelian_group_on.
apply Build_abelian_monoid_on.
apply Build_abelian_sgroup_on.
exact (func_plus_commutative (A:=A) (B:=B)).
Qed.
Definition func_abgp (A : Setoid) (B : abelian_group) : ABELIAN_GROUP :=
Build_abelian_group (func_group_is_abelian A B).
Definition func_scmult_fun :
forall (A : Setoid) (B : ring), B -> func_set A B -> func_set A B.
simpl in |- *.
intros A B c v.
apply (Build_Map (Ap:=fun i : A => c rX v i)).
red in |- *.
auto with algebra.
Defined.

(* Specifications: *)
Lemma func_scmult_fun_comp :
forall (A : Setoid) (B : ring) (c c' : B) (v v' : func_set A B),
c =' c' in _ ->
v =' v' in _ -> func_scmult_fun c v =' func_scmult_fun c' v' in _.