Finding maximal quotient of a particular class of a group

83 Views Asked by At

Given a group G, how do I find the maximal 2 quotient of class 3 for that group in GAP? For example, if

            G= < x_0,...,x_6 | x_i * x_(i+1) * x_(i+3) for i = 0,...,6 >

where i, i+1 and i+3 are taken modulo 7.

1

There are 1 best solutions below

1
On

Gap uses 1-indexed lists, so there is a little complication with your naming convention. I'm using x1, x2, ..., x6, x0, since those will be indexed by 1, 2, ..., 6, 7.

gap> f:=FreeGroup(List([1..7],i->Concatenation("x_",String(i mod 7))));;
gap> gens:=GeneratorsOfGroup(f);
[ x_1, x_2, x_3, x_4, x_5, x_6, x_0 ]

Now we need to use mod to index a list, so we need a 1-based mod to make the relations:

gap> m:=function(a,b) return ((a-1) mod b)+1; end;;
gap> r:=List([1..7],i->Product(gens{List([i,i+1,i+3],j->m(j,7))}));
[ x_1*x_2*x_4, x_2*x_3*x_5, x_3*x_4*x_6, x_4*x_5*x_0, x_5*x_6*x_1, x_6*x_0*x_2,
  x_0*x_1*x_3 ]

Now we form the group, an epimorphism to its maximal p-quotient of p-class c for p=2 and c=3, and then look a little at the image:

gap> g:=f/r;;
gap> epi:=EpimorphismPGroup(g,2,3);;
gap> img:=Image(epi);;
gap> List(PCentralSeries(img),Size);
[ 256, 32, 4, 1 ]

So the group has rank 3 (since 256/32 = 8, and 8 = 2^3), its next 2-central layer has rank 3 (since 32/4 = 8, and 8 = 2^3), and its last layer has rank 2 (since 4/1 = 4, and 4 = 2^2).

You can also examine other slices of the group:

gap> StructureDescription(Center(img));
"C2 x C2"
gap> StructureDescription(img/DerivedSubgroup(img));
"C2 x C2 x C2"
gap> StructureDescription(DerivedSubgroup(img));
"C2 x C2 x C2 x C2 x C2"

If you want a presentation for the image, you can use:

gap> iso:=IsomorphismFpGroup(img);
[ a1, a2, a3, a4, a5, a6, a7, a8 ] -> [ F1, F2, F3, F4, F5, F6, F7, F8 ]
gap> RelatorsOfFpGroup(Image(iso));
[ F1^2*F8^-1*F6^-1, F2^-1*F1^-1*F2*F1*F4^-1, F3^-1*F1^-1*F3*F1*F5^-1,
  F4^-1*F1^-1*F4*F1*F7^-1, F5^-1*F1^-1*F5*F1*F8^-1, F6^-1*F1^-1*F6*F1,
  F7^-1*F1^-1*F7*F1, F8^-1*F1^-1*F8*F1, F2^2*F7^-1*F6^-1*F5^-1,
  F3^-1*F2^-1*F3*F2*F6^-1, F4^-1*F2^-1*F4*F2*F8^-1, F5^-1*F2^-1*F5*F2*F7^-1,
  F6^-1*F2^-1*F6*F2*F7^-1, F7^-1*F2^-1*F7*F2, F8^-1*F2^-1*F8*F2,
  F3^2*F8^-1*F7^-1*F6^-1*F5^-1*F4^-1, F4^-1*F3^-1*F4*F3*F7^-1,
  F5^-1*F3^-1*F5*F3*F8^-1*F7^-1, F6^-1*F3^-1*F6*F3*F8^-1, F7^-1*F3^-1*F7*F3,
  F8^-1*F3^-1*F8*F3, F4^2, F5^-1*F4^-1*F5*F4, F6^-1*F4^-1*F6*F4, F7^-1*F4^-1*F7*F4,
  F8^-1*F4^-1*F8*F4, F5^2, F6^-1*F5^-1*F6*F5, F7^-1*F5^-1*F7*F5, F8^-1*F5^-1*F8*F5,
  F6^2, F7^-1*F6^-1*F7*F6, F8^-1*F6^-1*F8*F6, F7^2, F8^-1*F7^-1*F8*F7, F8^2 ]

If you use homomorphisms, you can keep track of the relationship between the groups. For example, x_1 through x_3 in the original group are just the first few generators, but after that x_4 are more complicated:

gap> Image(iso,Image(epi,g.1));
F1
gap> Image(iso,Image(epi,g.2));
F2
gap> Image(iso,Image(epi,g.3));
F3
gap> Image(iso,Image(epi,g.4));
F1*F2*F4*F5*F7