# Modular subgroup lattice in GAP

I want to know if one can ask GAP to decide whether the subgroup lattice of a specific finite group $G$ is modular, via a simple command.

Many thanks.

Update: relevant questions have been addressed by Ballester-Bolinches, Cosme-Llópez, and Esteban-Romero here. They developed a GAP package PERMUT, which is now redistributed with GAP as an accepted package (the package refereeing system for GAP packages is described here). The manual for the PERMUT package is also included in the distribution, or may be found online here.

• It may be worth to try to ask this in the GAP Forum Apr 20, 2013 at 18:15

Thank you, it's an interesting question. I am not aware of such functionality available anywhere, but looking at the literature (see references in the comments in the GAP code below), it seems that there may be at least three possible approaches:

1) Calculate the lattice of subgroups and check that it does not contain a sublattice isomorphic to the "pentagon" lattice.

2) Since groups with modular subgroup lattice (also called M-groups) are classified, one can try to implement known criteria for a finite group to be an M-group.

3) Straightforward calculation of subgroups of the group and then checking that the modular law holds.

I've implemented (3) in GAP as follows:

IsMGroup:=function(G)
#
# References:
# 1) R. Schmidt, Subgroup lattices of groups. Expositions in Mathematics, 14.
#    Walter de Gruyter, Berlin, 1994.
# 2) P.P. Pálfy, Groups and lattices. Groups St. Andrews 2001 in Oxford.
#    Vol. II, 428–454, London Math. Soc. Lecture Note Ser., 305, Cambridge
#    Univ. Press, Cambridge, 2003.
# 3) A. Ballester-Bolinches, R. Esteban-Romero, M. Asaad, Products of finite
#    groups. Expositions in Mathematics, 53. Walter de Gruyter, Berlin, 2010.
#
local ccg, ccz, cg, cz, x, y, z, c;
# Easy cases first
# Abelian groups are M-groups
if IsAbelian(G) then
return true;
fi;
# Every finite M-group is metabelian
if not IsAbelian( DerivedSubgroup(G) ) then
return false;
fi;
# Now do some work
ccg:=ConjugacyClassesSubgroups(G);
# The lattice of normal subgroups is modular. Since we already
# know conjugacy classes, let's check if this may be the case.
if ForAll(ccg, c -> Size(c)=1) then
return true;
fi;
#
# Check the modular law: x<=z => x v ( y ^ z ) = (x v y) ^ z
#
for cg in ccg do
# z runs over representatives of conjugacy classes of subgroups G
z:=Representative(cg);
if Size(z)<>1 and Size(z)<>Size(G) then
ccz:=ConjugacyClassesSubgroups(z);
for cz in ccz do
# x runs over representatives of conjugacy classes of subgroups of z
x:=Representative(cz);
if Size(x) <> 1 then
for cg in ccg do
# y runs over all subgroups of G
for y in cg do
if Size(y) <> 1 then
if not ClosureGroup(x,Intersection(y,z)) =
Intersection(ClosureGroup(x,y),z) then
return false;
fi;
fi;
od;
od;
fi;
od;
fi;
od;
return true;
end;


For example, using this function we may find that there are 11 M-groups of order 32:

gap> l:=AllSmallGroups(Size,32,IsMGroup,true);;time;Length(l);
40420
11


For larger groups it may take a while to perform the check, especially if the group is an M-group. To avoid spending more time on repetitive checks of the same group, one can declare a property IsMGroup and then install the function above as a method for that property. For further instructions, enter ?DeclareProperty and ?InstallMethod in GAP, and also the chapter "Examples of Extending the System" from the GAP reference manual (enter ?Adding new concepts to see the particularly relevant manual section which, by coincidence, also adds a property "IsMGroup", but for another notion).

• As you suggested, I sent my new question to GAP forum. May 30, 2013 at 13:23
• @BabakS.: Glad that it helped to get it answered. May 30, 2013 at 15:33
• May I ask you to have your point of view(s) about my question or its elegant answer. Please, forgive me for this impolitely wish. Thanks. May 31, 2013 at 7:21
• @BabakS. I don't believe it is appropriate to ask in the comments about answers to questions on another forum. It appears that Alexander Konovalov is quite active on the GAP forum, and any comments he has about your question/its answer should probably be made there. May 31, 2013 at 8:57
• @ArthurFischer: Thanks. I did what you remarked me at GAP forum yesterday. Thanks for your consideration. :-) May 31, 2013 at 9:05