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

### Hecke groups

#### Description

The Hecke groups has the following representation:

``` H(lambda_q) = <x,y | x^2=(xy)^q=1, for q >= 3>
```

#### Reference

GROWTH IN HECKE GROUPS, MARTIN KREUZER AND GERHARD ROSENBERGER

#### Computation

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

// Define the variable q of the Hecke group
MEMORY.Q := 4;

// y is invers to z, x is invers to itself (that follows directly from the first relation)
Use ZZ/(2)[x,y,z];
NC.SetOrdering("LLEX");

Define CreateRelationsHecke()
Relations:=[];
// add the invers relation of y and z
Append(Relations,[[y,z],[1]]);
Append(Relations,[[z,y],[1]]);

// add the relation x^2 = 1
Append(Relations,[[x,x],[1]]);

// add the relation (xy)^q = 1
RelationBuffer1:=[];
For Index0 := 1 To MEMORY.Q Do
Append(RelationBuffer1,x);
Append(RelationBuffer1,y);
EndFor;
Append(Relations,[RelationBuffer1,[1]]);

Return Relations;
EndDefine;

Relations:=CreateRelationsHecke();
Gb:=NC.GB(Relations);
```