End CompleteNormedModule1.
(** * Extended Types *)
(** ** Pairs *)
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).

(* Specifications: *)
Lemma prod_plus_comm :
forall x y : U * V,
prod_plus x y = prod_plus y x.
Lemma prod_plus_assoc :
forall x y z : U * V,
prod_plus x (prod_plus y z) = prod_plus (prod_plus x y) z.
Lemma prod_plus_zero_r :
forall x : U * V,
prod_plus x prod_zero = x.
Lemma prod_plus_opp_r :
forall x : U * V,
prod_plus x (prod_opp x) = prod_zero.