How can I find out what causes this?  How can I find out where this action 
is defined?

I played around a little, but without any insights.  It seems that most of 
the time, the coercion tries to do the embedding in the base ring, but not 
always.  The MatrixSpace seems to be another exception.

I admit, it does look odd to me, because we usually treat variable names as 
the distinguishing feature of polynomial rings, don't we?

Martin

def test(R):
    """
    sage: test(QQ)
    z^2
    sage: test(ZZ)
    z^2
    sage: test(PolynomialRing(ZZ, "a"))
    z^2
    sage: test(PolynomialRing(ZZ, "a, b"))
    z^2
    sage: test(SymmetricFunctions(QQ).s())
    s[]*z^2

    sage: test(MatrixSpace(QQ, 2))
    [z 0]
    [0 z]*z
    sage: test(PolynomialRing(ZZ, "z"))
    z*z
    sage: test(InfinitePolynomialRing(QQ, "a"))
    z*z

    """
    P = PolynomialRing(R, names="z")
    p = P.gen()
    Q = PolynomialRing(QQ, names="z")
    q = Q.gen()
    return p*q

On Saturday 13 January 2024 at 00:30:02 UTC+1 Nils Bruin wrote:

> This might be at fault:
>
> sage: coercion_model.analyse(q,e)
> (['Action discovered.',
>   Left scalar multiplication by Multivariate Polynomial Ring in z, q over 
> Rational Field on Multivariate Polynomial Ring in z, q over Infinite 
> polynomial ring in F over Rational Field],
>  Multivariate Polynomial Ring in z, q over Infinite polynomial ring in F 
> over Multivariate Polynomial Ring in z, q over Rational Field)
>
> it looks like somehow an action is found before "common parent" 
> multiplication is used.
>
>
>
> On Friday 12 January 2024 at 17:24:00 UTC-5 Martin R wrote:
>
> I am not quite sure I understand how this works / what is used:
>
> sage: pushout(e.parent(), z.parent())
> Multivariate Polynomial Ring in z, q over Infinite polynomial ring in F 
> over Multivariate Polynomial Ring in z, q over Rational Field
> sage: coercion_model.common_parent(z, e)
> Multivariate Polynomial Ring in z, q over Infinite polynomial ring in F 
> over Rational Field
>
> Martin
> On Friday 12 January 2024 at 22:47:49 UTC+1 Martin R wrote:
>
> Hm, that's somewhat unfortunate - I don't see how to work around it.  I 
> guess I would have to force all elements to be in P (using the notation of 
> the example), but this is, I think, not possible.
>
> Do you know where this behaviour is determined?
>
> On Friday 12 January 2024 at 22:09:41 UTC+1 Nils Bruin wrote:
>
> On Friday 12 January 2024 at 14:30:06 UTC-5 Martin R wrote:
>
> I made a tiny bit of progress, and now face the following problem:
>
> sage: I.<F> = InfinitePolynomialRing(QQ) 
> sage: P.<z, q> = I[] 
> sage: e = z*q 
> sage: Q.<z, q> = QQ[] 
> sage: z*e
> z*z*q 
>
> Is this correct behaviour?
>
> I don't think it's desperately wrong. To sage, these structures look like:
>
> sage: P.construction()
> (MPoly[z,q], Infinite polynomial ring in F over Rational Field)
> sage: Q.construction()
> (MPoly[z,q], Rational Field)
> sage: parent(z*e).construction()
> (MPoly[z,q],
>  Infinite polynomial ring in F over Multivariate Polynomial Ring in z, q 
> over Rational Field)
>
> Note that an "infinite polynomial ring" is a different object than an 
> MPoly, and obviously it has different rules/priorities for finding common 
> overstructures.
>  
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/004cf0de-0f21-4a9f-80bc-0d029e9e8f5bn%40googlegroups.com.

Reply via email to