3
$\begingroup$

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);
$\endgroup$

1 Answer 1

5
$\begingroup$

The Magma command Subgroups returns representatives of the conjugacy classes of subgroups of the group, and since the algorithm involves some random choices in various places, it does not return the same representatives with each call. That explains why you are getting different numbers of nicesubs each time.

There is a command AllSubgroups, which (as you might expect) returns all subgroups, just as subgroups, not as records. There are $350$ conjugacy classes of subgroups, and $203639$ subgroups in total. When I ran your code with all subgroups, I found $604$ nice subgroups.

The reason for the error in defining some of the subgroups $H$ is that one of the generators you are constructing for $H$ is not invertible. I don't know why that is.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .