# ApCoCoA-1:Symbolic data Computations

### Computation of Non-abelian Groups

#### Baumslag 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,a,b,b</vars>
<params>m,n</params>
<rels>
<ncpoly>a*a-1</ncpoly>
<ncpoly>a*a-1</ncpoly>
<ncpoly>b*b-1</ncpoly>
<ncpoly>b*b-1</ncpoly>
<ncpoly>b*a^{m}-a^{n}*b</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,a],];
A2:=[[a,a],];
B1:=[[b,b],];
B2:=[[b,b],];
-- Relation ba^2=a^3b. Change 2 and 3 in "()" to make another relation
R:=[[b,a^(2)],[a^(3),b]];
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 Do
BA:= BA + "a";
EndFor;
For I:= 1 To ARGV Do
AB:= "a" + Ab;
EndFor;
Append(G,[BA,AB]);
Return \$apcocoa/gbmr.BGB(G,DB,LB,OFlag);
EndDefine;
```

#### Dicyclic groups

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,b</vars>
<params>n</params>
<rels>
<ncpoly>a^{2n}-1</ncpoly>
<ncpoly>b*b-1</ncpoly>
<ncpoly>b*b-1</ncpoly>
<ncpoly>a^{n}-b*b</ncpoly>
<ncpoly>b*a*b-a^{2n-1}</ncpoly>
</rels>
```

#### Dihedral groups

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

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>
```

#### Higman group

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,a,b,b,c,c,d,d</vars>
<rels>
<ncpoly>a*a-1</ncpoly>
<ncpoly>a*a-1</ncpoly>
<ncpoly>b*b-1</ncpoly>
<ncpoly>b*b-1</ncpoly>
<ncpoly>c*c-1</ncpoly>
<ncpoly>c*c-1</ncpoly>
<ncpoly>d*d-1</ncpoly>
<ncpoly>d*d-1</ncpoly>
<ncpoly>a*b*a-b*b</ncpoly>
<ncpoly>b*c*b-c*c</ncpoly>
<ncpoly>c*d*c-d*d</ncpoly>
<ncpoly>d*a*d-a*a</ncpoly>
</rels>
```

#### Ordinary tetrahedon groups

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>
```

#### Thompson group

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,a,b,b</vars>
<rels>
<ncpoly>a*a-1</ncpoly>
<ncpoly>a*a-1</ncpoly>
<ncpoly>b*b-1</ncpoly>
<ncpoly>b*b-1</ncpoly>
<ncpoly>a*b*a*b*a-b*a*a*b*a</ncpoly>
<ncpoly>a*b*a*a*b*a*a-b*a*a*a*b*a*a</ncpoly>
</rels>
```

#### Triangle groups

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
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], ],
[[b^2], ],
[[c^7], ],
[[d, e], ],
[[e, d], ],
[[c, b, c, b], ],
[[b, a, b, a, b, a], ],
[[a, c, a, c^6, a, c, a, c^6], ],
[[c^2, a, c^6, a, c^5, a, c], ],
[[b, d, b, e^2], ],
[[c, e, c, e, c, d^2], ],
[[a, e, a, d, a, e, a, e, b, a, b, d^2], ],
[[e, a, d, a, e^2, b, a, b, d^2, a, e, a, e, b, a, b, d^2], ],
[[e, c^6, d, a, e, c, d, c^6, a, c, a], ]];
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);
```