2
$\begingroup$

Is there some program or a location which would allow me to work and calculate with the subgroups of the group $\operatorname{GL}_2(\mathbb Z/8\mathbb Z)$?

$\endgroup$
1
  • 2
    $\begingroup$ Try the free software GAP. $\endgroup$
    – Shaun
    Apr 14, 2019 at 20:40

2 Answers 2

7
$\begingroup$

GAP is open source. You can download and install it as explained here. Then, for example, you can do the following.

Create the group in question:

gap> G := GL(2, Integers mod 8);
GL(2,Z/8Z)
gap> Size(G);
1536

Calculate conjugacy classes of its subgroups (long output, takes a minute or two):

gap> ConjugacyClassesSubgroups(G);
[ Group([],[ [ ZmodnZObj( 1, 8 ), ZmodnZObj( 0, 8 ) ], [ ZmodnZObj( 0, 8 ), ZmodnZObj( 1, 8 ) ] ])^G, 
  Group([ [ [ ZmodnZObj( 3, 8 ), ZmodnZObj( 0, 8 ) ], [ ZmodnZObj( 0, 8 ), ZmodnZObj( 3, 8 ) ] ] ])^G, 
  Group([ [ [ ZmodnZObj( 5, 8 ), ZmodnZObj( 0, 8 ) ], [ ZmodnZObj( 0, 8 ), ZmodnZObj( 5, 8 ) ] ] ])^G, 
...
  Group([ [ [ ZmodnZObj( 1, 8 ), ZmodnZObj( 0, 8 ) ], [ ZmodnZObj( 0, 8 ), ZmodnZObj( 7, 8 ) ] ], 
      [ [ ZmodnZObj( 1, 8 ), ZmodnZObj( 0, 8 ) ], [ ZmodnZObj( 4, 8 ), ZmodnZObj( 1, 8 ) ] ], 
      [ [ ZmodnZObj( 1, 8 ), ZmodnZObj( 0, 8 ) ], [ ZmodnZObj( 2, 8 ), ZmodnZObj( 7, 8 ) ] ], 
      [ [ ZmodnZObj( 1, 8 ), ZmodnZObj( 4, 8 ) ], [ ZmodnZObj( 0, 8 ), ZmodnZObj( 1, 8 ) ] ], 
      [ [ ZmodnZObj( 3, 8 ), ZmodnZObj( 0, 8 ) ], [ ZmodnZObj( 0, 8 ), ZmodnZObj( 3, 8 ) ] ], 
      [ [ ZmodnZObj( 5, 8 ), ZmodnZObj( 0, 8 ) ], [ ZmodnZObj( 0, 8 ), ZmodnZObj( 3, 8 ) ] ], 
      [ [ ZmodnZObj( 1, 8 ), ZmodnZObj( 2, 8 ) ], [ ZmodnZObj( 0, 8 ), ZmodnZObj( 1, 8 ) ] ], 
      [ [ ZmodnZObj( 0, 8 ), ZmodnZObj( 7, 8 ) ], [ ZmodnZObj( 1, 8 ), ZmodnZObj( 7, 8 ) ] ], 
      [ [ ZmodnZObj( 0, 8 ), ZmodnZObj( 1, 8 ) ], [ ZmodnZObj( 5, 8 ), ZmodnZObj( 0, 8 ) ] ] ])^G, GL(2,Z/8Z)^G ]
gap> time;
88590

The time; command returns the CPU time in milliseconds spent by GAP to perform the last command.

To demonstrate several other features of GAP, you can assign this list to a variable called cc. In this assignment I use double semicolon ;; instead of a single one to suppress the output. Also, the second call to ConjugacyClassesSubgroups for the same group G returns the result at no cost, since it retrieves the data stored in G after the previous call:

gap> cc:=ConjugacyClassesSubgroups(G);;
gap> time; 
1

Now, let's take some class, e.g. cc[12]:

gap> c:=cc[12];
Group([ [ [ ZmodnZObj( 3, 8 ), ZmodnZObj( 0, 8 ) ], [ ZmodnZObj( 0, 8 ), ZmodnZObj( 7, 8 ) ] ] ])^G

It contains 6 conjugate subgroups:

gap> Size(c);
6

And their list can be obtained as follows:

gap> AsList(c);
[ <group of 2x2 matrices of size 2 over (Integers mod 8)>, <group of 2x2 matrices of size 2 over (Integers mod 8)>, 
  <group of 2x2 matrices of size 2 over (Integers mod 8)>, <group of 2x2 matrices of size 2 over (Integers mod 8)>, 
  <group of 2x2 matrices of size 2 over (Integers mod 8)>, <group of 2x2 matrices of size 2 over (Integers mod 8)> ]

Hope this gives an idea what you can do with GAP. Further questions that may be useful are:

$\endgroup$
3
$\begingroup$

Apart from GAP, the other software system that specializes in group theoretical calculations is Magma. Unlike GAP, Magma is not open source, but there is a calculator that is available for use online here. A disadvantage of this is that you have to type in all of your commands in advance and then run them all. Here is an example:

Input:

G := GL(2, Integers(8));
S := Subgroups(G);   //representatives of conjugacy classes of subgroups
#S;
AS := AllSubgroups(G);
#AS;

Output:

2265
24587

which are the numbers of conjugacy classes of subgroups, and all subgroups, respectively.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .