ApCoCoA-1:Triangle groups

From ApCoCoAWiki

Description

For integers l,m,n greater than 1 the Triangle groups have can be described with the following finite representation:

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

Reference

Gross, Jonathan L.; Tucker, Thomas W. (2001), "6.2.8 Triangle Groups", Topological graph theory, Courier Dover Publications

Computation

 /*Use the ApCoCoA package ncpoly.*/
 
 // set the variables l,m,n
 // Note that l,m,n have to be greater than 1
 MEMORY.L:=3;
 MEMORY.M:=3;
 MEMORY.N:=3;
 Use ZZ/(2)[a,b,c];
 NC.SetOrdering("LLEX");
 Define CreateRelationsTriangle()
   Relations:=[];
   
   // add the relation a^2 = b^2 = c^2 = 1
   Append(Relations,[[a^2],[1]]);
   Append(Relations,[[b^2],[1]]);
   Append(Relations,[[c^2],[1]]);
   
   // add the relation (ab)^l = 1
   RelationBuffer1:=[];
   For Index0:= 1 To MEMORY.L Do
     Append(RelationBuffer1,a);
     Append(RelationBuffer1,b);
   EndFor;
   Append(Relations,[RelationBuffer1,[1]]);
   
   // add the relation (bc)^m = 1
   RelationBuffer2:=[];
   For Index1:= 1 To MEMORY.M Do
     Append(RelationBuffer2,b);
     Append(RelationBuffer2,c);
   EndFor;
   Append(Relations,[RelationBuffer2,[1]]);
   
   // add the relation (ca)^n = 1
   RelationBuffer3:=[];
   For Index2:= 1 To MEMORY.N Do
     Append(RelationBuffer3,c);
     Append(RelationBuffer3,a);
   EndFor;
   Append(Relations,[RelationBuffer3,[1]]);
   Return Relations;
 EndDefine;
 
 Relations:=CreateRelationsTriangle();
 GB:=NC.GB(Relations);