Necesito los tamaños de las clases de conjugación del grupo lineal especial proyectivo PSL(6,7). No he podido encontrarlo usando GAP. ¿Podría alguien encontrarlo?
Respuestas
¿Demasiados anuncios?Existe una función GAP NrConjugacyClassesPSL
que devuelve el número de clases en poco tiempo. Para los representantes de las clases reales, no conozco una función especial para PSL, pero hay una (basada en polinomios y formas normales) para SL. Así que el mejor enfoque es probablemente para piggy-back en este. Adaptando el código, lo más probable es que se puedan escribir los representantes de las clases directamente para la imagen proyectiva, el siguiente enfoque es una versión pobre que simplemente toma las clases de SL, mapea los representantes en la imagen proyectiva y comprueba la conjugación (con alguna contabilidad mínima por los tamaños de las clases y las preimágenes y la posible fusión de las clases, utilizando la teoría de las formas normales). Si $SL\cong PSL$ Por supuesto, no es necesario que se produzca ninguna fusión. Esto se implementa mediante la siguiente función (versión 2 muy mejorada):
ClassesProjectiveImage:=function(G)
local dom,act,PG,cl,c,i,r,s,sel,p,z,a,x,prop,fus,f,reps,repi,repo,zel,fcl,
real,goal,good,e;
# elementary divisors for GL-class identification
x:=X(DefaultFieldOfMatrixGroup(G),1);
prop:=y->Set(Filtered(ElementaryDivisorsMat(y-x*y^0),
y->DegreeOfUnivariateLaurentPolynomial(y)>0));
# compute real fusion
real:=function(set)
local new,i,a,b;
new:=[];
for i in set do
if i in set then # might have been removed by now
b:=ConjugacyClass(PG,repi[i]);
a:=Filtered(set,x->x<>i and repi[x] in b);
a:=Union(a,[i]);
fcl[a[1]]:=b;
Add(new,a);
set:=Difference(set,a);
fi;
od;
return new;
end;
dom:=NormedVectors(DefaultFieldOfMatrixGroup(G)^Length(One(G)));
act:=ActionHomomorphism(G,dom,OnLines,"surjective");
PG:=Image(act); # this will be PSL etc.
StabChainMutable(PG);; # needed anyhow and will speed up images under act
z:=Size(Centre(G));
zel:=Filtered(Elements(Centre(G)),x->Order(x)>1);
cl:=ConjugacyClasses(G);
if IsNaturalGL(G) then
goal:=NrConjugacyClassesPGL(Length(One(G)),
Size(DefaultFieldOfMatrixGroup(G)));
elif IsNaturalSL(G) then
goal:=NrConjugacyClassesPSL(Length(One(G)),
Size(DefaultFieldOfMatrixGroup(G)));
else
goal:=Length(cl); # this is too loose, but upper limit
fi;
s:=[]; # count how much of pre-images we still need to account for
sel:=[];
reps:=List(cl,Representative);
repi:=List(reps,x->ImagesRepresentative(act,x));
repo:=List(repi,Order);
e:=List(reps,prop);
sel:=[1..Length(cl)];
fcl:=[]; # cached factor group classes
if z=1 then
fus:=List(sel,x->[x]);
else
# fuse maximally under centre multiplication
fus:=[];
while Length(sel)>0 do
a:=sel[1]; sel:=sel{[2..Length(sel)]};
p:=Union(e{[a]},List(zel,x->prop(reps[a]*x)));
f:=Filtered(sel,x->e[x] in p and repo[a]=repo[x]);
sel:=Difference(sel,f);
AddSet(f,a);
Add(fus,f);
od;
# separate those that clearly cannot fuse fully
good:=[];
for i in Filtered(fus,x->Length(x)>z or z mod Length(x)<>0) do
a:=real(i);
fus:=Union(Filtered(fus,x->x<>i),a);
good:=Union(good,a); # record that we properly tested
od;
# now go through and test properly and fuse, unless we reached the
# proper class number
for i in fus do
if not i in good and Length(fus)<goal then
# fusion could split up -- test
a:=real(i);
fus:=Union(Filtered(fus,x->x<>i),a);
fi;
od;
fi;
# now fusion is good -- form classes
c:=[];
for i in fus do
if IsBound(fcl[i[1]]) then
a:=fcl[i[1]];
else
a:=ConjugacyClass(PG,repi[i[1]]);
fi;
Add(c,a);
f:=Sum(cl{i},Size)/z;
SetSize(a,f);
od;
SetConjugacyClasses(PG,c);
return [act,PG,c];
end;
Para utilizarlo, hay que llamar a ClassesProjectiveImage(SL(dim,field));;
y se obtiene como resultado una lista de longitud 3, [action homomorphism SL->PSL, PSL, class list]
.
Encuentra las 3324 clases de PSL(6,7) y sus tamaños (pero sólo eso, no los generadores reales de los centralizadores) en unos 30 minutos en mi ordenador.
El tiempo de ejecución del cálculo directo de las clases de conjugación de PSL(n,7) utilizando ConjugacyClasses
parece depender de $n$ de forma exponencial. Aquí hay algunos valores iniciales y tiempos de ejecución:
\begin {Ecuación} \begin {array}{l|lllll} n & |G| & Nr.classes & Runtime \\ \hline 2 & 168 & 6 & \lt 0,01s \\ 3 & 1876896 & 22 & 0,5s \\ 4 & 2317591180800 & 217 & 37s \\ 5 & 187035198320488089600 & 2792 & 644m \\ 6 & 61637759336805268655956377600 & 3324 & ? \end {array} \end {Ecuación}
Para $n=6$ si fuera, por ejemplo $1000$ veces más largo que $n=5$ En este caso, ya se tardaría más de un año, por lo que habría que emplear un enfoque mejor: véase la respuesta de Alexander, que tarda sólo media hora.
Observación: Tenga en cuenta que para los grupos cuya tabla de caracteres está disponible en la biblioteca de tablas de caracteres de GAP, existe otra forma de obtener dicha información sin necesidad de realizar cálculos: consulte mi respuesta a la pregunta "el número de todos los órdenes de elementos en HS (grupo Higman-Sims) con GAP" .
Observación 2: Para los grupos clásicos, existen funciones NrConjugacyClassesName
donde Name
es uno de $GU$ , $SL$ , $SU$ , $PGL$ , $PGU$ , $PSL$ , $PSU$ etc. utilizando las fórmulas para el número de clases de conjugación de Macdonald, I. G., Numbers of conjugacy classes in some finite classical groups, Bull. Austral. Math. Soc., 23 (1) (1981), 23-48 - ver Clases de conjugación en grupos clásicos del manual GAP.