Some notes in the beginning:
- I am a chemist so please excuse my not-so-rigorous knowledge of group theory.
- My question is explicitly only about 3-dimensional point groups. So I am happy with answers, which only apply in this special case.
- It is an applied case, where each element has a matrix representation. In the end it should be possible to map e.g. equivalent atoms in molecules onto each other.
Let's assume, that I have a (not necessarily minimal) generating set of a point group. How do I generate efficiently all other symmetry operations?
I denote:
- $a$ the number of elements in the generating set
- $o$ the order of the group
- $S_i$ the i-th symmetry operation.
- $N_i$ the idempotence number of $S_i$
- $n_i$ the power of $S_i$
- $n'_i$ is defined as $N_i - n_i$
Abelian groups
For abelian groups this is then straighforward. The set of all symmetry operations is the following set:
$\{\prod\limits_{i=1}^a S_i ^ {n_i} | 0 \leq n_i \leq N_i - 2\}$
Which gives: $$ o = \prod\limits_{i=1}^a (N_i - 1)$$
Non abelian groups
If not all elements commute, I have to take the order into account. This gives an upper bound for $o$ with:
$$ o = a! \prod\limits_{i=1}^a (N_i - 1)$$
This is already under the assumption, that all elements can be grouped together using "pseudo commutation" (is this the right word?) rules. e.g.: $$C_2 C_3 = C_3^2 C_2$$
Is there a similar general and efficient way in the case of non-abelian-groups?