Section groups.
Variable S : Set.
Variable G : S -> Prop.
Variable Add : S -> S -> S.
Variable O : S.
Variable Opp : S -> S.
(*****************************************************************************)
(*****************)
Definition is_group :=
intern S G Add /\
associativity S Add /\ neutral S G Add O /\ opposite S G Add O Opp.

(************)
Lemma add_add :
commutativity S Add ->
associativity S Add ->
forall x1 y1 x2 y2 : S,
Add (Add x1 y1) (Add x2 y2) = Add (Add x1 x2) (Add y1 y2).