Exemple #1
0
def JacobiD1NNFourierExpansionModule(K, m, weak_forms = False) :
        r"""
        INPUT:

            - `m`                -- The index of the associated Jacobi forms.
            - `weak_forms`       -- If True the weak condition
                                    `r^2 \le 4 m n`n will be imposed on the
                                    indices.
        """
        
        R = EquivariantMonoidPowerSeriesModule(
             JacobiFormD1NNIndices(m, weak_forms = weak_forms),
             TrivialCharacterMonoid("L^1_2(ZZ)", ZZ),
             TrivialRepresentation("L^1_2(ZZ)", K) )
    
        if K is ZZ :
            R._set_multiply_function( lambda k, d1,d2, ch1,ch2, res : mult_coeff_int(k, d1, d2, ch1, ch2, res, m)
                                      if not weak_forms
                                      else lambda k, d1,d2, ch1,ch2, res : mult_coeff_int_weak(k, d1, d2, ch1, ch2, res, m) )
        else :
            R._set_multiply_function( lambda k, d1,d2, ch1,ch2, res : mult_coeff_generic(k, d1, d2, ch1, ch2, res, m)
                                      if not weak_forms
                                      else lambda k, d1,d2, ch1,ch2, res : mult_coeff_generic_weak(k, d1, d2, ch1, ch2, res, m) )
            
        return R
Exemple #2
0
def SiegelModularFormG2FourierExpansionRing(K, with_character=False):

    if with_character:
        raise NotImplementedError

        #R = EquivariantMonoidPowerSeriesRing(
        #     SiegelModularFormG2Indices_discriminant_xreduce(),
        #     GL2CharacterMonoid(K),
        #     TrivialRepresentation("GL(2,ZZ)", K) )
        # Characters in GL2CharacterMonoid should accept (det, sgn)
        #R._set_reduction_function(sreduce_GL)

        #if K is ZZ :
        #    R._set_multiply_function(mult_coeff_int_character)
        #else :
        #    R._set_multiply_function(mult_coeff_generic_character)
    else:
        R = EquivariantMonoidPowerSeriesRing(
            SiegelModularFormG2Indices_discriminant_xreduce(),
            TrivialCharacterMonoid("GL(2,ZZ)", ZZ),
            TrivialRepresentation("GL(2,ZZ)", K))

        R._set_reduction_function(reduce_GL)

        if K is ZZ:
            R._set_multiply_function(mult_coeff_int_without_character)
        else:
            R._set_multiply_function(mult_coeff_generic_without_character)

    return R
    def __init__(self, O, C, R) :
        r"""
        INPUT:
            - `O` -- A monoid with an action of a group; As implemented in
                     :class:~`fourier_expansion_framework.monoidpowerseries.NNMonoid`.
            - `C` -- A monoid of characters; As implemented in ::class:~`fourier_expansion_framework.monoidpowerseries.CharacterMonoid_class`.
            - `R` -- A representation on a module; As implemented
                     in :class:~`fourier_expansion_framework.monoidpowerseries.TrivialRepresentation`.

        EXAMPLES::
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids import *
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_module import EquivariantMonoidPowerSeriesModule_generic
            sage: emps = EquivariantMonoidPowerSeriesModule_generic(NNMonoid(True), TrivialCharacterMonoid("1", QQ), TrivialRepresentation("1", FreeModule(QQ, 2))) # indirect doctest
            sage: emps = EquivariantMonoidPowerSeriesModule_generic(NNMonoid(True), TrivialCharacterMonoid("1", ZZ), TrivialRepresentation("1", FreeModule(ZZ, 2))) # indirect doctest
            sage: emps.base_ring()
            Ring of equivariant monoid power series over NN
            sage: (1 / 2) * emps.0
            Equivariant monoid power series in Module of equivariant monoid power series over NN
        """
        
        # If the representation O respects the monoid structure of S
        # the base ring should be the associated power series ring.
        if O.is_monoid_action() :
            Module.__init__(self, EquivariantMonoidPowerSeriesRing(O,C,TrivialRepresentation(R.group(), R.base_ring())))
        else :
            Module.__init__(self, R.codomain())
        EquivariantMonoidPowerSeriesAmbient_abstract.__init__(self, O, C, R)        
        
        self.__coeff_gens = \
          [self._element_class( self,
            dict([( C.one_element(), dict([(self.monoid().zero_element(), a)]) )]),
            self.monoid().filter_all() )
           for a in self.coefficient_domain().gens()]
Exemple #4
0
def SiegelModularFormG4FourierExpansionRing(K, genus):

    R = EquivariantMonoidPowerSeriesRing(
        SiegelModularFormG4Indices_diagonal_lll(genus),
        TrivialCharacterMonoid("GL(%s,ZZ)" % (genus, ), ZZ),
        TrivialRepresentation("GL(%s,ZZ)" % (genus, ), K))

    return R
Exemple #5
0
def TestExpansionAmbient(A):
    """
        TESTS::
            sage: from psage.modform.fourier_expansion_framework.modularforms.modularform_testtype import *
            sage: ea = TestExpansionAmbient(QQ)    
    """
    return EquivariantMonoidPowerSeriesRing(NNMonoid(),
                                            TrivialCharacterMonoid("1", ZZ),
                                            TrivialRepresentation("1", A))
Exemple #6
0
def TestExpansionAmbient_vv(A):
    """
        TESTS::
            sage: from psage.modform.fourier_expansion_framework.modularforms.modularform_testtype import *
            sage: ea = TestExpansionAmbient_vv(QQ)    
    """
    return EquivariantMonoidPowerSeriesModule(
        NNMonoid(), TrivialCharacterMonoid("1", ZZ),
        TrivialRepresentation(
            "1", FreeModule(A, ModularFormTestType_vectorvalued.rank)))
def JacobiFormD1FourierExpansionModule(K, k, L, weak_forms=False):
    r"""
        INPUT:

            - `L`                -- The index of the associated Jacobi forms.
            - ``weak_forms``     -- If ``False`` the condition `|L| L^{-1} r**2 <= 4 |L| n`
                                    will be imposed.
        """
    indices = JacobiFormD1Indices(L, weak_forms=weak_forms)
    return EquivariantMonoidPowerSeriesModule(
        indices,
        JacobiFormD1FourierExpansionCharacterMonoid(L.matrix().nrows()),
        TrivialRepresentation(indices.group(), K))
def ParamodularFormD2FourierExpansionRing(K, level) :
    
    R = EquivariantMonoidPowerSeriesRing(
         ParamodularFormD2Indices_discriminant(level),
         TrivialCharacterMonoid("GL(2,ZZ)_0 (%s)" % (level,), ZZ),
         TrivialRepresentation("GL(2,ZZ)_0 (%s)" % (level,), K) )

#    R._set_reduction_function(reduce_GL)

#    if K is ZZ :
#        R._set_multiply_function(mult_coeff_int)
#    else :
#        R._set_multiply_function(mult_coeff_generic)
        
    return R
def JacobiFormD1NNFourierExpansionModule(K, m, weak_forms=False):
    r"""
        INPUT:

        - `m`                -- The index of the associated Jacobi forms.
            
        - `weak_forms`       -- If True the weak condition
                                `r^2 \le 4 m n`n will be imposed on the
                                indices.
        """
    R = EquivariantMonoidPowerSeriesModule(
        JacobiFormD1NNIndices(m, weak_forms=weak_forms),
        JacobiFormD1FourierExpansionCharacterMonoid(),
        TrivialRepresentation("\Gamma^J_{1, M\infty}", K))

    return R