# Using “atlasrep” to find maximal subgroups

One of the things I do most often in the computer algebra software *GAP* is call for subgroups, and in particular, maximal subgroups of a classical group. There is work in progress (John Bray, Derek Holt, Colva Roney-Dougal) to have the maximal subgroups of low-dimensional classical groups available in GAP and *Magma*, but for the moment, there is a neat way to have access to these subgroups using the *atlasrep* package (developed by Robert Wilson, Richard Parker, Simon Nickerson, John Bray, Thomas Breuer).

In short, the atlasrep package allows the user to access permutation and matrix representations of almost simple groups that are in the online Atlas of Finite Group Representations. I often need a one-line command to get the maximal subgroups of a group that is in the ‘atlas’, and so I’ve fashioned my own little function, and I thought I should share it:

AtlasMaximalSubgroups := function( name ) local tocs, gapname, numbers, maxs; if AtlasOfGroupRepresentationsInfo.remote = true then tocs := AtlasTableOfContents( "remote" ).TableOfContents; else tocs := AtlasTableOfContents( "local" ).TableOfContents; fi; gapname := First( AtlasOfGroupRepresentationsInfo.GAPnames, pair -> pair[1] = name ); gapname := gapname[2]; numbers := List(tocs!.(gapname)!.maxes, t -> t[2]); maxs := List(numbers, t -> AtlasSubgroup(name, t)); return maxs; end;

To use it, here is an example for PSp(6,2) (which is called “S6(2)” in the ‘atlas’ world), which GAP will struggle to do without using atlasrep:

gap> LoadPackage("atlasrep"); gap> group := AtlasGroup( "S6(2)" ); gap> maximals := AtlasMaximalSubgroups( "S6(2)" ); gap> Index(group, maximals[3]);

For classical groups, one of the best tools is the ClassicalMaximals command in Magma. This allows you to construct the maximal subgroups for each Aschbacher class of classical groups far beyond what appears in the Atlas.