group

A group G is a non-empty set upon which a binary operator * is defined with the following properties for all a,b,c in G:

  Closure:     G is closed under *,  a*b in G
   Associative: * is associative on G, (a*b)*c = a*(b*c)
   Identity:    There is an identity element  e  such that
 	       a*e = e*a = a.
   Inverse:     Every element has a unique inverse a' such that
 	       a * a' = a' * a = e.  The inverse is usually
 	       written with a superscript -1.