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_assoc :
forall x y z : U * V,
prod_plus x (prod_plus y z) = prod_plus (prod_plus x y) z.