def __init__(self, sets, category, **kwds): r""" See :class:`GenericProduct` for details. TESTS:: sage: from sage.rings.asymptotic.growth_group import GrowthGroup sage: GrowthGroup('x^ZZ * y^ZZ') # indirect doctest Growth Group x^ZZ * y^ZZ Check :trac:`26452`:: sage: from sage.rings.asymptotic.growth_group import MonomialGrowthGroup sage: R = QQ.extension(x^2+1, 'i') sage: P = MonomialGrowthGroup(R, 'w') sage: L = MonomialGrowthGroup(ZZ, 'log(w)') sage: cartesian_product([P, L]) Growth Group w^(Number Field in i with defining polynomial x^2 + 1) * log(w)^ZZ """ order = kwds.pop('order') CartesianProductPoset.__init__(self, sets, category, order, **kwds) vars = sum(iter(factor.variable_names() for factor in self.cartesian_factors()), tuple()) from itertools import groupby from .growth_group import Variable Vars = Variable(tuple(v for v, _ in groupby(vars)), repr=self._repr_short_()) GenericGrowthGroup.__init__(self, sets[0], Vars, self.category(), **kwds)
def _coerce_map_from_(self, S): r""" Return whether ``S`` coerces into this growth group. INPUT: - ``S`` -- a parent. OUTPUT: A boolean. TESTS:: sage: from sage.rings.asymptotic.growth_group import GrowthGroup sage: A = GrowthGroup('QQ^x * x^QQ') sage: B = GrowthGroup('QQ^x * x^ZZ') sage: A.has_coerce_map_from(B) # indirect doctest True sage: B.has_coerce_map_from(A) # indirect doctest False """ if CartesianProductPoset.has_coerce_map_from(self, S): return True elif isinstance(S, GenericProduct): factors = S.cartesian_factors() else: factors = (S, ) if all( any( g.has_coerce_map_from(f) for g in self.cartesian_factors()) for f in factors): return True
def _coerce_map_from_(self, S): r""" Return whether ``S`` coerces into this growth group. INPUT: - ``S`` -- a parent. OUTPUT: A boolean. TESTS:: sage: from sage.rings.asymptotic.growth_group import GrowthGroup sage: A = GrowthGroup('QQ^x * x^QQ') sage: B = GrowthGroup('QQ^x * x^ZZ') sage: A.has_coerce_map_from(B) # indirect doctest True sage: B.has_coerce_map_from(A) # indirect doctest False """ if CartesianProductPoset.has_coerce_map_from(self, S): return True elif isinstance(S, GenericProduct): factors = S.cartesian_factors() else: factors = (S,) if all(any(g.has_coerce_map_from(f) for g in self.cartesian_factors()) for f in factors): return True
def __init__(self, sets, category, **kwds): r""" See :class:`GenericProduct` for details. TESTS:: sage: from sage.rings.asymptotic.growth_group import GrowthGroup sage: GrowthGroup('x^ZZ * y^ZZ') # indirect doctest Growth Group x^ZZ * y^ZZ """ order = kwds.pop("order") CartesianProductPoset.__init__(self, sets, category, order, **kwds) vars = sum(iter(factor.variable_names() for factor in self.cartesian_factors()), tuple()) from itertools import groupby from growth_group import Variable Vars = Variable(tuple(v for v, _ in groupby(vars)), repr=self._repr_short_()) GenericGrowthGroup.__init__(self, sets[0], Vars, self.category(), **kwds)
def __init__(self, sets, category, **kwds): r""" See :class:`GenericProduct` for details. TESTS:: sage: from sage.rings.asymptotic.growth_group import GrowthGroup sage: GrowthGroup('x^ZZ * y^ZZ') # indirect doctest Growth Group x^ZZ * y^ZZ """ order = kwds.pop('order') CartesianProductPoset.__init__(self, sets, category, order, **kwds) vars = sum(iter(factor.variable_names() for factor in self.cartesian_factors()), tuple()) from itertools import groupby from .growth_group import Variable Vars = Variable(tuple(v for v, _ in groupby(vars)), repr=self._repr_short_()) GenericGrowthGroup.__init__(self, sets[0], Vars, self.category(), **kwds)