List of coset representatives for \(\Gamma_1(N)\) in \(\SL_2(\ZZ)\) - Modular Symbols

Skip to content
Back to top
View this page
Edit this page

# List of coset representatives for \(\Gamma_1(N)\) in \(\SL_2(\ZZ)\)

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

  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()

    Return a list of vectors representing the cosets.

    Do not change the returned list!

    EXAMPLES:

    Sage

        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)]

    Python

        >>> 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)

    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

        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)

    Python

        >>> 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)