# List of coset representatives for $$\Gamma_1(N)$$ in $${\rm SL}_2(\ZZ)$$¶

class sage.modular.modsym.g1list.G1list(N)

A class representing a list of coset representatives for $$\Gamma_1(N)$$ in $${\rm SL}_2(\ZZ)$$. What we actually calculate is a list of elements of $$(\ZZ/N\ZZ)^2$$ of exact order $$N$$.

list()

Return a list of vectors representing the cosets. Do not change the returned list!

EXAMPLES:

sage: L = sage.modular.modsym.g1list.G1list(4); L.list()
[(0, 1), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 1), (2, 3), (3, 0), (3, 1), (3, 2), (3, 3)]

normalize(u, v)

Given a pair $$(u,v)$$ of integers, return the unique pair $$(u', v')$$ such that the pair $$(u', v')$$ appears in self.list() and $$(u, v)$$ is equivalent to $$(u', v')$$. This is rather trivial, but is here for consistency with the P1List class which is the equivalent for $$\Gamma_0$$ (where the problem is rather harder).

This will only make sense if $${\rm gcd}(u, v, N) = 1$$; otherwise the output will not be an element of self.

EXAMPLES:

sage: L = sage.modular.modsym.g1list.G1list(4); L.normalize(6, 1)
(2, 1)
sage: L = sage.modular.modsym.g1list.G1list(4); L.normalize(6, 2) # nonsense!
(2, 2)