If necessary, you can supply GAP with a pc presentation by hand. (Although this is the most tedious way to input a pc group.) Note that the pc presentation has to be confluent in order to work with the pc group in GAP.
One way is to define a finitely presented group with a pc presentation in GAP and then convert this presentation into a pc group. Note that this does not work for arbitrary presentations of polycyclic groups, see Chapter Quotient Methods for further information.
PcGroupFpGroup( G ) F
creates a PcGroup P from an FpGroup (see Chapter Finitely Presented Groups) G whose presentation is polycyclic. The resulting group P has generators corresponding to the generators of G. They are printed in the same way as generators of G, but they lie in a different family. If the pc presentation of G is not confluent, an error message occurs.
gap> F := FreeGroup("a","b","c","d");;
gap> a := F.1;; b := F.2;; c := F.3;; d := F.4;;
gap> rels := [a^2, b^3, c^2, d^2, Comm(b,a)/b, Comm(c,a)/d, Comm(d,a),
> Comm(c,b)/(c*d), Comm(d,b)/c, Comm(d,c)];
[ a^2, b^3, c^2, d^2, b^-1*a^-1*b*a*b^-1, c^-1*a^-1*c*a*d^-1, d^-1*a^-1*d*a,
c^-1*b^-1*c*b*d^-1*c^-1, d^-1*b^-1*d*b*c^-1, d^-1*c^-1*d*c ]
gap> G := F / rels;
<fp group on the generators [a,b,c,d]>
gap> H := PcGroupFpGroup( G );
<pc group of size 24 with 4 generators>
Equivalently to the above method one can initiate a collector of a pc group by hand and use it to define a pc group. In GAP there are different collectors for different collecting strategies; at the moment, there are two collectors to choose from: the single collector for finite pc groups and the combinatorial collector for finite p-groups. See Sims94 for further information on collecting strategies.
A collector is initiated by underlying free group to the pc presented group and the relative orders of the pc series. Then one adds the right hand sides of the power and the commutator or conjugate relations one by one. Note that omitted relators are assumed to be trivial.
SingleCollector( fgrp, relorders )
CombinatorialCollector( fgrp, relorders )
Then the right hand sides of the pc presentation have to be declared. Let f1, ¼, fn be the generators of the underlying free group fgrp.
SetConjugate( coll, i, j, w )
set the conjugate fjfi to equal w where w is a word in fi+1, ¼, fn and i < j.
SetCommutator( coll, i, j, w )
set the commutator of fj and fi to equal w where w is a word in fi+1, ¼, fn and i < j.
SetPower( coll, i, w )
set the power firi to equal w where w is a word in fi+1, ¼, fn.
Finally, the collector has to be converted to a group.
GroupByRws( coll )
GroupByRwsNC( coll )
creates a group from a rewriting system. In the first version it is checked whether the rewriting system is confluent, in the second version this is assumed to be true.
IsConfluent( G )
checks whether the pc group G has been build from a collector with a confluent power-commutator presentation.
gap> F := FreeGroup( 2 );; gap> coll1 := SingleCollector( F, [2,3] ); <<single collector, 8 Bits>> gap> SetConjugate( coll1, 2, 1, F.2 ); gap> SetPower( coll1, 1, F.2 ); gap> G1 := GroupByRws( coll1 ); <pc group of size 6 with 2 generators> gap> IsConfluent(G1); true gap> IsAbelian(G1); true gap> coll2 := SingleCollector( F, [2,3] ); <<single collector, 8 Bits>> gap> SetConjugate( coll2, 2, 1, F.2^2 ); gap> G2 := GroupByRws( coll2 ); <pc group of size 6 with 2 generators> gap> IsAbelian(G2); false
With the above methods a pc group with arbitrary defining pcgs can be constructed. However, for almost all applications within GAP we need to have a pc group whose defining pcgs is a prime order pcgs. Hence the following functions are useful.
IsomorphismRefinedPcGroup( G ) A
returns an isomorphism from G onto an isomorphic PC group whose family pcgs is a prime order pcgs.
RefinedPcGroup( G ) A
returns the range of IsomorphismRefinedPcGroup(G).
[Top] [Previous] [Up] [Next] [Index]
GAP 4 manual