So why are we calling these things "groups", anyway? Technically, a group is
a set of elements and an operation on the set, which takes two elements and
returns a third. (Also called binary operation.) There's closure - take two
elements, operate, and you get another element, not something else. There's
associativity - the order of a sequence operations matters, as we've seen
with *Dih*_{3}, but given a sequence it doesn't matter how you group them.
*a*(*bc*) = (*ab*)*c*. And groups have an identify element, and a unique inverse
for every element. All of the groups we've seen have these properties -
closure, identity, and for every element there's some element such that when
you combine them you get the identity. *tt* = *I*. *ss*^{2} = *I*.

Note that technically, the group of *Dih*_{3}, say, isn't the set of positions
of the triangle, it's the set of the *motions* of the triangle, and the
group operation is simply that of doing one operation after another, with the
result being whichever motion would have given the current position of the
triangle. The labels *s* and *t* can applied both to positions of the
triangle and to the motions which produce the positions; the set of group
elements is actually the motions.

The ideas here can be made more general and more specific. Semi-groups just have closure and associativity; think of an arbitrary graph. There are also rings and fields, as well as other categories, which are groups with more constraints on them. But I won't go into details about those.