> < ^ Date: Thu, 16 Jan 1997 23:58:09 -0800
> < ^ From: Paul R. Brown <pbrown@math.berkeley.edu >
> ^ Subject: An AgGroup question

Is there a limit on the orders of elements in an AgGroup?

The motivation for the question and my own attempts to answer the
question follow:

Let $p$ and $q$ be odd primes such that $q$ is 1 mod $2p$. Let $n$ be a
primitive $p^{\text{th}}$ root of unity modulo $q$, and form the
semidirect product $G(p,q)$ with kernel of order $q$ and quotient of
order $p$ where the action of the quotient on the kernel is defined by
the root of unity selected.

For large $q$ (on the order of $10^7$, I would like to use an AgGroup to
represent this group, as it would otherwise require either an automaton
(via Derek Holt's kbmag) for an economical normal form or a tremendous
amount of storage because of the length of a permutation representing an
element of order $q$. So, I try the following:

gap> IsPrime(3) and IsPrime(53269) and Mod(5427^3,53269)=1;
true
gap> F:=FreeGroup(2);
Group( f.1, f.2 )
gap> G:=F / [F.1^3,F.2^53269,(F.2^F.1)*(F.2)^-5427];
Group( f.1, f.2 )
gap> InfoAgGroup1:=Print;
function (...) internal; end
gap> InfoAgGroup2:=Print;
function (...) internal; end
gap> G1:=AgGroupFpGroup(G);
#W  AgGroupFpGroup: composite index, use 'RefinedAgSeries'

Now, this seems rather strange, so let's see what's up:

gap> AgGroupOps.FpGroup(G1);
Group( f.1, f.2 )
gap> PresentationFpGroup(last);
<< presentation with 2 gens and 3 rels of total length 17700 >>
gap> TzPrintPresentation(last);
#I  generators:
#I  1.  f.1   5 occurrences
#I  2.  f.2   17695 occurrences
#I  relators:
#I  1. f.1^3
#I  2. f.2^-1*f.1^-1*f.2*f.1*f.2^-5426
#I  3. f.2^12267
#I  there are 2 generators and 3 relators of total length 17700
gap> IsPrime(12267);
false

The order of the second generator gets changed somehow, so let's go and
root out the offending code:

# Check if the indices are primes.
if ForAny( G.generators, x->not IsPrimeInt(RelativeOrderAgWord(x))) then
Print("#W AgGroupFpGroup: composite index, use 'RefinedAgSeries'\n");
fi;

which, after a

grep RelativeOrderAgWord /usr/local/gap3r4p3/lib/* | less

shows that the command is defined in the kernel somewhere, so we go poke
around in aggroup.c:

*V HdRnRelativeOrder . . . . . . . . . . . . 'RelativeOrder' record name bag
*V HdCallSumAgWord . . . . . . . . . . . . . . . . . call to record function
*F FunRelativeOrderAgWord( <hdCall> ) . . . internal 'RelativeOrderAgWord'..

Long story short, it boils down to INT_TO_HD, which, via integer.c and
integer.h, claims to have no problems with integers between $\pm 2^{28} -1$.

So I'm stumped. The system is a fully-patched GAP 3r4p3 running on a P5
under Linux; I have the same problems on a NeXTstation and on a
SparcServer 1000.

Any assistance would be greatly appreciated.

Paul Brown


> < [top]