# Puiseux Series Ring#

The ring of Puiseux series.

AUTHORS:

REFERENCES:

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

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)
y^(-5/6) + y^(4/3) + O(y^2)
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)
y^(-5/6) + y^(4/3) + O(y^2)
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
```