List of coset representatives for \(\Gamma_1(N)\) in \(\SL_2(\ZZ)\)¶
- class sage.modular.modsym.g1list.G1list(N)[source]¶
- Bases: - SageObject- A class representing a list of coset representatives for \(\Gamma_1(N)\) in \(\SL_2(\ZZ)\). What we actually calculate is a list of elements of \((\ZZ/N\ZZ)^2\) of exact order \(N\). - list()[source]¶
- 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)] - >>> from sage.all import * >>> L = sage.modular.modsym.g1list.G1list(Integer(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)[source]¶
- 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- P1Listclass 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) - >>> from sage.all import * >>> L = sage.modular.modsym.g1list.G1list(Integer(4)); L.normalize(Integer(6), Integer(1)) (2, 1) >>> L = sage.modular.modsym.g1list.G1list(Integer(4)); L.normalize(Integer(6), Integer(2)) # nonsense! (2, 2)