MMA has some support for group theory, allowing representation of any finite group as a subgroup of $S_n$. It does not seem to have a function for testing whether two finite groups are isomorphic. Is there a straightforward (and computationally reasonable) way,
To test whether two groups are isomorphic?
To find an explicit isomorphism between two groups?
To find all isomorphisms from a group to itself, i.e. construct the automorphism group?
Thanks.
EDIT: Here's an example of the problem.
(Local) In[56]:= d8a = DihedralGroup[4]
(Local) Out[56]= DihedralGroup[4]
(Local) In[57]:= GroupGenerators[d8a]
(Local) Out[57]= {Cycles[{{1, 4}, {2, 3}}], Cycles[{{1, 2, 3, 4}}]}
(Local) In[59]:= d8b = PermutationGroup[GroupMultiplicationTable[d8a]]
(Local) Out[59]= PermutationGroup[{{1, 2, 3, 4, 5, 6, 7, 8}, {2, 1, 4,
3, 6, 5, 8, 7}, {3, 7, 1, 5, 4, 8, 2, 6}, {4, 8, 2, 6, 3, 7, 1,
5}, {5, 6, 7, 8, 1, 2, 3, 4}, {6, 5, 8, 7, 2, 1, 4, 3}, {7, 3, 5,
1, 8, 4, 6, 2}, {8, 4, 6, 2, 7, 3, 5, 1}}]
d8b
is, by construction, isomorphic to d8a
. Some quick checks:
Both groups have order 8:
(Local) In[61]:= GroupOrder /@ {d8a, d8b}
(Local) Out[61]= {8, 8}
Each group has 2 elements of order 4, 5 of order 2, and 1 of order 1:
(Local) In[69]:= Tally /@ (PermutationOrder /@ # & /@
GroupElements /@ {d8a, d8b})
(Local) Out[69]= {{{1, 1}, {2, 5}, {4, 2}}, {{1, 1}, {2, 5}, {4, 2}}}
However, they look completely different. d8a
is represented as a subgroup of $S_4$ with two generators. d8b
is a subgroup of $S_8$ with 8 generators. Their group stabilizer chains don't resemble each other. If I was given these two groups without knowing where they came from, how would I find out that they're isomorphic?