# Difference between revisions of "ApCoCoA-1:OrdinaryTetrahedron groups"

### Ordinary Tetrahedron groups

#### Description

An Ordinary Tetrahedron group is a group with a representation of the form

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

#### Reference

Edjvet, Rosenberger, Stille, Thomas, "On certain generalized tetrahedon groups", Computational And Geometric Aspects Of Modern Algebra.

#### Computation

``` /*Use the ApCoCoA package ncpoly.*/

// Variables of Ordinary Tetrahedon group
MEMORY.E1:=3;
MEMORY.E2:=3;
MEMORY.E3:=3;
MEMORY.F1:=3;
MEMORY.F2:=3;
MEMORY.F3:=3;

Use ZZ/(2)[x,y,z];
NC.SetOrdering("LLEX");
Define CreateRelationsDicyclic()
Relations:=[];
If MEMORY.E1 < 2 Or MEMORY.E2 < 2 Or MEMORY.E3 < 2 Or MEMORY.F1 < 2 Or MEMORY.F2 < 2 Or MEMORY.F3 < 2 Then
Output:="Wrong Input! Please check that E_i and F_i are greater than 1";
Print(Output);
Else
// add the relations x^{e_1} = 1, y^{e_2} = 1 and z^{e_3} = 1
Append(Relations,[[x^(MEMORY.E1)],]);
Append(Relations,[[y^(MEMORY.E2)],]);
Append(Relations,[[z^(MEMORY.E3)],]);

RelationA:=[];
For Index1 := 1 To MEMORY.F1 Do
Append(RelationA,x);
Append(RelationA,y^(MEMORY.E2-1));
EndFor;
Append(Relations,[RelationA,]);
RelationB:=[];
For Index2 := 1 To MEMORY.F2 Do
Append(RelationB,y);
Append(RelationB,z^(MEMORY.E3-1));
EndFor;
Append(Relations,[RelationB,]);

RelationC:=[];
For Index3 := 1 To MEMORY.F3 Do
Append(RelationC,z);
Append(RelationC,x^(MEMORY.E1-1));
EndFor;
Append(Relations,[RelationC,]);
EndIf;
Return Relations;
EndDefine;

Relations:=CreateRelationsDicyclic();
Relations;
If Size(Relations) > 0 Then
GB:=NC.GB(Relations,31,1,100,1000);
Size(GB);
EndIf;
```