Puiseux Series Ring

The ring of Puiseux series.

AUTHORS:

REFERENCES:

class sage.rings.puiseux_series_ring.PuiseuxSeriesRing(laurent_series)[source]

Bases: UniqueRepresentation, Parent

Rings of Puiseux series.

EXAMPLES:

sage: P = PuiseuxSeriesRing(QQ, 'y')
sage: y = P.gen()
sage: f = y**(4/3) + y**(-5/6); f
y^(-5/6) + y^(4/3)
sage: f.add_bigoh(2)
y^(-5/6) + y^(4/3) + O(y^2)
sage: f.add_bigoh(1)
y^(-5/6) + O(y)
>>> from sage.all import *
>>> P = PuiseuxSeriesRing(QQ, 'y')
>>> y = P.gen()
>>> f = y**(Integer(4)/Integer(3)) + y**(-Integer(5)/Integer(6)); f
y^(-5/6) + y^(4/3)
>>> f.add_bigoh(Integer(2))
y^(-5/6) + y^(4/3) + O(y^2)
>>> f.add_bigoh(Integer(1))
y^(-5/6) + O(y)
Element[source]

alias of PuiseuxSeries

base_extend(R)[source]

Extend the coefficients.

INPUT:

  • R – a ring

EXAMPLES:

sage: A = PuiseuxSeriesRing(ZZ, 'y')
sage: A.base_extend(QQ)
Puiseux Series Ring in y over Rational Field
>>> from sage.all import *
>>> A = PuiseuxSeriesRing(ZZ, 'y')
>>> A.base_extend(QQ)
Puiseux Series Ring in y over Rational Field
change_ring(R)[source]

Return a Puiseux series ring over another ring.

INPUT:

  • R – a ring

EXAMPLES:

sage: A = PuiseuxSeriesRing(ZZ, 'y')
sage: A.change_ring(QQ)
Puiseux Series Ring in y over Rational Field
>>> from sage.all import *
>>> A = PuiseuxSeriesRing(ZZ, 'y')
>>> A.change_ring(QQ)
Puiseux Series Ring in y over Rational Field
default_prec()[source]

Return the default precision of self.

EXAMPLES:

sage: A = PuiseuxSeriesRing(AA, 'z')                                        # needs sage.rings.number_field
sage: A.default_prec()                                                      # needs sage.rings.number_field
20
>>> from sage.all import *
>>> A = PuiseuxSeriesRing(AA, 'z')                                        # needs sage.rings.number_field
>>> A.default_prec()                                                      # needs sage.rings.number_field
20
fraction_field()[source]

Return the fraction field of this ring of Laurent series.

If the base ring is a field, then Puiseux series are already a field. If the base ring is a domain, then the Puiseux series over its fraction field is returned. Otherwise, raise a ValueError.

EXAMPLES:

sage: R = PuiseuxSeriesRing(ZZ, 't', 30).fraction_field()
sage: R
Puiseux Series Ring in t over Rational Field
sage: R.default_prec()
30

sage: PuiseuxSeriesRing(Zmod(4), 't').fraction_field()
Traceback (most recent call last):
...
ValueError: must be an integral domain
>>> from sage.all import *
>>> R = PuiseuxSeriesRing(ZZ, 't', Integer(30)).fraction_field()
>>> R
Puiseux Series Ring in t over Rational Field
>>> R.default_prec()
30

>>> PuiseuxSeriesRing(Zmod(Integer(4)), 't').fraction_field()
Traceback (most recent call last):
...
ValueError: must be an integral domain
gen(n=0)[source]

Return the generator of self.

EXAMPLES:

sage: A = PuiseuxSeriesRing(AA, 'z')                                        # needs sage.rings.number_field
sage: A.gen()                                                               # needs sage.rings.number_field
z
>>> from sage.all import *
>>> A = PuiseuxSeriesRing(AA, 'z')                                        # needs sage.rings.number_field
>>> A.gen()                                                               # needs sage.rings.number_field
z
gens()[source]

Return the tuple of generators.

EXAMPLES:

sage: A = PuiseuxSeriesRing(QQ, 'z')
sage: A.gens()
(z,)
>>> from sage.all import *
>>> A = PuiseuxSeriesRing(QQ, 'z')
>>> A.gens()
(z,)
is_dense()[source]

Return whether self is dense.

EXAMPLES:

sage: A = PuiseuxSeriesRing(ZZ, 'y')
sage: A.is_dense()
True
>>> from sage.all import *
>>> A = PuiseuxSeriesRing(ZZ, 'y')
>>> A.is_dense()
True
is_field(proof=True)[source]

Return whether self is a field.

A Puiseux series ring is a field if and only its base ring is a field.

EXAMPLES:

sage: A = PuiseuxSeriesRing(ZZ, 'y')
sage: A.is_field()
False
sage: A in Fields()
False
sage: B = A.change_ring(QQ); B.is_field()
True
sage: B in Fields()
True
>>> from sage.all import *
>>> A = PuiseuxSeriesRing(ZZ, 'y')
>>> A.is_field()
False
>>> A in Fields()
False
>>> B = A.change_ring(QQ); B.is_field()
True
>>> B in Fields()
True
is_sparse()[source]

Return whether self is sparse.

EXAMPLES:

sage: A = PuiseuxSeriesRing(ZZ, 'y')
sage: A.is_sparse()
False
>>> from sage.all import *
>>> A = PuiseuxSeriesRing(ZZ, 'y')
>>> A.is_sparse()
False
laurent_series_ring()[source]

Return the underlying Laurent series ring.

EXAMPLES:

sage: A = PuiseuxSeriesRing(AA, 'z')                                        # needs sage.rings.number_field
sage: A.laurent_series_ring()                                               # needs sage.rings.number_field
Laurent Series Ring in z over Algebraic Real Field
>>> from sage.all import *
>>> A = PuiseuxSeriesRing(AA, 'z')                                        # needs sage.rings.number_field
>>> A.laurent_series_ring()                                               # needs sage.rings.number_field
Laurent Series Ring in z over Algebraic Real Field
ngens()[source]

Return the number of generators of self, namely 1.

EXAMPLES:

sage: A = PuiseuxSeriesRing(AA, 'z')                                        # needs sage.rings.number_field
sage: A.ngens()                                                             # needs sage.rings.number_field
1
>>> from sage.all import *
>>> A = PuiseuxSeriesRing(AA, 'z')                                        # needs sage.rings.number_field
>>> A.ngens()                                                             # needs sage.rings.number_field
1
residue_field()[source]

Return the residue field of this Puiseux series field if it is a complete discrete valuation field (i.e. if the base ring is a field, in which case it is also the residue field).

EXAMPLES:

sage: R.<x> = PuiseuxSeriesRing(GF(17))
sage: R.residue_field()
Finite Field of size 17

sage: R.<x> = PuiseuxSeriesRing(ZZ)
sage: R.residue_field()
Traceback (most recent call last):
...
TypeError: the base ring is not a field
>>> from sage.all import *
>>> R = PuiseuxSeriesRing(GF(Integer(17)), names=('x',)); (x,) = R._first_ngens(1)
>>> R.residue_field()
Finite Field of size 17

>>> R = PuiseuxSeriesRing(ZZ, names=('x',)); (x,) = R._first_ngens(1)
>>> R.residue_field()
Traceback (most recent call last):
...
TypeError: the base ring is not a field
uniformizer()[source]

Return a uniformizer of this Puiseux series field if it is a discrete valuation field (i.e. if the base ring is actually a field). Otherwise, an error is raised.

EXAMPLES:

sage: R.<t> = PuiseuxSeriesRing(QQ)
sage: R.uniformizer()
t

sage: R.<t> = PuiseuxSeriesRing(ZZ)
sage: R.uniformizer()
Traceback (most recent call last):
...
TypeError: the base ring is not a field
>>> from sage.all import *
>>> R = PuiseuxSeriesRing(QQ, names=('t',)); (t,) = R._first_ngens(1)
>>> R.uniformizer()
t

>>> R = PuiseuxSeriesRing(ZZ, names=('t',)); (t,) = R._first_ngens(1)
>>> R.uniformizer()
Traceback (most recent call last):
...
TypeError: the base ring is not a field