Skip to content

silently wrong result in coercion between InfinitePolynomialRing and LazyPowerSeriesRing #37756

@mantepse

Description

@mantepse

Steps To Reproduce

sage: L.<x, y> = LazyPowerSeriesRing(QQ)
sage: R.<a> = InfinitePolynomialRing(QQ)
sage: o = L(0); r = a[0]
sage: o + r
y
sage: _.parent()
Infinite polynomial ring in a over Multivariate Lazy Taylor Series Ring in x, y over Rational Field

Expected Behavior

The result should either be a[0] (ideally with parent LazyPowerSeriesRing(InfinitePolynomialRing(QQ))) or an error should be raised.

Actual Behavior

A nonsense result,

Additional Information

The parent is explained as follows:

sage: cm.explain(o, r, op="add")
Coercion on left operand via
    Generic morphism:
      From: Multivariate Lazy Taylor Series Ring in x, y over Rational Field
      To:   Infinite polynomial ring in a over Multivariate Lazy Taylor Series Ring in x, y over Rational Field
Coercion on right operand via
    Coercion map:
      From: Infinite polynomial ring in a over Rational Field
      To:   Infinite polynomial ring in a over Multivariate Lazy Taylor Series Ring in x, y over Rational Field
Arithmetic performed after coercions.
Result lives in Infinite polynomial ring in a over Multivariate Lazy Taylor Series Ring in x, y over Rational Field
Infinite polynomial ring in a over Multivariate Lazy Taylor Series Ring in x, y over Rational Field

It is unclear to me, why we would want to have

sage: L.construction()[0]
Completion[('x', 'y'), prec=+Infinity]
sage: _.rank
4
sage: R.construction()[0]
InfPoly{[a], "lex", "dense"}
sage: _.rank
9.5

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions