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 - selfis 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 - selfis 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 - selfis 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