> < ^ From:

> ^ Subject:

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]