In GAP let $G_0$ be the Rubik's Cube Group defined by the six moves
U := (1,3,8,6)(2,5,7,4)(9,33,25,17)(10,34,26,18)(11,35,27,19);
L := (9,11,16,14)(10,13,15,12)(1,17,41,40)(4,20,44,37)(6,22,46,35);
F := (17,19,24,22)(18,21,23,20)(6,25,43,16)(7,28,42,13)(8,30,41,11);
R := (25,27,32,30)(26,29,31,28)(3,38,43,19)(5,36,45,21)(8,33,48,24);
B := (33,35,40,38)(34,37,39,36)(3,9,46,32)(2,12,47,29)(1,14,48,27);
D := (41,43,48,46)(42,45,47,44)(14,22,30,38)(15,23,31,39)(16,24,32,40);
G0 := Group([U, L, F, R, B, D]);
Then define the subgroups, see Thistlethwaite's Algorithm
G1 := Subgroup(G0, [L, R, F, B, U^2, D^2]);
G2 := Subgroup(G0, [L, R, F^2, B^2, U^2, D^2]);
G3 := Subgroup(G0, [L^2, R^2, F^2, B^2, U^2, D^2]);
I try to define quotient groups with GAP, but unfortunately I get the following error:
FactorGroup(G2, G3);
Error, <N> must be a normal subgroup of <G> at /proc/cygdrive/C/gap-4.11.0/lib/grp.gi:2569 called from
<function "FactorGroup">( <arguments> )
called from read-eval loop at *stdin*:13
you can 'quit;' to quit to outer loop, or
you can 'return;' to continue
I do not understand this error since
IsNormal(G3, G2);
true
tells me that $G_3$ is indeed normal in $G_2$. What is wrong with my code?
Best Answer
Thistlethwaite's algorithm uses coset spaces, not factor groups. The groups aren't normal. The function is
IsNormal(G, H)
, i.e. the bigger group goes first, but you're plugging in the smaller group first. As GroupProps notes, "Note that if the order of the group and the subgroup are interchanged, GAP will not detect an error and will return true, because any subgroup of a group normalizes the whole group."