ApCoCoA-1:Symbolic data Computations
From ApCoCoAWiki
Computation of Non-abelian Groups
Recall that Baumslag-Solitar groups have the following presentation.
BS(m,n)<a, b | b*a^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;
Recall that 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]^{2}</ncpoly> <ncpoly>b[1]*a*b[2]-a^{2n-1}</ncpoly> </rels>
Recall that 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^2-1</ncpoly> <ncpoly>r*s*r*s-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);