Function: mfcosets
Section: modular_forms
C-Name: mfcosets
Prototype: G
Help: mfcosets(N): list of right cosets of G_0(N)\G, i.e., matrices g_j in G
 such that G = U G_0(N) g_j. The g_j are chosen in the form [a,b; c,d] with
 c | N.
Doc: let $N$ be a positive integer. Return the list of right cosets of
 $\Gamma_{0}(N) \bs \Gamma$, i.e., matrices $\gamma_{j} \in \Gamma$ such that
 $\Gamma = \bigsqcup_{j} \Gamma_{0}(N) \gamma_{j}$.
 The $\gamma_{j}$ are chosen in the form $[a,b;c,d]$ with $c \mid N$.
 \bprog
 ? mfcosets(4)
 %1 = [[0, -1; 1, 0], [1, 0; 1, 1], [0, -1; 1, 2], [0, -1; 1, 3],\
       [1, 0; 2, 1], [1, 0; 4, 1]]
 @eprog\noindent We also allow the argument $N$ to be a modular form space,
 in which case it is replaced by the level of the space:
 \bprog
 ? M = mfinit([4, 12, 1], 0); mfcosets(M)
 %2 = [[0, -1; 1, 0], [1, 0; 1, 1], [0, -1; 1, 2], [0, -1; 1, 3],\
       [1, 0; 2, 1], [1, 0; 4, 1]]
 @eprog

 \misctitle{Warning} In the present implementation, the trivial coset is
 represented by $[1,0;N,1]$ and is the last in the list.
