I am trying to calculate the number of subgroups of the Weyl group $W(E_N)$ that fix certain vectors $L_i (i = 1,2,3)$ using Magma. However, the output of the following code (especially #nicesubs) differs each time it is executed. Is there something wrong with this code?
(Often the output is 0, and occasionally it is 2 or 3. Sometimes I have seen 19 or 27 as well, and I am unsure which is the correct result or if all of them are incorrect.)
Additionally, for each subgroup $G$ obtained, I want to consider the quotient $G$-module $IN/\left< L_i \right>$ and calculate its cohomology group. However, I encounter errors in this part as well.
When trying to define the group $H$ for each subgroup $G$, I get the following error for some subgroups but not others, and I do not understand why:
Runtime error in MatrixGroup< ... >: Can not build a generator from the arguments given
Even though I am using the same MatrixGroup function, I do not encounter this error when defining $G$, but the error only occurs when defining $H$.
MAGMA CODE:
ZZ := IntegerRing();
I := ScalarMatrix(9, ZZ!1);
IntersectionMatrix := -I;
IntersectionMatrix[1,1] := +1;
WeylGroup := function(N) // N = 1..7
R := [
Transpose(Matrix([[1,-1,-1,-1,0,0,0,0,0]])), // = 3e0 - e1 - e2 - e3
Transpose(Matrix([[0,1,-1,0,0,0,0,0,0]])), // e(i-1) - ei
Transpose(Matrix([[0,0,1,-1,0,0,0,0,0]])),
Transpose(Matrix([[0,0,0,1,-1,0,0,0,0]])),
Transpose(Matrix([[0,0,0,0,1,-1,0,0,0]])),
Transpose(Matrix([[0,0,0,0,0,1,-1,0,0]])),
Transpose(Matrix([[0,0,0,0,0,0,1,-1,0]])),
Transpose(Matrix([[0,0,0,0,0,0,0,1,-1]]))
];
s := [I + R[i]*Transpose(R[i])*IntersectionMatrix: i in [1..#R]];
if N eq 1 then
Gens := [I];
elif N eq 2 then
Gens := [s[2]];
else
Gens := s[[1..N]];
end if;
return MatrixGroup<9, ZZ | Gens>;
end function;
N := 6;
W := WeylGroup(N);
L1 := [2,0,-1,-1,-1,-1,-1,0,0];
L2 := [1,-1,-1,0,0,0,0,0,0];
L3 := [0,0,1,0,0,0,0,0,0];
U := I;
U[2] := Vector(L1);
U[3] := Vector(L2);
U[4] := Vector(L3);
U := Transpose(U);
subs := Subgroups(W);
"# of subgroups of W(E_N) is: ", #subs;
nicesubs := {@ @};
for i in [1..#subs] do;
G := subs[i]`subgroup;
G := MatrixGroup<9, ZZ | [Transpose(gen): gen in Generators(G)]>;
IN := GModule(G);
if #G ne 1 then;
L1 := elt<IN | 2,0,-1,-1,-1,-1,-1,0,0>;
L2 := elt<IN | 1,-1,-1,0,0,0,0,0,0>;
L3 := elt<IN | 0,0,1,0,0,0,0,0,0>;
if #Orbit(G, L1) eq 1 then
if #Orbit(G, L2) eq 1 then
if #Orbit(G, L3) eq 1 then
nicesubs := nicesubs join {@ G @};
end if;
end if;
end if;
end if;
end for;
#nicesubs;
G := nicesubs[1];
t := [Matrix(Transpose(Submatrix(U^(-1)*gen*U, [1,5,6,7,8,9], [1,5,6,7,8,9]))): gen in Generators(G)];
H := MatrixGroup<6, ZZ | t>;
H;
INbyL := GModule(H); // IN / <Li>
CohomologyGroup(CohomologyModule(H,INbyL),1);