# Create group from multiplication table

Suppose I have a multiplication table for a group. For example,

m = {{1, 2, 3, 4}, {2, 3, 4, 1}, {3, 4, 1, 2}, {4, 1, 2, 3}}


I would like to create a group from this table, i.e., end up with the equivalent of

group = CyclicGroup[4]


As far as I can see, the only tool for creating groups is PermutationGroup[]...? So I would have to compute the permutations from the multiplication table m.

• Would you be willing to add another example or two? The scope of your question is not clear to me. Does your input always reduce to a simple CyclicGroup or do you need something more robust than that? Commented Nov 12, 2014 at 13:04
• @Mr.Wizard: Cannot add another example right now, but in general I have a (possibly large) mult table for a group, and I would like to get a Mathematica group object out of it. Could be any finite group. Commented Nov 12, 2014 at 13:53

The multiplication table is itself a list of permutations of a representation of the group so you can do

In[1]:= m = {{1, 2, 3, 4}, {2, 3, 4, 1}, {3, 4, 1, 2}, {4, 1, 2, 3}};

In[2]:= G = PermutationGroup[m];


Now you can compute group properties as usual:

In[3]:= GroupOrder[G]
Out[3]= 4


In this case the permutation representation obtained is exactly the same used by CyclicGroup[4], so you can check that they have the same elements:

In[4]:= G == CyclicGroup[4]
Out[4]= True


This happens because CyclicGroup[4] has order 4 and is represented with degree 4 as well.

As a counterexample, take DihedralGroup[4]. It is implemented as a permutation representation of degree 4:

In[5]:= PermutationMax[DihedralGroup[4]]
Out[5]= 4


but has order 8:

In[6]:= GroupOrder[DihedralGroup[4]]
Out[6]= 8


Now:

In[7]:= m = DihedralGroup[4] // GroupMultiplicationTable
Out[7]= {{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}}

In[8]:= G = PermutationGroup[m];


This gives a permutation representation of degree 8 of the same abstract group. But the groups are different:

In[9]:= G == DihedralGroup[4]
Out[9]= False


That is, they are different representations of the same abstract group.