GAP Program Efficiency for Number of Orbits

51 Views Asked by At

Let $S$ be a nonabelian finite simple group and $p$ a prime divisor of $|S|$.

I'm interested in finding the number of $\textrm{Aut}(S)$-orbits acting on the set $\textrm{Cl}_{p'}(S)$, the set of all $p$-regular conjugacy classes in $S$. We denote this as $n(\textrm{Aut}(S), \textrm{Cl}_{p'}(S))$.

I have written my own script which seems to be giving me the desired results (I've been testing it against Table 1 found here.) However, when I try to run the script on the entirety of the groups in Table 1, I quite quickly run out of memory.

As I am new to $\texttt{GAP}$ I'm sure my script is rather inefficient and could be improved upon. Any improvements would be appreciated.

################################################################################
#
# P_regl(G, p, a)
#
# Returns list of elements in G with p-regularity level a
#
P_regl := function(G, p, a)
local g, q, S;
    S := [];
    for g in G do
        if Order(g) mod p^a = 0 then
            q := Order(g) / p^a;
            if GCD(q, p) = 1 then
                Add(S, g);
            fi;
        fi;
    od;
    return S;
end;
################################################################################
#
# bound(S, p)
#
# Returns number of Aut(S)-Orbits acting on CL_p'(S)
#
bound := function(S, p);
    return Size(OrbitsDomain(AutomorphismGroup(S), P_regl(S,p,0)));
end;
1

There are 1 best solutions below

1
On BEST ANSWER

These groups get big rather quickly. Enumerating all their elements is not possible then. Instead of working with individual elements, you should work with conjugacy classes of elements, and compute orbits of these. Use ConjugacyClasses(G) to get the classes, use Filtered plus Representative to get the desired classes, and then compute the Aut(S)-orbits on those, via a custom action function

All in all, something like this should give you an idea how to proceed (I was too lazy to filter the classes correctly, but you should be able to easily adapt this to your needs):

gap> S := SimpleGroup("L",2,7);
PSL(2,7)
gap> StringPP(Order(S));
"2^3*3*7"
gap> p:=7;; a:=1;;
gap> cc:=Filtered(ConjugacyClasses(S), c -> Order(Representative(c)) mod p^a = 0);
[ (2,3,5,4,7,8,6)^G, (2,4,6,5,8,3,7)^G ]
gap> OnClasses:={c,g} -> ConjugacyClass(ActingDomain(c),Representative(c)^g);;
gap> OrbitsDomain(AutomorphismGroup(S), cc, OnClasses);
[ [ (2,3,5,4,7,8,6)^G, (2,4,6,5,8,3,7)^G ] ]