On the one hand, the chapter "Polycyclic Groups" in the GAP Reference Manual defines a pc series as a subnormal series with cyclic factors (not necessarily a composition series) of a finite polycyclic group, and consequently a pcgs need not have prime relative orders -- the property IsPrimeOrdersPcgs is intended to express this additional property.
On the other hand, one runs into problems when one tries to create a pcgs that actually has non-prime relative orders.
gap> fam:= FamilyObj( (1, 2) );; # the family of permutations
gap> pcgs:= PcgsByPcSequence( fam, [ (1, 2, 3, 4) ] );
Pcgs([ (1,2,3,4) ])
gap> HasRelativeOrders( pcgs );
true
gap> RelativeOrders( pcgs );
[ 2 ]
gap> PcSeries( pcgs );
[ Group([ (1,2,3,4) ]), Group(()) ]
gap> gg:= GroupOfPcgs( pcgs );
Group([ (1,2,3,4) ])
gap> Size( gg );
4
The same example with pc group elements:
gap> g:= CyclicGroup( 4 );
<pc group of size 4 with 2 generators>
gap> fam:= ElementsFamily( FamilyObj( g ) );;
gap> pcgs:= PcgsByPcSequence( fam, [ g.1 ] );
Pcgs([ f1 ])
gap> HasRelativeOrders( pcgs );
true
gap> RelativeOrders( pcgs );
[ 2 ]
gap> PcSeries( pcgs );
[ <pc group with 1 generator>, Group([ ]) ]
gap> gg:= GroupOfPcgs( pcgs );
<pc group with 1 generator>
gap> Size( gg );
2
gap> Order( gg.1 );
4
Note that there is a method for RelativeOrders that would compute the correct value, but the wrong attribute value gets set already in the PcgsByPcSequenceNC methods in question.
It looks as if nobody has ever tried to use pcgs in the general (non-prime) setup.
Should we perhaps just make the definition more restrictive, and add checks to the functions that create pcgs?
Where would the currently promised more general setup be useful?
IsPrimeOrdersPcgs is actually used in quite a few places in the GAP library, in particular as a condition in the method selection.
On the one hand, the chapter "Polycyclic Groups" in the GAP Reference Manual defines a pc series as a subnormal series with cyclic factors (not necessarily a composition series) of a finite polycyclic group, and consequently a pcgs need not have prime relative orders -- the property
IsPrimeOrdersPcgsis intended to express this additional property.On the other hand, one runs into problems when one tries to create a pcgs that actually has non-prime relative orders.
The same example with pc group elements:
Note that there is a method for
RelativeOrdersthat would compute the correct value, but the wrong attribute value gets set already in thePcgsByPcSequenceNCmethods in question.It looks as if nobody has ever tried to use pcgs in the general (non-prime) setup.
Should we perhaps just make the definition more restrictive, and add checks to the functions that create pcgs?
Where would the currently promised more general setup be useful?
IsPrimeOrdersPcgsis actually used in quite a few places in the GAP library, in particular as a condition in the method selection.