Skip to content

Lazy power series are created with incorrect order #10084

@haraldschilly

Description

@haraldschilly

Reported by the "Report a Problem" Form:

When typing the following:

S = LazyPowerSeriesRing(ZZ)
one = S(0) + S(1)
one.order

I get a "Infinite series order" message. When asking for

one.coefficients(3)

I get "[0, 0, 0]".

Looking into the code sage/combinat/species/series.py, the _add_ method calls the _new method to create the sum series. Trying:

zero = S(0)
test_series = zero._new(lambda ao: Stream(const=1), lambda: 0)
test_series.order
test_series.coefficients(3)

I again get "Infinite series order" and "[0, 0, 0]".

As I understand it, the _new() method calls the init() method of LazyPowerSeries in the line:

new_fps = self.__class__(parent, stream=None, order=unk, aorder=self.aorder, aorder_changed=True, is_initialized=False)

If the value self.aorder is inf, this puts new_fps.aorder to inf, which (in the init() code), also puts new_fps.order to inf, which makes Sage think that the series has infinite order.

Changing the argument aorder=self.aorder to aorder=unk in the above line solved the problem.
The sum of S(0) and S(1) should have order zero, and its first three coefficients should be [1, 0, 0].

The series test_series should also have order zero, and its coefficients should be [1, 1, 1].

CC: [email protected] @mwhansen @mantepse

Component: combinatorics

Keywords: LazyPowerSeries

Stopgaps: todo

Reviewer: Travis Scrimshaw

Issue created by migration from https://trac.sagemath.org/ticket/10084

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions