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\).
TESTS:
sage: L = sage.modular.modsym.g1list.G1list(18)
sage: loads(dumps(L)) == L
True
Return a list of vectors representing the cosets. Do not change the returned list!
EXAMPLE:
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)]
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.
EXAMPLE:
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)