[GAP Forum] How to find consistent polycyclic presentation

Petr Savicky savicky at cs.cas.cz
Wed Aug 26 09:51:50 BST 2015


On Wed, Aug 26, 2015 at 12:07:45PM +0530, Vipul Kakkar wrote:
> Dear Members
> 
> How can I find consistent polycyclic presentation form
> (1) the group that I chose from GAP library and
> (2) the group that I define by FreeGroup/Relation.
> 
> For example, how to find consistent polycyclic presentation
> 
> for g:=SmallGroup(81,5); and
> 
> for f:=FreeGroup(2); g:=f/[f.1^4, f.2^2, (f.1*f.2)^2];

Dear Vipul Kakkar:

The former group is a pc group:

  g:=SmallGroup(81,5);
  <pc group of size 81 with 4 generators>

which means that it is already represented using its polycyclic presentation:

  http://www.gap-system.org/Manuals/doc/ref/chap46.html#X7EAD57C97EBF7E67

The latter group can be transformed to this form as follows

  f:=FreeGroup(2); g:=f/[f.1^4, f.2^2, (f.1*f.2)^2];
  hom := IsomorphismPcGroup(g);
  gAsPc := Image(hom, g);  # Group([ f1, f2 ])
  IsPcGroup(gAsPc); # true

This is sufficient for computations with the groups. If you want to display
the defining relations and the group is finite with a small number of the
generators, then the following can be used

  printPcGroup := function(G)
      local f, i, j, k;
      f := Pcgs(G);
      Print(f, "\n");
      Print(RelativeOrders(f), "\n");
      Print("\n");
      for i in [ 1..Length(f) ] do
          k := RelativeOrderOfPcElement(f, f[i]);
          Print("generator ", f[i], "\n");
          Print(f[i], "^", k, " = ", f[i]^k, "\n");
          for j in [ (i+1)..Length(f) ] do
              Print(f[j], "^", f[i], " = ", f[j]^f[i], "\n");
          od;
          Print("\n");
      od;
  end;

For the latter group, this yields

  printPcGroup(gAsPc);

  Pcgs([ f1, f2, f3 ])
  [ 2, 2, 2 ]
  
  generator f1
  f1^2 = f3
  f2^f1 = f2*f3
  f3^f1 = f3
  
  generator f2
  f2^2 = <identity> of ...
  f3^f2 = f3
  
  generator f3
  f3^2 = <identity> of ...

Best regards,
Petr Savicky.




More information about the Forum mailing list