[GAP Forum] Subgroups of given index of SmallGroups
Alexander Hulpke
hulpke at math.colostate.edu
Fri Jul 10 17:41:32 BST 2009
Dear Forum, Derar Gabriel Bartolini,
According to your private e-mail, the groups you are interested in are
from the small groups library. Because they are very small, you
probably will be most happy with computing all subgroups, and then
discarding those whose index is too large.
The following example shows you how one can do this (Subgroups are
obtained up to conjugacy):
gap> g:=SmallGroup(192,500);
<pc group of size 192 with 7 generators>
gap> c:=ConjugacyClassesSubgroups(g);;
gap> c:=List(c,Representative);; # get actual subgroups, not classes
gap> c:=Filtered(c,x->Index(g,x)<=4); # or replace 4 with whatever index
[ Group([ f7, f4, f5, f6, f2*f3 ]), Group([ f7, f1*f5, f2, f4, f6 ]),
Group([ f7, f1*f6, f2, f4, f5*f6 ]), Group([ f7, f4, f5, f6, f1 ]),
Group([ f7, f1, f3, f4, f5 ]), Group([ f7, f4, f5, f6, f1*f3 ]),
Group([ f7, f1*f6, f3, f4, f5 ]), Group([ f7, f1, f2*f5, f4, f6 ]),
Group([ f7, f1*f3, f2*f5, f4*f5, f6 ]), Group([ f7, f4, f5, f6,
f2 ]),
Group([ f7, f1*f3*f5, f2, f4*f5, f6 ]), Group([ f7, f2*f4, f3, f5,
f6 ]),
Group([ f7, f4, f5, f6, f1*f2 ]), Group([ f7, f2*f4, f3*f4, f5,
f6 ]),
Group([ f7, f4, f5, f6, f3 ]), Group([ f7, f1, f2, f4, f6 ]),
Group([ f7, f4, f5, f6, f1*f2*f3 ]), Group([ f7, f1, f2*f3, f4,
f5*f6 ]),
Group([ f7, f2, f3*f4, f5, f6 ]), Group([ f7, f1*f6, f2*f3, f4,
f5*f6 ]),
Group([ f7, f2, f3, f5, f6 ]), Group([ f7, f1*f5, f2*f5, f4, f6 ]),
Group([ f7, f1*f3*f5, f2*f5, f4*f5, f6 ]), Group([ f7, f1, f2, f4,
f5 ]),
Group([ f7, f1*f6, f2, f4, f5 ]), Group([ f7, f1, f2, f4, f5*f6 ]),
Group([ f7, f1*f3, f2, f4*f5, f6 ]), Group([ f1, f2, f3, f4, f5,
f6 ]),
Group([ f7, f4, f5, f6, f1, f2 ]), Group([ f7, f4, f5, f6, f1,
f2*f3 ]),
Group([ f7, f4, f5, f6, f1*f2, f1*f3 ]),
Group([ f7, f4, f5, f6, f2, f1*f3 ]), Group([ f7, f4, f5, f6, f2,
f3 ]),
Group([ f7, f4, f5, f6, f1, f3 ]), Group([ f7, f4, f5, f6, f1*f2,
f3 ]),
Group([ f7, f4, f5, f6, f1, f2, f3 ]) ]
If your groups are larger, and your index smaller, the approach used
via FP groups also can be used (for your case of small groups and
index up to 200 it would be very inefficient). Do not worry about the
apparently missing generators, GAP is able to compute generators when
asked for (for example, by calling GeneratorsOfGroup), you also could
take pre-images under the isomorphism and then automatically would get
groups with generators. The following example illustrates this:
gap> hom:=IsomorphismFpGroup(g);
[ f1, f2, f3, f4, f5, f6, f7 ] -> [ F1, F2, F3, F4, F5, F6, F7 ]
gap> F:=Image(hom);
<fp group of size 192 on the generators [ F1, F2, F3, F4, F5, F6, F7 ]>
gap> c:=LowIndexSubgroupsFpGroup(F,4);
[ Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>),
Group(<fp, no generators known>), Group(<fp, no generators known>) ]
gap> c[10];
Group(<fp, no generators known>)
gap> GeneratorsOfGroup(c[10]);
[ F1, F3*F2^-1, F7 ]
gap> c:=List(c,x->PreImage(hom,x));
[ Group([ f1, f2, f3, f7 ]), Group([ f1, f2, f3 ]),
Group([ f1, f2, f5, f6, f7 ]), Group([ f1, f2, f5, f7 ]),
Group([ f1, f2, f6, f7 ]), Group([ f1, f2, f5*f6, f7 ]),
Group([ f1, f3, f6, f7 ]), Group([ f1, f3, f7 ]),
Group([ f1, f2*f3*f6, f2*f3*f5*f6, f7 ]), Group([ f1, f2*f3*f6,
f7 ]),
Group([ f1, f5, f6, f7 ]), Group([ f1, f2*f5, f6, f7 ]),
Group([ f4, f2, f3, f7 ]), Group([ f2, f3, f7 ]),
Group([ f4, f2, f1*f3*f4, f7 ]), Group([ f2, f1*f3*f4, f7 ]),
Group([ f4, f2, f5, f6, f7 ]), Group([ f4, f2, f5, f1*f4*f6, f7 ]),
Group([ f4, f2, f1*f4*f5, f6, f7 ]),
Group([ f4, f2, f1*f4*f5, f1*f4*f6, f7 ]), Group([ f2, f5,
f3*f4*f5, f7 ]),
Group([ f2, f1*f3, f7 ]), Group([ f4, f1*f2*f4, f3, f7 ]),
Group([ f4, f1*f2*f4, f1*f3*f4, f7 ]), Group([ f4, f1*f2*f4, f5,
f6, f7 ]),
Group([ f4, f1*f2*f4, f1*f4*f5, f6, f7 ]), Group([ f4, f3, f6, f7 ]),
Group([ f4, f3, f1*f4*f6, f7 ]), Group([ f3, f2*f4, f7 ]),
Group([ f4, f1*f3*f4, f6, f7 ]), Group([ f1*f3*f4, f2*f4, f7 ]),
Group([ f4, f2*f3*f6, f2*f3*f5*f6, f7 ]),
Group([ f4, f2*f3*f6, f1*f4*f5, f7 ]),
Group([ f2*f3*f6, f2*f3*f5*f6, f2*f4, f7 ]),
Group([ f4, f5, f6, f7, f1*f2*f3*f5 ]), Group([ f1*f3, f2*f4, f7 ]) ]
In either of the examples, neither the arrangement of groups, nor
the generators chosen are in any way particularly "nice", and can
depend on algorithm and representation chosen:
gap> c[10]; # different than in the fp representation.
Group([ f1, f2*f3*f6, f7 ])
I would like to emphasize however, that the algorithms for FP groups
in general are rather less efficient than working in the original
representation, if you have a faithful permutation representation of
small degree, or a PC group.
Finally, it is worth mentioning that there are methods to find
subgroups of low index for the general case of finite groups, however
they are currently not implemented in GAP. I will look into adding
something for future releases.
Best wishes,
Alexander Hulpke
-- Colorado State University, Department of Mathematics,
Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA
email: hulpke at math.colostate.edu, Phone: ++1-970-4914288
http://www.math.colostate.edu/~hulpke
More information about the Forum
mailing list