Lazy Series Rings#
We provide lazy implementations for various \(\NN\)-graded rings.
The ring of lazy Laurent series. |
|
The ring of (possibly multivariate) lazy Taylor series. |
|
The completion of a graded algebra consisting of formal series. |
|
The ring of (possibly multivariate) lazy symmetric functions. |
|
The ring of lazy Dirichlet series. |
AUTHORS:
Kwankyu Lee (2019-02-24): initial version
Tejasvi Chebrolu, Martin Rubey, Travis Scrimshaw (2021-08): refactored and expanded functionality
- class sage.rings.lazy_series_ring.LazyCompletionGradedAlgebra(basis, sparse=True, category=None)#
Bases:
LazySeriesRing
The completion of a graded algebra consisting of formal series.
For a graded algebra \(A\), we can form a completion of \(A\) consisting of all formal series of \(A\) such that each homogeneous component is a finite linear combination of basis elements of \(A\).
INPUT:
basis
– a graded algebranames
– name(s) of the alphabetssparse
– (default:True
) whether we use a sparse or a dense representation
EXAMPLES:
sage: NCSF = NonCommutativeSymmetricFunctions(QQ) sage: S = NCSF.Complete() sage: L = S.formal_series_ring() sage: L Lazy completion of Non-Commutative Symmetric Functions over the Rational Field in the Complete basis sage: f = 1 / (1 - L(S[1])) sage: f S[] + S[1] + (S[1,1]) + (S[1,1,1]) + (S[1,1,1,1]) + (S[1,1,1,1,1]) + (S[1,1,1,1,1,1]) + O^7 sage: g = 1 / (1 - L(S[2])) sage: g S[] + S[2] + (S[2,2]) + (S[2,2,2]) + O^7 sage: f * g S[] + S[1] + (S[1,1]+S[2]) + (S[1,1,1]+S[1,2]) + (S[1,1,1,1]+S[1,1,2]+S[2,2]) + (S[1,1,1,1,1]+S[1,1,1,2]+S[1,2,2]) + (S[1,1,1,1,1,1]+S[1,1,1,1,2]+S[1,1,2,2]+S[2,2,2]) + O^7 sage: g * f S[] + S[1] + (S[1,1]+S[2]) + (S[1,1,1]+S[2,1]) + (S[1,1,1,1]+S[2,1,1]+S[2,2]) + (S[1,1,1,1,1]+S[2,1,1,1]+S[2,2,1]) + (S[1,1,1,1,1,1]+S[2,1,1,1,1]+S[2,2,1,1]+S[2,2,2]) + O^7 sage: f * g - g * f (S[1,2]-S[2,1]) + (S[1,1,2]-S[2,1,1]) + (S[1,1,1,2]+S[1,2,2]-S[2,1,1,1]-S[2,2,1]) + (S[1,1,1,1,2]+S[1,1,2,2]-S[2,1,1,1,1]-S[2,2,1,1]) + O^7
- Element#
alias of
LazyCompletionGradedAlgebraElement
- some_elements()#
Return a list of elements of
self
.EXAMPLES:
sage: m = SymmetricFunctions(GF(5)).m() sage: L = LazySymmetricFunctions(m) sage: L.some_elements()[:5] [0, m[], 2*m[] + 2*m[1] + 3*m[2], 2*m[1] + 3*m[2], 3*m[] + 2*m[1] + (m[1,1]+m[2]) + (2*m[1,1,1]+m[3]) + (2*m[1,1,1,1]+4*m[2,1,1]+2*m[2,2]) + (3*m[2,1,1,1]+3*m[3,1,1]+4*m[3,2]+m[5]) + (2*m[2,2,1,1]+m[2,2,2]+2*m[3,2,1]+2*m[3,3]+m[4,1,1]+3*m[4,2]+4*m[5,1]+4*m[6]) + O^7] sage: NCSF = NonCommutativeSymmetricFunctions(QQ) sage: S = NCSF.Complete() sage: L = S.formal_series_ring() sage: L.some_elements()[:4] [0, S[], 2*S[] + 2*S[1] + (3*S[1,1]), 2*S[1] + (3*S[1,1])]
- class sage.rings.lazy_series_ring.LazyDirichletSeriesRing(base_ring, names, sparse=True, category=None)#
Bases:
LazySeriesRing
The ring of lazy Dirichlet series.
INPUT:
base_ring
– base ring of this Dirichlet series ringnames
– name of the generator of this Dirichlet series ringsparse
– (default:True
) whether this series is sparse or not
Unlike formal univariate Laurent/power series (over a field), the ring of formal Dirichlet series is not a Wikipedia article discrete_valuation_ring. On the other hand, it is a Wikipedia article local_ring. The unique maximal ideal consists of all non-invertible series, i.e., series with vanishing constant term.
Todo
According to the answers in https://mathoverflow.net/questions/5522/dirichlet-series-with-integer-coefficients-as-a-ufd, (which, in particular, references arXiv math/0105219) the ring of formal Dirichlet series is actually a Wikipedia article Unique_factorization_domain over \(\ZZ\).
Note
An interesting valuation is described in Emil Daniel Schwab; Gheorghe Silberberg A note on some discrete valuation rings of arithmetical functions, Archivum Mathematicum, Vol. 36 (2000), No. 2, 103-109, http://dml.cz/dmlcz/107723. Let \(J_k\) be the ideal of Dirichlet series whose coefficient \(f[n]\) of \(n^s\) vanishes if \(n\) has less than \(k\) prime factors, counting multiplicities. For any Dirichlet series \(f\), let \(D(f)\) be the largest integer \(k\) such that \(f\) is in \(J_k\). Then \(D\) is surjective, \(D(f g) = D(f) + D(g)\) for nonzero \(f\) and \(g\), and \(D(f + g) \geq \min(D(f), D(g))\) provided that \(f + g\) is nonzero.
For example, \(J_1\) are series with no constant term, and \(J_2\) are series such that \(f[1]\) and \(f[p]\) for prime \(p\) vanish.
Since this is a chain of increasing ideals, the ring of formal Dirichlet series is not a Wikipedia article Noetherian_ring.
Evidently, this valuation cannot be computed for a given series.
EXAMPLES:
sage: LazyDirichletSeriesRing(ZZ, 't') Lazy Dirichlet Series Ring in t over Integer Ring
The ideal generated by \(2^-s\) and \(3^-s\) is not principal:
sage: L = LazyDirichletSeriesRing(QQ, 's') sage: L in PrincipalIdealDomains False
- Element#
alias of
LazyDirichletSeries
- one()#
Return the constant series \(1\).
EXAMPLES:
sage: L = LazyDirichletSeriesRing(ZZ, 'z') sage: L.one() 1 sage: ~L.one() 1 + O(1/(8^z))
- some_elements()#
Return a list of elements of
self
.EXAMPLES:
sage: L = LazyDirichletSeriesRing(ZZ, 'z') sage: L.some_elements() [0, 1, 1/(4^z) + 1/(5^z) + 1/(6^z) + O(1/(7^z)), 1/(2^z) - 1/(3^z) + 2/4^z - 2/5^z + 3/6^z - 3/7^z + 4/8^z - 4/9^z, 1/(2^z) - 1/(3^z) + 2/4^z - 2/5^z + 3/6^z - 3/7^z + 4/8^z - 4/9^z + 1/(10^z) + 1/(11^z) + 1/(12^z) + O(1/(13^z)), 1 + 4/2^z + 9/3^z + 16/4^z + 25/5^z + 36/6^z + 49/7^z + O(1/(8^z))] sage: L = LazyDirichletSeriesRing(QQ, 'z') sage: L.some_elements() [0, 1, 1/2/4^z + 1/2/5^z + 1/2/6^z + O(1/(7^z)), 1/2 - 1/2/2^z + 2/3^z - 2/4^z + 1/(6^z) - 1/(7^z) + 42/8^z + 2/3/9^z, 1/2 - 1/2/2^z + 2/3^z - 2/4^z + 1/(6^z) - 1/(7^z) + 42/8^z + 2/3/9^z + 1/2/10^z + 1/2/11^z + 1/2/12^z + O(1/(13^z)), 1 + 4/2^z + 9/3^z + 16/4^z + 25/5^z + 36/6^z + 49/7^z + O(1/(8^z))]
- class sage.rings.lazy_series_ring.LazyLaurentSeriesRing(base_ring, names, sparse=True, category=None)#
Bases:
LazySeriesRing
The ring of lazy Laurent series.
The ring of Laurent series over a ring with the usual arithmetic where the coefficients are computed lazily.
INPUT:
base_ring
– base ringnames
– name of the generatorsparse
– (default:True
) whether the implementation of the series is sparse or not
EXAMPLES:
sage: L.<z> = LazyLaurentSeriesRing(QQ) sage: 1 / (1 - z) 1 + z + z^2 + O(z^3) sage: 1 / (1 - z) == 1 / (1 - z) True sage: L in Fields True
Lazy Laurent series ring over a finite field:
sage: L.<z> = LazyLaurentSeriesRing(GF(3)); L Lazy Laurent Series Ring in z over Finite Field of size 3 sage: e = 1 / (1 + z) sage: e.coefficient(100) 1 sage: e.coefficient(100).parent() Finite Field of size 3
Series can be defined by specifying a coefficient function and a valuation:
sage: R.<x,y> = QQ[] sage: L.<z> = LazyLaurentSeriesRing(R) sage: def coeff(n): ....: if n < 0: ....: return -2 + n ....: if n == 0: ....: return 6 ....: return x + y^n sage: f = L(coeff, valuation=-5) sage: f -7*z^-5 - 6*z^-4 - 5*z^-3 - 4*z^-2 - 3*z^-1 + 6 + (x + y)*z + O(z^2) sage: 1 / (1 - f) 1/7*z^5 - 6/49*z^6 + 1/343*z^7 + 8/2401*z^8 + 64/16807*z^9 + 17319/117649*z^10 + (1/49*x + 1/49*y - 180781/823543)*z^11 + O(z^12) sage: L(coeff, valuation=-3, degree=3, constant=x) -5*z^-3 - 4*z^-2 - 3*z^-1 + 6 + (x + y)*z + (y^2 + x)*z^2 + x*z^3 + x*z^4 + x*z^5 + O(z^6)
We can also specify a polynomial or the initial coefficients. Additionally, we may specify that all coefficients are equal to a given constant, beginning at a given degree:
sage: L([1, x, y, 0, x+y]) 1 + x*z + y*z^2 + (x + y)*z^4 sage: L([1, x, y, 0, x+y], constant=2) 1 + x*z + y*z^2 + (x + y)*z^4 + 2*z^5 + 2*z^6 + 2*z^7 + O(z^8) sage: L([1, x, y, 0, x+y], degree=7, constant=2) 1 + x*z + y*z^2 + (x + y)*z^4 + 2*z^7 + 2*z^8 + 2*z^9 + O(z^10) sage: L([1, x, y, 0, x+y], valuation=-2) z^-2 + x*z^-1 + y + (x + y)*z^2 sage: L([1, x, y, 0, x+y], valuation=-2, constant=3) z^-2 + x*z^-1 + y + (x + y)*z^2 + 3*z^3 + 3*z^4 + 3*z^5 + O(z^6) sage: L([1, x, y, 0, x+y], valuation=-2, degree=4, constant=3) z^-2 + x*z^-1 + y + (x + y)*z^2 + 3*z^4 + 3*z^5 + 3*z^6 + O(z^7)
Some additional examples over the integer ring:
sage: L.<z> = LazyLaurentSeriesRing(ZZ) sage: L in Fields False sage: 1 / (1 - 2*z)^3 1 + 6*z + 24*z^2 + 80*z^3 + 240*z^4 + 672*z^5 + 1792*z^6 + O(z^7) sage: R.<x> = LaurentPolynomialRing(ZZ) sage: L(x^-2 + 3 + x) z^-2 + 3 + z sage: L(x^-2 + 3 + x, valuation=-5, constant=2) z^-5 + 3*z^-3 + z^-2 + 2*z^-1 + 2 + 2*z + O(z^2) sage: L(x^-2 + 3 + x, valuation=-5, degree=0, constant=2) z^-5 + 3*z^-3 + z^-2 + 2 + 2*z + 2*z^2 + O(z^3)
We can truncate a series, shift its coefficients, or replace all coefficients beginning with a given degree by a constant:
sage: f = 1 / (z + z^2) sage: f z^-1 - 1 + z - z^2 + z^3 - z^4 + z^5 + O(z^6) sage: L(f, valuation=2) z^2 - z^3 + z^4 - z^5 + z^6 - z^7 + z^8 + O(z^9) sage: L(f, degree=3) z^-1 - 1 + z - z^2 sage: L(f, degree=3, constant=2) z^-1 - 1 + z - z^2 + 2*z^3 + 2*z^4 + 2*z^5 + O(z^6) sage: L(f, valuation=1, degree=4) z - z^2 + z^3 sage: L(f, valuation=1, degree=4, constant=5) z - z^2 + z^3 + 5*z^4 + 5*z^5 + 5*z^6 + O(z^7)
Power series can be defined recursively (see
sage.rings.lazy_series.LazyModuleElement.define()
for more examples):sage: L.<z> = LazyLaurentSeriesRing(ZZ) sage: s = L.undefined(valuation=0) sage: s.define(1 + z*s^2) sage: s 1 + z + 2*z^2 + 5*z^3 + 14*z^4 + 42*z^5 + 132*z^6 + O(z^7)
If the series is not specified by a finite number of initial coefficients and a constant for the remaining coefficients, then equality checking will depend on the coefficients which have already been computed. If this information is not enough to check that two series are different we raise an error:
sage: f = 1 / (z + z^2); f z^-1 - 1 + z - z^2 + z^3 - z^4 + z^5 + O(z^6) sage: f2 = f * 2 # currently no coefficients computed sage: f3 = f * 3 # currently no coefficients computed sage: f2 == f3 Traceback (most recent call last): ... ValueError: undecidable sage: f2 # computes some of the coefficients of f2 2*z^-1 - 2 + 2*z - 2*z^2 + 2*z^3 - 2*z^4 + 2*z^5 + O(z^6) sage: f3 # computes some of the coefficients of f3 3*z^-1 - 3 + 3*z - 3*z^2 + 3*z^3 - 3*z^4 + 3*z^5 + O(z^6) sage: f2 == f3 False
The implementation of the ring can be either be a sparse or a dense one. The default is a sparse implementation:
sage: L.<z> = LazyLaurentSeriesRing(ZZ) sage: L.is_sparse() True sage: L.<z> = LazyLaurentSeriesRing(ZZ, sparse=False) sage: L.is_sparse() False
- Element#
alias of
LazyLaurentSeries
- euler()#
Return the Euler function as an element of
self
.The Euler function is defined as
\[\phi(z) = (z; z)_{\infty} = \sum_{n=0}^{\infty} (-1)^n q^{(3n^2-n)/2}.\]EXAMPLES:
sage: L.<q> = LazyLaurentSeriesRing(ZZ) sage: phi = q.euler() sage: phi 1 - q - q^2 + q^5 + O(q^7)
We verify that \(1 / phi\) gives the generating function for all partitions:
sage: P = 1 / phi; P 1 + q + 2*q^2 + 3*q^3 + 5*q^4 + 7*q^5 + 11*q^6 + O(q^7) sage: P[:20] == [Partitions(n).cardinality() for n in range(20)] True
REFERENCES:
- gen(n=0)#
Return the
n
-th generator ofself
.EXAMPLES:
sage: L = LazyLaurentSeriesRing(ZZ, 'z') sage: L.gen() z sage: L.gen(3) Traceback (most recent call last): ... IndexError: there is only one generator
- gens()#
Return the generators of
self
.EXAMPLES:
sage: L.<z> = LazyLaurentSeriesRing(ZZ) sage: L.gens() (z,) sage: 1/(1 - z) 1 + z + z^2 + O(z^3)
- ngens()#
Return the number of generators of
self
.This is always 1.
EXAMPLES:
sage: L.<z> = LazyLaurentSeriesRing(ZZ) sage: L.ngens() 1
- q_pochhammer(q=None)#
Return the infinite
q
-Pochhammer symbol \((a; q)_{\infty}\), where \(a\) is the variable ofself
.This is also one version of the quantum dilogarithm or the \(q\)-Exponential function.
INPUT:
q
– (default: \(q \in \QQ(q)\)) the parameter \(q\)
EXAMPLES:
sage: q = ZZ['q'].fraction_field().gen() sage: L.<z> = LazyLaurentSeriesRing(q.parent()) sage: qpoch = L.q_pochhammer(q) sage: qpoch 1 + (-1/(-q + 1))*z + (q/(q^3 - q^2 - q + 1))*z^2 + (-q^3/(-q^6 + q^5 + q^4 - q^2 - q + 1))*z^3 + (q^6/(q^10 - q^9 - q^8 + 2*q^5 - q^2 - q + 1))*z^4 + (-q^10/(-q^15 + q^14 + q^13 - q^10 - q^9 - q^8 + q^7 + q^6 + q^5 - q^2 - q + 1))*z^5 + (q^15/(q^21 - q^20 - q^19 + q^16 + 2*q^14 - q^12 - q^11 - q^10 - q^9 + 2*q^7 + q^5 - q^2 - q + 1))*z^6 + O(z^7)
We show that \((z; q)_n = \frac{(z; q)_{\infty}}{(q^n z; q)_{\infty}}\):
sage: qpoch / qpoch(q*z) 1 - z + O(z^7) sage: qpoch / qpoch(q^2*z) 1 + (-q - 1)*z + q*z^2 + O(z^7) sage: qpoch / qpoch(q^3*z) 1 + (-q^2 - q - 1)*z + (q^3 + q^2 + q)*z^2 - q^3*z^3 + O(z^7) sage: qpoch / qpoch(q^4*z) 1 + (-q^3 - q^2 - q - 1)*z + (q^5 + q^4 + 2*q^3 + q^2 + q)*z^2 + (-q^6 - q^5 - q^4 - q^3)*z^3 + q^6*z^4 + O(z^7)
We can also construct part of Euler’s function:
sage: M.<a> = LazyLaurentSeriesRing(QQ) sage: phi = sum(qpoch[i](q=a)*a^i for i in range(10)) sage: phi[:20] == M.euler()[:20] True
REFERENCES:
- residue_field()#
Return the residue field of the ring of integers of
self
.EXAMPLES:
sage: L = LazyLaurentSeriesRing(QQ, 'z') sage: L.residue_field() Rational Field
- series(coefficient, valuation, degree=None, constant=None)#
Return a lazy Laurent series.
INPUT:
coefficient
– Python function that computes coefficients or a listvaluation
– integer; approximate valuation of the seriesdegree
– (optional) integerconstant
– (optional) an element of the base ring
Let the coefficient of index \(i\) mean the coefficient of the term of the series with exponent \(i\).
Python function
coefficient
returns the value of the coefficient of index \(i\) from input \(s\) and \(i\) where \(s\) is the series itself.Let
valuation
be \(n\). All coefficients of index below \(n\) are zero. Ifconstant
is not specified, then thecoefficient
function is responsible to compute the values of all coefficients of index \(\ge n\). Ifdegree
orconstant
is a pair \((c,m)\), then thecoefficient
function is responsible to compute the values of all coefficients of index \(\ge n\) and \(< m\) and all the coefficients of index \(\ge m\) is the constant \(c\).EXAMPLES:
sage: L = LazyLaurentSeriesRing(ZZ, 'z') sage: L.series(lambda s, i: i, 5, (1,10)) 5*z^5 + 6*z^6 + 7*z^7 + 8*z^8 + 9*z^9 + z^10 + z^11 + z^12 + O(z^13) sage: def g(s, i): ....: if i < 0: ....: return 1 ....: else: ....: return s.coefficient(i - 1) + i sage: e = L.series(g, -5); e z^-5 + z^-4 + z^-3 + z^-2 + z^-1 + 1 + 2*z + O(z^2) sage: f = e^-1; f z^5 - z^6 - z^11 + O(z^12) sage: f.coefficient(10) 0 sage: f.coefficient(20) 9 sage: f.coefficient(30) -219
Alternatively, the
coefficient
can be a list of elements of the base ring. Then these elements are read as coefficients of the terms of degrees starting from thevaluation
. In this case,constant
may be just an element of the base ring instead of a tuple or can be simply omitted if it is zero.sage: L = LazyLaurentSeriesRing(ZZ, 'z') sage: f = L.series([1,2,3,4], -5); f z^-5 + 2*z^-4 + 3*z^-3 + 4*z^-2 sage: g = L.series([1,3,5,7,9], 5, constant=-1); g z^5 + 3*z^6 + 5*z^7 + 7*z^8 + 9*z^9 - z^10 - z^11 - z^12 + O(z^13)
- some_elements()#
Return a list of elements of
self
.EXAMPLES:
sage: L = LazyLaurentSeriesRing(ZZ, 'z') sage: L.some_elements()[:7] [0, 1, z, -3*z^-4 + z^-3 - 12*z^-2 - 2*z^-1 - 10 - 8*z + z^2 + z^3, z^-2 + z^3 + z^4 + z^5 + O(z^6), -2*z^-3 - 2*z^-2 + 4*z^-1 + 11 - z - 34*z^2 - 31*z^3 + O(z^4), 4*z^-2 + z^-1 + z + 4*z^2 + 9*z^3 + 16*z^4 + O(z^5)] sage: L = LazyLaurentSeriesRing(GF(2), 'z') sage: L.some_elements()[:7] [0, 1, z, z^-4 + z^-3 + z^2 + z^3, z^-2, 1 + z + z^3 + z^4 + z^6 + O(z^7), z^-1 + z + z^3 + O(z^5)] sage: L = LazyLaurentSeriesRing(GF(3), 'z') sage: L.some_elements()[:7] [0, 1, z, z^-3 + z^-1 + 2 + z + z^2 + z^3, z^-2, z^-3 + z^-2 + z^-1 + 2 + 2*z + 2*z^2 + O(z^3), z^-2 + z^-1 + z + z^2 + z^4 + O(z^5)]
- uniformizer()#
Return a uniformizer of
self
..EXAMPLES:
sage: L = LazyLaurentSeriesRing(QQ, 'z') sage: L.uniformizer() z
- class sage.rings.lazy_series_ring.LazyPowerSeriesRing(base_ring, names, sparse=True, category=None)#
Bases:
LazySeriesRing
The ring of (possibly multivariate) lazy Taylor series.
INPUT:
base_ring
– base ring of this Taylor series ringnames
– name(s) of the generator of this Taylor series ringsparse
– (default:True
) whether this series is sparse or not
EXAMPLES:
sage: LazyPowerSeriesRing(ZZ, 't') Lazy Taylor Series Ring in t over Integer Ring sage: L.<x, y> = LazyPowerSeriesRing(QQ); L Multivariate Lazy Taylor Series Ring in x, y over Rational Field
- Element#
alias of
LazyPowerSeries
- fraction_field()#
Return the fraction field of
self
.If this is with a single variable over a field, then the fraction field is the field of (lazy) formal Laurent series.
Todo
Implement other fraction fields.
EXAMPLES:
sage: L.<x> = LazyPowerSeriesRing(QQ) sage: L.fraction_field() Lazy Laurent Series Ring in x over Rational Field
- gen(n=0)#
Return the
n
-th generator ofself
.EXAMPLES:
sage: L = LazyPowerSeriesRing(ZZ, 'z') sage: L.gen() z sage: L.gen(3) Traceback (most recent call last): ... IndexError: there is only one generator
- gens()#
Return the generators of
self
.EXAMPLES:
sage: L = LazyPowerSeriesRing(ZZ, 'x,y') sage: L.gens() (x, y)
- ngens()#
Return the number of generators of
self
.EXAMPLES:
sage: L.<z> = LazyPowerSeriesRing(ZZ) sage: L.ngens() 1
- residue_field()#
Return the residue field of the ring of integers of
self
.EXAMPLES:
sage: L = LazyPowerSeriesRing(QQ, 'x') sage: L.residue_field() Rational Field
- some_elements()#
Return a list of elements of
self
.EXAMPLES:
sage: L = LazyPowerSeriesRing(ZZ, 'z') sage: L.some_elements()[:6] [0, 1, z + z^2 + z^3 + O(z^4), -12 - 8*z + z^2 + z^3, 1 + z - 2*z^2 - 7*z^3 - z^4 + 20*z^5 + 23*z^6 + O(z^7), z + 4*z^2 + 9*z^3 + 16*z^4 + 25*z^5 + 36*z^6 + O(z^7)] sage: L = LazyPowerSeriesRing(GF(3)["q"], 'z') sage: L.some_elements()[:6] [0, 1, z + q*z^2 + q*z^3 + q*z^4 + O(z^5), z + z^2 + z^3, 1 + z + z^2 + 2*z^3 + 2*z^4 + 2*z^5 + O(z^6), z + z^2 + z^4 + z^5 + O(z^7)] sage: L = LazyPowerSeriesRing(GF(3), 'q, t') sage: L.some_elements()[:6] [0, 1, q, q + q^2 + q^3, 1 + q + q^2 + (-q^3) + (-q^4) + (-q^5) + (-q^6) + O(q,t)^7, 1 + (q+t) + (q^2-q*t+t^2) + (q^3+t^3) + (q^4+q^3*t+q*t^3+t^4) + (q^5-q^4*t+q^3*t^2+q^2*t^3-q*t^4+t^5) + (q^6-q^3*t^3+t^6) + O(q,t)^7]
- uniformizer()#
Return a uniformizer of
self
.EXAMPLES:
sage: L = LazyPowerSeriesRing(QQ, 'x') sage: L.uniformizer() x
- class sage.rings.lazy_series_ring.LazySeriesRing#
Bases:
UniqueRepresentation
,Parent
Abstract base class for lazy series.
- characteristic()#
Return the characteristic of this lazy power series ring, which is the same as the characteristic of its base ring.
EXAMPLES:
sage: L.<t> = LazyLaurentSeriesRing(ZZ) sage: L.characteristic() 0 sage: R.<w> = LazyLaurentSeriesRing(GF(11)); R Lazy Laurent Series Ring in w over Finite Field of size 11 sage: R.characteristic() 11 sage: R.<x, y> = LazyPowerSeriesRing(GF(7)); R Multivariate Lazy Taylor Series Ring in x, y over Finite Field of size 7 sage: R.characteristic() 7 sage: L = LazyDirichletSeriesRing(ZZ, "s") sage: L.characteristic() 0
- is_exact()#
Return if
self
is exact or not.EXAMPLES:
sage: L = LazyLaurentSeriesRing(ZZ, 'z') sage: L.is_exact() True sage: L = LazyLaurentSeriesRing(RR, 'z') sage: L.is_exact() False
- is_sparse()#
Return whether
self
is sparse or not.EXAMPLES:
sage: L = LazyLaurentSeriesRing(ZZ, 'z', sparse=False) sage: L.is_sparse() False sage: L = LazyLaurentSeriesRing(ZZ, 'z', sparse=True) sage: L.is_sparse() True
- one()#
Return the constant series \(1\).
EXAMPLES:
sage: L = LazyLaurentSeriesRing(ZZ, 'z') sage: L.one() 1 sage: L = LazyPowerSeriesRing(ZZ, 'z') sage: L.one() 1 sage: m = SymmetricFunctions(ZZ).m() sage: L = LazySymmetricFunctions(m) sage: L.one() m[]
- options = Current options for lazy series rings - constant_length: 3 - display_length: 7 - halting_precision: None#
- undefined(valuation=None)#
Return an uninitialized series.
INPUT:
valuation
– integer; a lower bound for the valuation of the series
Power series can be defined recursively (see
sage.rings.lazy_series.LazyModuleElement.define()
for more examples).EXAMPLES:
sage: L.<z> = LazyPowerSeriesRing(QQ) sage: s = L.undefined(1) sage: s.define(z + (s^2+s(z^2))/2) sage: s z + z^2 + z^3 + 2*z^4 + 3*z^5 + 6*z^6 + 11*z^7 + O(z^8)
Alternatively:
sage: L.<z> = LazyLaurentSeriesRing(QQ) sage: f = L(None, valuation=-1) sage: f.define(z^-1 + z^2*f^2) sage: f z^-1 + 1 + 2*z + 5*z^2 + 14*z^3 + 42*z^4 + 132*z^5 + O(z^6)
- unknown(valuation=None)#
Return an uninitialized series.
INPUT:
valuation
– integer; a lower bound for the valuation of the series
Power series can be defined recursively (see
sage.rings.lazy_series.LazyModuleElement.define()
for more examples).EXAMPLES:
sage: L.<z> = LazyPowerSeriesRing(QQ) sage: s = L.undefined(1) sage: s.define(z + (s^2+s(z^2))/2) sage: s z + z^2 + z^3 + 2*z^4 + 3*z^5 + 6*z^6 + 11*z^7 + O(z^8)
Alternatively:
sage: L.<z> = LazyLaurentSeriesRing(QQ) sage: f = L(None, valuation=-1) sage: f.define(z^-1 + z^2*f^2) sage: f z^-1 + 1 + 2*z + 5*z^2 + 14*z^3 + 42*z^4 + 132*z^5 + O(z^6)
- zero()#
Return the zero series.
EXAMPLES:
sage: L = LazyLaurentSeriesRing(ZZ, 'z') sage: L.zero() 0 sage: s = SymmetricFunctions(ZZ).s() sage: L = LazySymmetricFunctions(s) sage: L.zero() 0 sage: L = LazyDirichletSeriesRing(ZZ, 'z') sage: L.zero() 0 sage: L = LazyPowerSeriesRing(ZZ, 'z') sage: L.zero() 0
- class sage.rings.lazy_series_ring.LazySymmetricFunctions(basis, sparse=True, category=None)#
Bases:
LazyCompletionGradedAlgebra
The ring of lazy symmetric functions.
INPUT:
basis
– the ring of symmetric functionsnames
– name(s) of the alphabetssparse
– (default:True
) whether we use a sparse or a dense representation
EXAMPLES:
sage: s = SymmetricFunctions(ZZ).s() sage: LazySymmetricFunctions(s) Lazy completion of Symmetric Functions over Integer Ring in the Schur basis sage: m = SymmetricFunctions(ZZ).m() sage: LazySymmetricFunctions(tensor([s, m])) Lazy completion of Symmetric Functions over Integer Ring in the Schur basis # Symmetric Functions over Integer Ring in the monomial basis
- Element#
alias of
LazySymmetricFunction