[GAP Forum] Extra-special group acting on an elementary abelian group

Goodson, Joshua E jg1356 at txstate.edu
Tue Feb 28 04:57:04 GMT 2012


Dear  Dr. Frank Lübeck, dear forum,

Thank you for your time and your help.  Your suggestions and code helped immensely.

Sincerely,

Joshua Goodson
________________________________________
From: Frank Lübeck [frank.luebeck at math.rwth-aachen.de]
Sent: Saturday, February 25, 2012 6:40 AM
To: Goodson, Joshua E
Cc: forum at mail.gap-system.org
Subject: Re: [GAP Forum] Extra-special group acting on an elementary    abelian group

On Fri, Feb 24, 2012 at 04:39:04PM -0600, Goodson, Joshua E wrote:
> Dear Forum,
>
> I wanted to thank everyone for there wonderful suggestions.  I am afraid I forgot to mention
> that when I count the orbits I also wish to count the orbits of any particular size.  For example,
> I would want to count the number of regular orbits.  My apologies for not mentioning that before.
> Will these methods allow me to count orbits of any size.
>
> Thank you and again I apologize for my lack of specificity.
>
> ~Joshua Goodson

Dear Joshua Goodson, dear Forum,

Finding the multiplicities of the orbit lengths seems much more difficult.

But your particular example is not so big, the vector space GF(7)^9 has
only about 40 million vectors. Below I append some lines to the code from
my last mail that computes what you want in a few minutes while GAPs memory
consumption stays small. Use GAP's help system to understand what the code
does.

Note that the code from my last mail to find the total number of orbits
using the character table also works for considerably larger groups and
vector spaces (which is not true for the new code below).

With best regards,
   Frank Lübeck

# we already had this part to find the total  number of orbits:
g := ExtraspecialGroup(3^5,'+');
r := IrreducibleRepresentations(g,GF(7));;
List(r, h-> DimensionOfMatrixGroup(Image(h)));
g1 := Image(r[1]);
one := One(g1);
numorbs := 1/Size(g1) * Sum(ConjugacyClasses(g1), c-> Size(c) *
                                 7^(9-RankMat(Representative(c)-one)));

# now we find the orbits with explicit enumeration, but with some bookkeeping
# such that we never have more than about |g| vectors in memory
vsp := GF(7)^9;
enum := Enumerator(vsp);
found := BlistList([1..Size(vsp)], []);;
sizes := 0*[1..Size(g1)];;
for i in [1..Size(vsp)] do
  if not found[i] then
    orb := Orbit(g1, enum[i]);
    for v in orb do
      found[NumberFFVector(v,7)+1] := true;
    od;
    sizes[Length(orb)] := sizes[Length(orb)] + 1;
  fi;
  # show progress and stop when numorb orbits were found
  if i mod 100000 = 0 then
    if Sum(sizes) = numorbs then break; fi;
    Print(i/100000, " (",Sum(sizes),") \c");
  fi;
od;
# result, numbers of orbits of size 1, 3, 9, 27, 81, 243
sizes{List([0..5],i->3^i)};

##  PS: The result is
##  '+' case: [ 1, 0, 0, 80, 400, 165922 ]
##  '-' case: [ 1, 0, 0,  8, 154, 166012 ]

--
///  Dr. Frank Lübeck, Lehrstuhl D für Mathematik, Templergraben 64,  ///
\\\                    52062 Aachen, Germany                          \\\
///  E-mail: Frank.Luebeck at Math.RWTH-Aachen.De                        ///
\\\  WWW:    http://www.math.rwth-aachen.de/~Frank.Luebeck/           \\\



More information about the Forum mailing list