Rebecca Waldecker

Checking specific groups for low fixity actions

This needs the TomLib package.

Checking a specific group for fixity k actions.
If k is a natural number and G is a group, then we can write a function that uses the table of marks of G in order to check for possible G-actions with fixity k, which means that the maximal number of fixed points of non-trivialelements of G is k. In the low fixity project, we consider fixity 2,3 and 4, which is why we show an example for a function for fixity 2 that only takes the group as input. This is done by the GAP function fixity2, and we remark that the set that G acts on will have size at least 4. This function, and the corresponding one for fixity 3, has been used in the published work with Kay Magaard from 2015.

fixity2:=function(g)
local O,tom,list, list1,list2,list3;
tom:=TableOfMarks(g);
list:=MarksTom(tom);
O:=list[1][1];
list1:=Filtered(list{[2..Length(list)-1]},x-> Maximum(x{[2..Length(x)]}) = 2);
list2:=Filtered(list1,x ->x[1]>3);
list3:=List(list2,x->O/x[1]);
return [g,Length(list3),list3];
end;


The output is a list with the inserted group, the number of examples that were found and for each example the order of the point stabilisers.



Here is an example:

gap> fixity2(AlternatingGroup(6));
[ Alt( [ 1 .. 6 ] ), 3, [ 4, 5, 36 ] ]





The same idea works for fixity 3 and 4, so for specific groups it is easy to find out all examples of low fixity actions as long as the table of marks is available in GAP.

Using two parameters, namely the group G and the fixity k, it looks like this:

fixity:=function(g,k)
local O,tom,list, list1,list2,list3;
tom:=TableOfMarks(g);
list:=MarksTom(tom);
O:=list[1][1];
list1:=Filtered(list{[2..Length(list)-1]},x-> Maximum(x{[2..Length(x)]}) = k);
list2:=Filtered(list1,x ->x[1]>k+1);
list3:=List(list2,x->O/x[1]);
return [g,k,Length(list3),list3];
end;




And lots of examples...

gap> fixity(AlternatingGroup(6),2);
[ Alt( [ 1 .. 6 ] ), 2, 3, [ 4, 5, 36 ] ]
gap> fixity(AlternatingGroup(6),3);
[ Alt( [ 1 .. 6 ] ), 3, 4, [ 24, 24, 60, 60 ] ]
gap> fixity(AlternatingGroup(6),4);
[ Alt( [ 1 .. 6 ] ), 4, 6, [ 2, 6, 6, 9, 10, 18 ] ]
gap> fixity(AlternatingGroup(7),2);
[ Alt( [ 1 .. 7 ] ), 2, 0, [ ] ]
gap> fixity(MathieuGroup(11),2);
[ Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)(4,10,5,6) ]), 2, 0, [ ] ]
gap> fixity(MathieuGroup(11),3);
[ Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)(4,10,5,6) ]), 3, 1, [ 720 ] ]
gap> fixity(MathieuGroup(11),4);
[ Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)(4,10,5,6) ]), 4, 3, [ 5, 55, 660 ] ]




Patrick Salfeld wrote an alternative function for fixity 4 for his PhD thesis, called TestTomF4. The input is the table of marks of a group.

TestTomF4:=function(tom)
local marks, g, fin;
marks := MarksTom(tom);;
fin := [ ];;
for g in [1..Length(marks)] do
if Set( [ 2 .. Length( marks[g] ) ], i -> marks[g][i] < 5 ) = [ true ] and ( 4 in marks[g] )
then Add( fin, [ g, StructureDescription( RepresentativeTom( tom, g) ), marks[g][1]] );
fi;
od;
return fin;
end;


The output is a list, where each entry is of the form [line number in tom, structure of point stabilisers, orbit length].



Three examples for illustration:

gap> tom:=TableOfMarks(AlternatingGroup(7));
TableOfMarks( Alt( [ 1 .. 7 ] ) )
gap> TestTomF4(tom);
[ [ 8, "C5", 504 ], [ 39, "A6", 7 ] ]
gap> tom:=TableOfMarks(AlternatingGroup(8));
TableOfMarks( Alt( [ 1 .. 8 ] ) )
gap> TestTomF4(tom);
[ ]
gap> tom:=TableOfMarks(PSL(2,7));
TableOfMarks( Group([ (3,7,5)(4,8,6), (1,2,6)(3,4,8) ]) )
gap> TestTomF4(tom);
[ [ 2, "C2", 84 ], [ 7, "S3", 28 ] ]