Difference between revisions of "ApCoCoA-1:Symbolic data Computations"

From ApCoCoAWiki
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
=== Computation Examples for [[:ApCoCoA:Symbolic data|Non-abelian Groups]] ===
+
=== Computation of [[:ApCoCoA:Symbolic data|Non-abelian Groups]] ===
  
==== <div id="Baumslag_groups">Computations of Baumslag groups</div> ====
+
==== <div id="Baumslag_groups">[[:ApCoCoA:Symbolic data#Baumslag_groups|Baumslag groups]]</div> ====
 +
Baumslag-Solitar groups have the following presentation.
 +
BS(m,n)<a, b | ba^{m} = a^{n}b> where m, n are natural numbers
 +
XML data:
 +
<vars>a[1],a[2],b[1],b[2]</vars>
 +
<params>m,n</params>
 +
<rels>
 +
  <ncpoly>a[1]*a[2]-1</ncpoly>
 +
  <ncpoly>a[2]*a[1]-1</ncpoly>
 +
  <ncpoly>b[1]*b[2]-1</ncpoly>
 +
  <ncpoly>b[2]*b[1]-1</ncpoly>
 +
  <ncpoly>b[1]*a[1]^{m}-a[1]^{n}*b[1]</ncpoly>
 +
</rels>
 +
We enumerate partial Groebner bases for the Baumslag-Solitar groups as follows.
 +
/*Use the ApCoCoA package ncpoly.*/
 +
Use ZZ/(2)[a[1..2],b[1..2]];
 +
NC.SetOrdering("LLEX");
 +
A1:=[[a[1],a[2]],[1]];
 +
A2:=[[a[2],a[1]],[1]];
 +
B1:=[[b[1],b[2]],[1]];
 +
B2:=[[b[2],b[1]],[1]];
 +
-- Relation ba^2=a^3b. Change 2 and 3 in "()" to make another relation
 +
R:=[[b[1],a[1]^(2)],[a[1]^(3),b[1]]];
 +
G:=[A1,A2,B1,B2,R];
 +
-- Enumerate a partial Groebner basis (see NC.GB for more details)
 +
NC.GB(G,31,1,100,1000);
  
The Baumslag (respectively Baumslag-Solitar) groups are examples of two-generator one-relator groups.
+
/*Use the ApCoCoA package gbmr.*/
The first variante of this group has the presentation <a, b | a^m = b^n = 1 > for m, n natural numbers.
+
-- See NCo.BGB for more details on the parameters DB, LB and OFlag.
Type Baumslag1(m, n, [DegreeBound, LoopBound]) to calculate the Gröbner base.
+
Define BS(M,N,DB,LB,OFlag)
The second variante of this group (the Baumslag-Solitar group) has the presentation <a, b | b*a^m = a^n*b> for m, n natural numbers.
+
  $apcocoa/gbmr.SetX("aAbB");
Type Baumslag2(m, n, [DegreeBound, LoopBound]) to calculate the Gröbner base.
+
  $apcocoa/gbmr.SetOrdering("LLEX");
 
+
   G:= [["aA",""],["Aa",""],["bB",""],["bB",""]];
Baumslag1(m, n, [DegreeBound, LoopBound]) (optional parameters in "[ ]")
+
   BA:= "b";
 
+
   AB:= "b";
Baumslag group with the following presentation < a, b | a^m = b^n = 1 >
 
 
Define Baumslag1(...)
 
  If Not Len(ARGV) = 2 And Not Len(ARGV) = 4 Then
 
    Error("Error in Baumslag1(...). There have to be two argument (n and m for exponents)
 
      or four arguments (n, m, degree, loops)");
 
   EndIf;
 
  For I:= 1 To Len(ARGV) Do
 
    If Not Type(ARGV[I]) = INT Then
 
      Error("Error in Baumslag1(...). The Type of the Arguments must be INT");
 
    ElIf ARGV[I] < 1 Then
 
      Error("Error in Baumslag1(...). The integer arguments must be positive");
 
    EndIf;
 
  EndFor;
 
  X:= "ab";
 
  Ordering:= "LLEX";
 
  R:= [];
 
   AM:= "";
 
   BN:= "";
 
 
   For I:= 1 To ARGV[1] Do
 
   For I:= 1 To ARGV[1] Do
     AM:= AM + "a";  
+
     BA:= BA + "a";  
 
   EndFor;
 
   EndFor;
 
   For I:= 1 To ARGV[2] Do
 
   For I:= 1 To ARGV[2] Do
     BN:= BN + "b";  
+
     AB:= "a" + Ab;  
 
   EndFor;
 
   EndFor;
   F:= [[[1, AM], [-1, ""]], [[1, BN], [-1, ""]]];
+
   Append(G,[BA,AB]);
  If Len(ARGV) = 1 Then
+
   Return $apcocoa/gbmr.BGB(G,DB,LB,OFlag);
    S:= $apcocoa/gbmr.MRBP(X, Ordering, R, F);
 
   Else
 
    S:= $apcocoa/gbmr.MRBP(X, Ordering, R, F, ARGV[2], ARGV[3], 1);
 
  EndIf;
 
Return S;
 
 
  EndDefine;
 
  EndDefine;
  
  
Baumslag2(m, n, [DegreeBound, LoopBound]) (optional parameters in "[ ]")
+
==== <div id="Dicyclic_groups">[[:ApCoCoA:Symbolic data#Dicyclic_groups|Dicyclic groups]]</div> ====
 +
Dicyclic groups have the following presentation.
 +
Dic(n) = <a,b | a^{2n} = 1, a^{n} = b^{2}, bab^{-1} = a^{-1}>
 +
XML data:
 +
<vars>a,b[1],b[2]</vars>
 +
<params>n</params>
 +
<rels>
 +
  <ncpoly>a^{2n}-1</ncpoly>
 +
  <ncpoly>b[1]*b[2]-1</ncpoly>
 +
  <ncpoly>b[2]*b[1]-1</ncpoly>
 +
  <ncpoly>a^{n}-b[1]*b[1]</ncpoly>
 +
  <ncpoly>b[1]*a*b[2]-a^{2n-1}</ncpoly>
 +
</rels>
 +
 
  
Baumslag-Solitar group with the following presentation < a, b | b * a^m = a^n * b >  
+
==== <div id="Dihedral_groups">[[:ApCoCoA:Symbolic data#Dihedral_groups|Dihedral groups]]</div> ====
 +
Dihedral groups have the following presentation.
 +
Dih(n) = <r,s | r^{n} = s^{2} = (rs)^{2} = 1>
 +
XML data:
 +
<vars>r,s</vars>
 +
<params>n</params>
 +
<rels>
 +
  <ncpoly>r^{n}-1</ncpoly>
 +
  <ncpoly>s*s-1</ncpoly>
 +
  <ncpoly>r*s*r*s-1</ncpoly>
 +
</rels>  
  
Define Baumslag2(...)
+
 
  If Not Len(ARGV) = 2 And Not Len(ARGV) = 4 Then
+
==== <div id="vonDyck_groups">[[:ApCoCoA:Symbolic data#vonDyck_groups|von Dyck groups]]</div> ====
    Error("Error in Baumslag1(...). There have to be two argument (n and m for exponents) or four arguments (n, m, degree, loops)");
+
Von Dyck groups have the following presentation.
   EndIf;
+
D(l,m,n) = <x,y | x^{l} = y^{m} = (xy)^{n} = 1>
   For I:= 1 To Len(ARGV) Do
+
XML data:
    If Not Type(ARGV[I]) = INT Then
+
<vars>x,y</vars>
      Error("Error in Baumslag1(...). The Type of the Arguments must be INT");
+
<params>l,m,n</params>
    ElIf ARGV[I] < 1 Then
+
<rels>
      Error("Error in Baumslag1(...). The integer arguments must be positive");
+
   <ncpoly>x^{l}-1</ncpoly>
    EndIf;
+
   <ncpoly>y^{m}-1</ncpoly>
   EndFor;
+
  <ncpoly>(x*y)^{n}-1</ncpoly>
   X:= "abcdABCD";
+
</rels>
   Ordering:= "LLEX";
+
 
   R:= [];
+
 
   AM:= "";
+
==== <div id="Higman_group">[[:ApCoCoA:Symbolic data#Higman_group|Higman group]]</div> ====
   AN:= "";
+
The Higman group has the following presentation.
   For I:= 1 To ARGV[1] Do
+
H = <a,b,c,d | a^{-1}ba = b^{2}, b^{-1}cb = c^{2}, c^{-1}dc = d^{2}, d^{-1}ad = a^{2}>
    AM:= AM + "a";
+
XML data:
   EndFor;
+
<vars>a[1],a[2],b[1],b[2],c[1],c[2],d[1],d[2]</vars>
   For I:= 1 To ARGV[2] Do
+
<rels>
    AN:= AN + "a";
+
  <ncpoly>a[1]*a[2]-1</ncpoly>
   EndFor;
+
   <ncpoly>a[2]*a[1]-1</ncpoly>
   F1 := [[1, "aA"], [-1, ""]];
+
   <ncpoly>b[1]*b[2]-1</ncpoly>
  F2 := [[1, "bB"], [-1, ""]];
+
   <ncpoly>b[2]*b[1]-1</ncpoly>
   F3 := [[1, "cC"], [-1, ""]];
+
   <ncpoly>c[1]*c[2]-1</ncpoly>
   F4 := [[1, "dD"], [-1, ""]];
+
   <ncpoly>c[2]*c[1]-1</ncpoly>
   F5 := [[1, "Aa"], [-1, ""]];
+
   <ncpoly>d[1]*d[2]-1</ncpoly>
  F6 := [[1, "Bb"], [-1, ""]];
+
   <ncpoly>d[2]*d[1]-1</ncpoly>
  F7 := [[1, "Cc"], [-1, ""]];
+
  <ncpoly>a[2]*b[1]*a[1]-b[1]*b[1]</ncpoly>
  F8 := [[1, "Dd"], [-1, ""]];
+
   <ncpoly>b[2]*c[1]*b[1]-c[1]*c[1]</ncpoly>
  F:= [F1, F2, F3, F4, F5, F6, F7, F8, [[1, "a"], [-1, "c"]], [[1, "b"], [-1, "d"]], [[1, "b" + AN], [-1, AM + "b"]]];
+
   <ncpoly>c[2]*d[1]*c[1]-d[1]*d[1]</ncpoly>
  If Len(ARGV) = 1 Then
+
  <ncpoly>d[2]*a[1]*d[1]-a[1]*a[1]</ncpoly>
    S:= $apcocoa/gbmr.MRBP(X, Ordering, R, F);
+
</rels>
  Else
+
 
    S:= $apcocoa/gbmr.MRBP(X, Ordering, R, F, ARGV[2], ARGV[3], 1);
+
 
  EndIf;
+
==== <div id="Ordinary_tetrahedon_groups">[[:ApCoCoA:Symbolic data#Ordinary_tetrahedon_groups|Ordinary tetrahedon groups]]</div> ====
  Return S;
+
Ordinary tetrahedon groups have the following presentation where e_i >= 2 and f_i >= 2 for all i.
  EndDefine;
+
G(e_1,e_2,e_3,f_1,f_2,f_3) = <x,y,z | x^{e_1} = y^{e_2} = z^{e_3} = (xy^{-1})^{f_1} = (yz^{-1})^{f_2} = (zx^{-1})^{f_3} = 1>
 +
XML data:
 +
<vars>x,y,z</vars>
 +
<params>e_1,e_2,e_3,f_1,f_2,f_3</params>
 +
<rels>
 +
  <ncpoly>x^{e_1}-1</ncpoly>
 +
  <ncpoly>y^{e_2}-1</ncpoly>
 +
  <ncpoly>z^{e_3}-1</ncpoly>
 +
  <ncpoly>(x*y^{e_2-1})^{f_1}-1</ncpoly>
 +
   <ncpoly>(y*z^{e_3-1})^{f_2}-1</ncpoly>
 +
   <ncpoly>(z*x^{e_1-1})^{f_3}-1</ncpoly>
 +
</rels>
 +
 
 +
 
 +
==== <div id="Thompson_group">[[:ApCoCoA:Symbolic data#Thompson_group|Thompson group]]</div> ====
 +
The Thompson group has a presentation as follows.
 +
T = <a,b | [ab^{-1},a^{-1}ba] = [ab^{-1},a^{-2}ba^{2}] = 1>
 +
XML data:
 +
<vars>a[1],a[2],b[1],b[2]</vars>
 +
<rels>
 +
  <ncpoly>a[1]*a[2]-1</ncpoly>
 +
   <ncpoly>a[2]*a[1]-1</ncpoly>
 +
  <ncpoly>b[1]*b[2]-1</ncpoly>
 +
  <ncpoly>b[2]*b[1]-1</ncpoly>
 +
   <ncpoly>a[1]*b[2]*a[2]*b[1]*a[1]-b[1]*a[2]*a[2]*b[2]*a[1]</ncpoly>
 +
   <ncpoly>a[1]*b[2]*a[2]*a[2]*b[1]*a[1]*a[1]-b[1]*a[2]*a[2]*a[2]*b[2]*a[1]*a[1]</ncpoly>
 +
</rels>
 +
 
 +
 
 +
==== <div id="Triangle_groups">[[:ApCoCoA:Symbolic data#Triangle_groups|Triangle groups]]</div> ====
 +
Triangle groups have the following presentation.
 +
Triangle(l,m,n) = {a,b,c | a^{2} = b^{2} = c^{2} = (ab)^{l} = (bc)^{m} = (ca)^{n} = 1}
 +
XML data:
 +
<vars>a,b,c</vars>
 +
<params>l,m,n</params>
 +
<rels>
 +
  <ncpoly>a*a-1</ncpoly>
 +
  <ncpoly>b*b-1</ncpoly>
 +
  <ncpoly>c*c-1</ncpoly>
 +
  <ncpoly>(a*b)^{l}-1</ncpoly>
 +
  <ncpoly>(b*c)^{m}-1</ncpoly>
 +
  <ncpoly>(c*a)^{n}-1</ncpoly>
 +
</rels>
 +
 
 +
 
 +
==== <div id="SL_3_8">SL(3,8)</div> ====
 +
/* SL(3,8) has a presentation with generators a, b, c, d, e and the following relators
 +
    a^2, b^2, c^7, de, ed,
 +
    (cb)^2,
 +
    (ba)^3,
 +
    (acac^6)^2,
 +
    c^2ac^6ac^5ac,
 +
    dbe^2,
 +
    (ce)^2cd^2
 +
    aead(ae)^2babd^2,
 +
    eadae^2babd^2(ae)^2babd^2,
 +
    ec^6daecdc^6aca,
 +
    ec^6daecec^6d^2ae^2cd^2,
 +
    ec^6daecec^6d^2ae^2cd^2.
 +
    The following commands check whether the last relator, i.e. ec^6daecec^6d^2ae^2cd^2
 +
    can be rewritten by the others, via Groebner basis techniques.
 +
*/
 +
Use ZZ/(2)[a,b,c,d,e];
 +
G:=[[[a^2], [1]],
 +
    [[b^2], [1]],  
 +
    [[c^7], [1]],
 +
    [[d, e], [1]],
 +
    [[e, d], [1]],
 +
    [[c, b, c, b], [1]],
 +
    [[b, a, b, a, b, a], [1]],
 +
    [[a, c, a, c^6, a, c, a, c^6], [1]],
 +
    [[c^2, a, c^6, a, c^5, a, c], [1]],
 +
    [[b, d, b, e^2], [1]],
 +
    [[c, e, c, e, c, d^2], [1]],
 +
    [[a, e, a, d, a, e, a, e, b, a, b, d^2], [1]],
 +
    [[e, a, d, a, e^2, b, a, b, d^2, a, e, a, e, b, a, b, d^2], [1]],
 +
    [[e, c^6, d, a, e, c, d, c^6, a, c, a], [1]]];
 +
F:=[ [e,c^6, d, a, e, c, e, c^6, d^2, a, e^2, c, d^2] ];
 +
Gb:=NC.GB(G,31,1,100,5000);
 +
  NC.NR(F,Gb);

Latest revision as of 15:58, 1 July 2013

Computation of Non-abelian Groups

Baumslag-Solitar groups have the following presentation.

BS(m,n)<a, b | ba^{m} = a^{n}b> where m, n are natural numbers

XML data:

<vars>a[1],a[2],b[1],b[2]</vars>
<params>m,n</params>
<rels>
  <ncpoly>a[1]*a[2]-1</ncpoly>
  <ncpoly>a[2]*a[1]-1</ncpoly>
  <ncpoly>b[1]*b[2]-1</ncpoly>
  <ncpoly>b[2]*b[1]-1</ncpoly>
  <ncpoly>b[1]*a[1]^{m}-a[1]^{n}*b[1]</ncpoly>
</rels> 

We enumerate partial Groebner bases for the Baumslag-Solitar groups as follows.

/*Use the ApCoCoA package ncpoly.*/
Use ZZ/(2)[a[1..2],b[1..2]];
NC.SetOrdering("LLEX");
A1:=[[a[1],a[2]],[1]];
A2:=[[a[2],a[1]],[1]];
B1:=[[b[1],b[2]],[1]];
B2:=[[b[2],b[1]],[1]];
-- Relation ba^2=a^3b. Change 2 and 3 in "()" to make another relation
R:=[[b[1],a[1]^(2)],[a[1]^(3),b[1]]];
G:=[A1,A2,B1,B2,R];
-- Enumerate a partial Groebner basis (see NC.GB for more details)
NC.GB(G,31,1,100,1000);
/*Use the ApCoCoA package gbmr.*/
-- See NCo.BGB for more details on the parameters DB, LB and OFlag.
Define BS(M,N,DB,LB,OFlag)
  $apcocoa/gbmr.SetX("aAbB");
  $apcocoa/gbmr.SetOrdering("LLEX");
  G:= [["aA",""],["Aa",""],["bB",""],["bB",""]];
  BA:= "b";
  AB:= "b";
  For I:= 1 To ARGV[1] Do
    BA:= BA + "a"; 
  EndFor;
  For I:= 1 To ARGV[2] Do
    AB:= "a" + Ab; 
  EndFor;
  Append(G,[BA,AB]);
  Return $apcocoa/gbmr.BGB(G,DB,LB,OFlag);
EndDefine;


Dicyclic groups have the following presentation.

Dic(n) = <a,b | a^{2n} = 1, a^{n} = b^{2}, bab^{-1} = a^{-1}>

XML data:

<vars>a,b[1],b[2]</vars>
<params>n</params>
<rels>
  <ncpoly>a^{2n}-1</ncpoly>
  <ncpoly>b[1]*b[2]-1</ncpoly>
  <ncpoly>b[2]*b[1]-1</ncpoly>
  <ncpoly>a^{n}-b[1]*b[1]</ncpoly>
  <ncpoly>b[1]*a*b[2]-a^{2n-1}</ncpoly>
</rels> 


Dihedral groups have the following presentation.

Dih(n) = <r,s | r^{n} = s^{2} = (rs)^{2} = 1>

XML data:

<vars>r,s</vars>
<params>n</params>
<rels>
  <ncpoly>r^{n}-1</ncpoly>
  <ncpoly>s*s-1</ncpoly>
  <ncpoly>r*s*r*s-1</ncpoly>
</rels> 


Von Dyck groups have the following presentation.

D(l,m,n) = <x,y | x^{l} = y^{m} = (xy)^{n} = 1>

XML data:

<vars>x,y</vars>
<params>l,m,n</params>
<rels>
  <ncpoly>x^{l}-1</ncpoly>
  <ncpoly>y^{m}-1</ncpoly>
  <ncpoly>(x*y)^{n}-1</ncpoly>
</rels> 


The Higman group has the following presentation.

H = <a,b,c,d | a^{-1}ba = b^{2}, b^{-1}cb = c^{2}, c^{-1}dc = d^{2}, d^{-1}ad = a^{2}>

XML data:

<vars>a[1],a[2],b[1],b[2],c[1],c[2],d[1],d[2]</vars>
<rels>
  <ncpoly>a[1]*a[2]-1</ncpoly>
  <ncpoly>a[2]*a[1]-1</ncpoly>
  <ncpoly>b[1]*b[2]-1</ncpoly>
  <ncpoly>b[2]*b[1]-1</ncpoly>
  <ncpoly>c[1]*c[2]-1</ncpoly>
  <ncpoly>c[2]*c[1]-1</ncpoly>
  <ncpoly>d[1]*d[2]-1</ncpoly>
  <ncpoly>d[2]*d[1]-1</ncpoly>
  <ncpoly>a[2]*b[1]*a[1]-b[1]*b[1]</ncpoly>
  <ncpoly>b[2]*c[1]*b[1]-c[1]*c[1]</ncpoly>
  <ncpoly>c[2]*d[1]*c[1]-d[1]*d[1]</ncpoly>
  <ncpoly>d[2]*a[1]*d[1]-a[1]*a[1]</ncpoly>
</rels> 


Ordinary tetrahedon groups have the following presentation where e_i >= 2 and f_i >= 2 for all i.

G(e_1,e_2,e_3,f_1,f_2,f_3) = <x,y,z | x^{e_1} = y^{e_2} = z^{e_3} = (xy^{-1})^{f_1} = (yz^{-1})^{f_2} = (zx^{-1})^{f_3} = 1>

XML data:

<vars>x,y,z</vars>
<params>e_1,e_2,e_3,f_1,f_2,f_3</params>
<rels>
  <ncpoly>x^{e_1}-1</ncpoly>
  <ncpoly>y^{e_2}-1</ncpoly>
  <ncpoly>z^{e_3}-1</ncpoly>
  <ncpoly>(x*y^{e_2-1})^{f_1}-1</ncpoly>
  <ncpoly>(y*z^{e_3-1})^{f_2}-1</ncpoly>
  <ncpoly>(z*x^{e_1-1})^{f_3}-1</ncpoly>
</rels> 


The Thompson group has a presentation as follows.

T = <a,b | [ab^{-1},a^{-1}ba] = [ab^{-1},a^{-2}ba^{2}] = 1>

XML data:

<vars>a[1],a[2],b[1],b[2]</vars>
<rels>
  <ncpoly>a[1]*a[2]-1</ncpoly>
  <ncpoly>a[2]*a[1]-1</ncpoly>
  <ncpoly>b[1]*b[2]-1</ncpoly>
  <ncpoly>b[2]*b[1]-1</ncpoly>
  <ncpoly>a[1]*b[2]*a[2]*b[1]*a[1]-b[1]*a[2]*a[2]*b[2]*a[1]</ncpoly>
  <ncpoly>a[1]*b[2]*a[2]*a[2]*b[1]*a[1]*a[1]-b[1]*a[2]*a[2]*a[2]*b[2]*a[1]*a[1]</ncpoly>
</rels> 


Triangle groups have the following presentation.

Triangle(l,m,n) = {a,b,c | a^{2} = b^{2} = c^{2} = (ab)^{l} = (bc)^{m} = (ca)^{n} = 1}

XML data:

<vars>a,b,c</vars>
<params>l,m,n</params>
<rels>
  <ncpoly>a*a-1</ncpoly>
  <ncpoly>b*b-1</ncpoly>
  <ncpoly>c*c-1</ncpoly>
  <ncpoly>(a*b)^{l}-1</ncpoly>
  <ncpoly>(b*c)^{m}-1</ncpoly>
  <ncpoly>(c*a)^{n}-1</ncpoly>
</rels> 


SL(3,8)

/* SL(3,8) has a presentation with generators a, b, c, d, e and the following relators
    a^2, b^2, c^7, de, ed,
    (cb)^2,
    (ba)^3,
    (acac^6)^2,
    c^2ac^6ac^5ac,
    dbe^2, 
    (ce)^2cd^2
    aead(ae)^2babd^2,
    eadae^2babd^2(ae)^2babd^2,
    ec^6daecdc^6aca,
    ec^6daecec^6d^2ae^2cd^2,
    ec^6daecec^6d^2ae^2cd^2.
    The following commands check whether the last relator, i.e. ec^6daecec^6d^2ae^2cd^2
    can be rewritten by the others, via Groebner basis techniques.
*/
Use ZZ/(2)[a,b,c,d,e];
G:=[[[a^2], [1]],
    [[b^2], [1]], 
    [[c^7], [1]],
    [[d, e], [1]],
    [[e, d], [1]],
    [[c, b, c, b], [1]],
    [[b, a, b, a, b, a], [1]],
    [[a, c, a, c^6, a, c, a, c^6], [1]],
    [[c^2, a, c^6, a, c^5, a, c], [1]],
    [[b, d, b, e^2], [1]], 
    [[c, e, c, e, c, d^2], [1]],
    [[a, e, a, d, a, e, a, e, b, a, b, d^2], [1]],
    [[e, a, d, a, e^2, b, a, b, d^2, a, e, a, e, b, a, b, d^2], [1]],
    [[e, c^6, d, a, e, c, d, c^6, a, c, a], [1]]];
F:=[ [e,c^6, d, a, e, c, e, c^6, d^2, a, e^2, c, d^2] ];
Gb:=NC.GB(G,31,1,100,5000);
NC.NR(F,Gb);