IMPARTIAL AVOIDANCE GAMES FOR GENERATING FINITE GROUPS

by B.J. Benesh, D.C. Ernst, N. Sieben

Companion web site

GAP code (tested using Version 4.7.7)

GAP function to check if all maximal subgroups are even:

allEvenMaximals:=function(G)
return ForAll(MaximalSubgroupClassReps(G),M->(0=Order(M) mod 2));
end;

GAP function to check if the even maximal subgroups cover the group:

evenMaximalsCover:=function(G)
local EE,g,cl;
EE:=Filtered(MaximalSubgroups(G),S -> 0=(Order(S) mod 2));
cl:=List(ConjugacyClasses(G),Representative);
for g in cl do
  if not ForAny(EE,E -> (g in E) ) then
    return false;
  fi;
od;
return true;
end;

GAP function to compute the nim-number of DNG(G):

nim:=function(G)
local F, GF;
if Order(G)=2 then
  return 1;
fi;
if 1=(Order(G) mod 2) then
  return 1;
fi;
if allEvenMaximals(G) then
  return 0;
fi;
F:=FrattiniSubgroup(G);
if 0=(Order(F) mod 2) then
  return 0;
fi;
GF:=FactorGroup(G,F);
if evenMaximalsCover(GF) then
  return 0;
fi;
return 3;
end;

Definitions for the Rubik's cubes:

2cube := Group(
 ( 1, 3, 8, 6)( 9,33,25,17)(11,35,27,19),
 ( 9,11,16,14)( 1,17,41,40)( 6,22,46,35),
 (17,19,24,22)( 6,25,43,16)( 8,30,41,11)
);

3cube := Group(
 ( 1, 3, 8, 6)( 2, 5, 7, 4)( 9,33,25,17)(10,34,26,18)(11,35,27,19),
 ( 9,11,16,14)(10,13,15,12)( 1,17,41,40)( 4,20,44,37)( 6,22,46,35),
 (17,19,24,22)(18,21,23,20)( 6,25,43,16)( 7,28,42,13)( 8,30,41,11),
 (25,27,32,30)(26,29,31,28)( 3,38,43,19)( 5,36,45,21)( 8,33,48,24),
 (33,35,40,38)(34,37,39,36)( 3, 9,46,32)( 2,12,47,29)( 1,14,48,27),
 (41,43,48,46)(42,45,47,44)(14,22,30,38)(15,23,31,39)(16,24,32,40)
);