"Source: Text/Geometry/GrpPSL2.text";
"Line: 1602";
"Date: Tue Jun  7 22:27:14 2016";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/GrpPSL2.text, line: 1602
// Example: H142E11 ()
print "Example: H142E11";
ei := GetEchoInput();
SetEchoInput(true);
G := Gamma0(37);
// To draw a picture of the fundamental domain we need to define 
// the upper half plane.
H<i,r> := UpperHalfPlaneWithCusps();
D := FundamentalDomain(G,H);
E := EllipticPoints(G,H);
// We need to make sure the polygons we want to display all
// have the same type, so we have t create the following object:
HH:=Parent(D);  
// now we make a list of polygons and points:
P1:=[HH|D] cat [HH|[e] : e in E];
// we take a look at the default picture of the situation:
// use different colours:
yellow := [1,1,0];
red := [1,0,0];
green := [0,1,0];
cyan := [0,1,1];
black := [0,0,0];
Colours := [yellow] cat [red : e in E];
// use a different size and scale:
Size := [0,1,0.2,400];
// view the result:
// We use a slightly different list of polygons, to show more
// structure.
tri := [H|Infinity(),0,H.2];          
cosets := CosetRepresentatives(G);
P := [HH|g*tri : g in cosets] cat [HH|[e] : e in E] cat [HH|D];
// Choosing some colours:
LotsOfColours := &cat[[yellow,green,cyan] : c in cosets];
Colours := [LotsOfColours[i] : i in [1..#cosets]] 
           cat [black] 
           cat [red : e in E];
// choose which polygons are filled, and which have outlines:
outlines := [false : i in cosets] cat [false : i in E] cat [true];
fill := [true : i in cosets] cat [true : i in E] cat [false];
labels := Cusps(FareySymbol(G));   
// Create a file of the result:
G := Gamma0(37);
H<i,r> := UpperHalfPlaneWithCusps();
D := FundamentalDomain(G,H);
HH:=Parent(D);  
E := EllipticPoints(G,H);
P:=[HH|D] cat [HH|[e] : e in E];
labels := Cusps(FareySymbol(G));   
yellow := [1,1,0];
red := [1,0,0];
Colours := [yellow] cat [red : e in E];
SetEchoInput(ei);
