GAP: Rubik’s Cube Group – Thistlethwaite’s algorithm

algorithmsgapgroup-theoryrubiks-cube

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."

Related Question