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