Puiseux Series Ring#
The ring of Puiseux series.
AUTHORS:
Chris Swierczewski 2016: initial version on https://github.com/abelfunctions/abelfunctions/tree/master/abelfunctions
Frédéric Chapoton 2016: integration of code
Travis Scrimshaw, Sebastian Oehms 2019-2020: basic improvements and completions
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