Section prod_AbelianGroup.
Context {U V : AbelianGroup}.
Definition prod_plus (x y : U * V) :=
(plus (fst x) (fst y), plus (snd x) (snd y)).
Definition prod_opp (x : U * V) :=
(opp (fst x), opp (snd x)).
Definition prod_zero : U * V := (zero, zero).

Lemma prod_plus_comm :
forall x y : U * V,
prod_plus x y = prod_plus y x.