"Source: Text/Geometry/ModSym.text";
"Line: 2394";
"Date: Thu Sep 25 14:47:45 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/ModSym.text, line: 2394
// Example: H145E21 ()
print "Example: H145E21";
ei := GetEchoInput();
SetEchoInput(true);
M := ModularSymbols(20); M;
e := M ! <1, [Cusps()|0,Infinity()] >;   // the path from 0 to infinity
e;
J0of20 := CuspidalSubspace(M);
A := SubgroupOfTorus(J0of20, e); A;
// Next, the subgroup generated by all cusps
A := SubgroupOfTorus(J0of20, IntegralBasis(M));  A; 
// Let's do another example.
M := ModularSymbols(100);
J0of100 := CuspidalSubspace(M);
A := SubgroupOfTorus(J0of100, IntegralBasis(M));  A;
M := ModularSymbols(77);
J0of77 := CuspidalSubspace(M);
A := SubgroupOfTorus(J0of77, IntegralBasis(M)); A;
M := ModularSymbols(97);
A := SubgroupOfTorus(CuspidalSubspace(M), IntegralBasis(M)); A;
Numerator((97-1)/12);
assert $1 eq 8;
SetEchoInput(ei);
