Exemplo n.º 1
0
    def __init__(self, A, S) :
        r"""
        INPUT:
            - `A` -- A ring.
            - `S` -- A monoid as implemented in :class:~`fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids.NNMonoid`.

        TESTS::
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids import *
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_ring import MonoidPowerSeriesRing_generic
            sage: mps = MonoidPowerSeriesRing_generic(QQ, NNMonoid(False))
            sage: mps = MonoidPowerSeriesRing_generic(ZZ, NNMonoid(False))
            sage: mps.base_ring()
            Integer Ring
            sage: (1 / 2) * mps.0
            Monoid power series in Ring of monoid power series over NN
        """
        Algebra.__init__(self, A)        
        MonoidPowerSeriesAmbient_abstract.__init__(self, A, S)

        self.__monoid_gens = \
          [ self._element_class(self, dict([(s, A.one_element())]),
                                    self.monoid().filter_all() )
            for s in S.gens() ]
    
        from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_functor import MonoidPowerSeriesBaseRingInjection

        self._populate_coercion_lists_(
          coerce_list = [MonoidPowerSeriesBaseRingInjection(self.base_ring(), self)] + \
                        ([S] if isinstance(S, Parent) else []) )
    def _element_constructor_(self, x) :
        """
        TESTS::
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids import *
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_ring import MonoidPowerSeriesRing_generic
            sage: mps = MonoidPowerSeriesRing_generic(QQ, NNMonoid(False))
            sage: h = mps(1) # indirect doctest
            sage: h = mps(mps.monoid().zero_element())
            sage: h = mps.zero_element()
            sage: K.<rho> = CyclotomicField(6)
            sage: mps = MonoidPowerSeriesRing_generic(K, NNMonoid(False))
            sage: h = mps(rho)
            sage: h = mps(1)
        """
        if isinstance(x, int) :
            x = Integer(x)
            
        if isinstance(x, Element) :
            P = x.parent()

            if P is self.coefficient_domain() :
                return self._element_class( self, {self.monoid().zero_element(): x},
                                                self.monoid().filter_all() )
            elif self.coefficient_domain().has_coerce_map_from(P) :
                return self._element_class( self, {self.monoid().zero_element(): self.coefficient_domain()(x)},
                                                self.monoid().filter_all() )
            elif P is self.monoid() :
                return self._element_class( self, {x: self.base_ring().one_element},
                                                self.monoid().filter_all() )
                
        return MonoidPowerSeriesAmbient_abstract._element_constructor_(self, x)
Exemplo n.º 3
0
    def _element_constructor_(self, x) :
        r"""
        TESTS::
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids import *
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_ring import MonoidPowerSeriesRing_generic
            sage: mps = MonoidPowerSeriesRing_generic(QQ, NNMonoid(False))
            sage: h = mps(1) # indirect doctest
            sage: h = mps(mps.monoid().zero_element())
            sage: h = mps.zero_element()
            sage: K.<rho> = CyclotomicField(6)
            sage: mps = MonoidPowerSeriesRing_generic(K, NNMonoid(False))
            sage: h = mps(rho)
            sage: h = mps(1)
        """
        if isinstance(x, int) :
            x = Integer(x)
            
        if isinstance(x, Element) :
            P = x.parent()

            if P is self.coefficient_domain() :
                return self._element_class( self, {self.monoid().zero_element(): x},
                                                self.monoid().filter_all() )
            elif self.coefficient_domain().has_coerce_map_from(P) :
                return self._element_class( self, {self.monoid().zero_element(): self.coefficient_domain()(x)},
                                                self.monoid().filter_all() )
            elif P is self.monoid() :
                return self._element_class( self, {x: self.base_ring().one_element},
                                                self.monoid().filter_all() )
                
        return MonoidPowerSeriesAmbient_abstract._element_constructor_(self, x)
    def __init__(self, A, S) :
        """
        INPUT:
            - `A` -- A module.
            - `S` -- A monoid as implemented in :class:~`fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids.NNMonoid`.

        TESTS::
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids import *
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_module import MonoidPowerSeriesModule_generic
            sage: mps = MonoidPowerSeriesModule_generic(FreeModule(QQ,2), NNMonoid(False))
        """       
        Module.__init__(self, MonoidPowerSeriesRing(A.base_ring(), S))
        MonoidPowerSeriesAmbient_abstract.__init__(self, A, S)
        
        self.__coeff_gens = \
          [ self._element_class(self, dict([(S.zero_element(), a)]),
                                    self.monoid().filter_all() )
            for a in A.gens() ]
Exemplo n.º 5
0
    def __init__(self, A, S) :
        r"""
        INPUT:
            - `A` -- A module.
            - `S` -- A monoid as implemented in :class:~`fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids.NNMonoid`.

        TESTS::
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids import *
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_module import MonoidPowerSeriesModule_generic
            sage: mps = MonoidPowerSeriesModule_generic(FreeModule(QQ,2), NNMonoid(False))
            sage: mps = MonoidPowerSeriesModule_generic(FreeModule(ZZ,2), NNMonoid(False))
            sage: mps.base_ring()
            Ring of monoid power series over NN
            sage: (1 / 2) * mps.0
            Monoid power series in Module of monoid power series over NN
        """
        Module.__init__(self, MonoidPowerSeriesRing(A.base_ring(), S))
        MonoidPowerSeriesAmbient_abstract.__init__(self, A, S)
        
        self.__coeff_gens = \
          [ self._element_class(self, dict([(S.zero_element(), a)]),
                                    self.monoid().filter_all() )
            for a in A.gens() ]
    def _element_constructor_(self, x) :
        """
        TESTS::
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids import *
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_module import MonoidPowerSeriesModule_generic
            sage: mps = MonoidPowerSeriesModule_generic(FreeModule(QQ,2), NNMonoid(False))
            sage: h = mps(0) # indirect doctest
            sage: h = mps(int(0)) # indirect doctest
        """
        if isinstance(x, int) and x == 0 :
            return self._element_class( self, dict(),
                        self.monoid().filter_all() )
        if isinstance(x, Element) and x.is_zero() :
            P = x.parent()

            if self.base_ring().base_ring().has_coerce_map_from(P) :
                return self._element_class( self, dict(),
                    self.monoid().filter_all() )
    
        return MonoidPowerSeriesAmbient_abstract._element_constructor_(self, x)
Exemplo n.º 7
0
    def _element_constructor_(self, x) :
        r"""
        TESTS::
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids import *
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_module import MonoidPowerSeriesModule_generic
            sage: mps = MonoidPowerSeriesModule_generic(FreeModule(QQ,2), NNMonoid(False))
            sage: h = mps(0) # indirect doctest
            sage: h = mps(int(0)) # indirect doctest
        """
        if isinstance(x, int) and x == 0 :
            return self._element_class( self, dict(),
                        self.monoid().filter_all() )
        if isinstance(x, Element) and x.is_zero() :
            P = x.parent()

            if self.base_ring().base_ring().has_coerce_map_from(P) :
                return self._element_class( self, dict(),
                    self.monoid().filter_all() )
    
        return MonoidPowerSeriesAmbient_abstract._element_constructor_(self, x)