Hi Robert,

On 14 Mrz., 23:29, Robert Bradshaw <rober...@math.washington.edu>
wrote:
> > Yes, but the fact that f(2,3) has a different parent than f(x=2,y=3)
> > has a high probability of being troublesome.
>
> Given f in R[x,y], I think f(x=a, y=b) should do exactly the same
> thing as f(a,b). The parent should be the same as R.base_ring()(0) + a
> + b.

+1. I think that f.__call__(*args,**kwds) of a polynomial f in
variables x,y,z should behave like a Python function of signature
f(x,y,z,**kwds). In particular, f(1,2,z=3, foo='bar') should do
exactly the same as f(1,2,3,foo='bar').

Note that currently the situation is not very consistent.

On the one hand, we already have the behaviour that you wish:
  sage: R.<x,y> = ZZ[]
  sage: P.<a,b> = QQ[]
  sage: f = x+y
  sage: parent(f(a,b))
  Multivariate Polynomial Ring in a, b over Rational Field
  sage: parent(f(x=a,y=b))
  Multivariate Polynomial Ring in a, b over Rational Field
  sage: parent(f(1,b))
  Multivariate Polynomial Ring in a, b over Rational Field

But on the other hand, we have the inconsistency that started this
thread:
  sage: parent(f(x=1,y=2))
  Multivariate Polynomial Ring in x, y over Integer Ring
  sage: parent(f(1,2))
  Integer Ring

> The difficult case is what to do for f(x=5). Should that be the same
> as f(x=5, y=y) or a univariate polynomial?

I tend to believe that if you evaluate k variables of a polynomial
with n variables then the result should be a polynomial with n-k
variables. That having said, I wonder whether one should really make a
special case for k==n: Should the result be an element of the base
ring, or should it actually be a polynomial in zero variables?

Cheers,
Simon

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to