Esempio n. 1
0
    def eisenstein_params(self):
        """
        Return parameters that define all Eisenstein series in self.

        OUTPUT: an immutable Sequence

        EXAMPLES::

            sage: m = ModularForms(Gamma0(22), 2)
            sage: v = m.eisenstein_params(); v
            [(Dirichlet character modulo 22 of conductor 1 mapping 13 |--> 1, Dirichlet character modulo 22 of conductor 1 mapping 13 |--> 1, 2), (Dirichlet character modulo 22 of conductor 1 mapping 13 |--> 1, Dirichlet character modulo 22 of conductor 1 mapping 13 |--> 1, 11), (Dirichlet character modulo 22 of conductor 1 mapping 13 |--> 1, Dirichlet character modulo 22 of conductor 1 mapping 13 |--> 1, 22)]
            sage: type(v)
            <class 'sage.structure.sequence.Sequence_generic'>
        """
        try:
            return self.__eisenstein_params
        except AttributeError:
            eps = self.character()
            if eps is None:
                if arithgroup.is_Gamma1(self.group()):
                    eps = self.level()
                else:
                    raise NotImplementedError
            params = eis_series.compute_eisenstein_params(eps, self.weight())
            self.__eisenstein_params = Sequence(params, immutable=True)
        return self.__eisenstein_params
Esempio n. 2
0
 def eisenstein_params(self):
     """
     Return parameters that define all Eisenstein series in self.
     
     OUTPUT: an immutable Sequence
     
     EXAMPLES::
     
         sage: m = ModularForms(Gamma0(22), 2)
         sage: v = m.eisenstein_params(); v
         [(Dirichlet character modulo 22 of conductor 1 mapping 13 |--> 1, Dirichlet character modulo 22 of conductor 1 mapping 13 |--> 1, 2), (Dirichlet character modulo 22 of conductor 1 mapping 13 |--> 1, Dirichlet character modulo 22 of conductor 1 mapping 13 |--> 1, 11), (Dirichlet character modulo 22 of conductor 1 mapping 13 |--> 1, Dirichlet character modulo 22 of conductor 1 mapping 13 |--> 1, 22)]
         sage: type(v)
         <class 'sage.structure.sequence.Sequence_generic'>
     """
     try:
         return self.__eisenstein_params
     except AttributeError:
         eps = self.character()
         if eps == None:
             if arithgroup.is_Gamma1(self.group()):
                 eps = self.level()
             else:
                 raise NotImplementedError
         params = eis_series.compute_eisenstein_params(eps, self.weight())
         self.__eisenstein_params = Sequence(params, immutable=True)
     return self.__eisenstein_params
    def parameters(self):
        r"""
        Return a list of parameters for each Eisenstein series
        spanning self. That is, for each such series, return a triple
        of the form (`\psi`, `\chi`, level), where `\psi` and `\chi`
        are the characters defining the Eisenstein series, and level
        is the smallest level at which this series occurs.

        EXAMPLES::
        
            sage: ModularForms(24,2).eisenstein_submodule().parameters()
            [(Dirichlet character modulo 24 of conductor 1 mapping 7 |--> 1, 13 |--> 1, 17 |--> 1, Dirichlet character modulo 24 of conductor 1 mapping 7 |--> 1, 13 |--> 1, 17 |--> 1, 2), 
            ...  
            Dirichlet character modulo 24 of conductor 1 mapping 7 |--> 1, 13 |--> 1, 17 |--> 1, 24)]           
            sage: EisensteinForms(12,6).parameters()[-1]
            (Dirichlet character modulo 12 of conductor 1 mapping 7 |--> 1, 5 |--> 1, Dirichlet character modulo 12 of conductor 1 mapping 7 |--> 1, 5 |--> 1, 12)

            sage: pars = ModularForms(DirichletGroup(24).0,3).eisenstein_submodule().parameters()
            sage: [(x[0].values_on_gens(),x[1].values_on_gens(),x[2]) for x in pars]
            [((1, 1, 1), (-1, 1, 1), 1),
            ((1, 1, 1), (-1, 1, 1), 2),
            ((1, 1, 1), (-1, 1, 1), 3), 
            ((1, 1, 1), (-1, 1, 1), 6),
            ((-1, 1, 1), (1, 1, 1), 1),
            ((-1, 1, 1), (1, 1, 1), 2),
            ((-1, 1, 1), (1, 1, 1), 3),
            ((-1, 1, 1), (1, 1, 1), 6)]
            sage: EisensteinForms(DirichletGroup(24).0,1).parameters()
            [(Dirichlet character modulo 24 of conductor 1 mapping 7 |--> 1, 13 |--> 1, 17 |--> 1, Dirichlet character modulo 24 of conductor 4 mapping 7 |--> -1, 13 |--> 1, 17 |--> 1, 1), (Dirichlet character modulo 24 of conductor 1 mapping 7 |--> 1, 13 |--> 1, 17 |--> 1, Dirichlet character modulo 24 of conductor 4 mapping 7 |--> -1, 13 |--> 1, 17 |--> 1, 2), (Dirichlet character modulo 24 of conductor 1 mapping 7 |--> 1, 13 |--> 1, 17 |--> 1, Dirichlet character modulo 24 of conductor 4 mapping 7 |--> -1, 13 |--> 1, 17 |--> 1, 3), (Dirichlet character modulo 24 of conductor 1 mapping 7 |--> 1, 13 |--> 1, 17 |--> 1, Dirichlet character modulo 24 of conductor 4 mapping 7 |--> -1, 13 |--> 1, 17 |--> 1, 6)]
        """
        try:
            return self.__parameters
        except AttributeError:
            char = self._parameters_character()
            if char is None:
                P = eis_series.compute_eisenstein_params(
                    self.level(), self.weight())
            else:
                P = eis_series.compute_eisenstein_params(char, self.weight())
            self.__parameters = P
            return P
Esempio n. 4
0
    def parameters(self):
        r"""
        Return a list of parameters for each Eisenstein series
        spanning self. That is, for each such series, return a triple
        of the form (`\psi`, `\chi`, level), where `\psi` and `\chi`
        are the characters defining the Eisenstein series, and level
        is the smallest level at which this series occurs.

        EXAMPLES::

            sage: ModularForms(24,2).eisenstein_submodule().parameters()
            [(Dirichlet character modulo 24 of conductor 1 mapping 7 |--> 1, 13 |--> 1, 17 |--> 1, Dirichlet character modulo 24 of conductor 1 mapping 7 |--> 1, 13 |--> 1, 17 |--> 1, 2),
            ...
            Dirichlet character modulo 24 of conductor 1 mapping 7 |--> 1, 13 |--> 1, 17 |--> 1, 24)]
            sage: EisensteinForms(12,6).parameters()[-1]
            (Dirichlet character modulo 12 of conductor 1 mapping 7 |--> 1, 5 |--> 1, Dirichlet character modulo 12 of conductor 1 mapping 7 |--> 1, 5 |--> 1, 12)

            sage: pars = ModularForms(DirichletGroup(24).0,3).eisenstein_submodule().parameters()
            sage: [(x[0].values_on_gens(),x[1].values_on_gens(),x[2]) for x in pars]
            [((1, 1, 1), (-1, 1, 1), 1),
            ((1, 1, 1), (-1, 1, 1), 2),
            ((1, 1, 1), (-1, 1, 1), 3),
            ((1, 1, 1), (-1, 1, 1), 6),
            ((-1, 1, 1), (1, 1, 1), 1),
            ((-1, 1, 1), (1, 1, 1), 2),
            ((-1, 1, 1), (1, 1, 1), 3),
            ((-1, 1, 1), (1, 1, 1), 6)]
            sage: EisensteinForms(DirichletGroup(24).0,1).parameters()
            [(Dirichlet character modulo 24 of conductor 1 mapping 7 |--> 1, 13 |--> 1, 17 |--> 1, Dirichlet character modulo 24 of conductor 4 mapping 7 |--> -1, 13 |--> 1, 17 |--> 1, 1), (Dirichlet character modulo 24 of conductor 1 mapping 7 |--> 1, 13 |--> 1, 17 |--> 1, Dirichlet character modulo 24 of conductor 4 mapping 7 |--> -1, 13 |--> 1, 17 |--> 1, 2), (Dirichlet character modulo 24 of conductor 1 mapping 7 |--> 1, 13 |--> 1, 17 |--> 1, Dirichlet character modulo 24 of conductor 4 mapping 7 |--> -1, 13 |--> 1, 17 |--> 1, 3), (Dirichlet character modulo 24 of conductor 1 mapping 7 |--> 1, 13 |--> 1, 17 |--> 1, Dirichlet character modulo 24 of conductor 4 mapping 7 |--> -1, 13 |--> 1, 17 |--> 1, 6)]
        """
        try:
            return self.__parameters
        except AttributeError:
            char = self._parameters_character()
            if char is None:
                P = eis_series.compute_eisenstein_params(self.level(), self.weight())
            else:
                P = eis_series.compute_eisenstein_params(char, self.weight())
            self.__parameters = P
            return P