>> How do you generally use the matrix after you call change_ring()?  It
>> seems like the normal thing to do would be to change the matrix in
>> some
>> way.  In that case, it is a huge bonus to have consistency between
>> returning the original object and returning a copy.
>
> I usually use change_ring on polynomials, after which I extract
> coefficients/find roots/factor/etc. It's also nice to change the ring
> to be over a fraction field (i.e. M.change_ring(M.base_ring
> ().fraction_field())) before taking the echelon form.
>

Yeah, I can see that it makes sense there (because you're calling to
something that will give you back a new matrix regardless). The use
case I had in mind when I voted +1 was that I have a matrix over a
number field or finite field, and I want to play with it in an
extension where some polynomial has a root. So change ring to the
extension, and manipulate the result -- here I think it's more
surprising when the behavior is different when the polynomial does or
doesn't have a root.

I don't think that one choice is clearly better than the other -- I
vote for adding a flag to change_ring, called copy. Now, of course,
what should the default be? I (obviously) vote for True; my reasoning
is this: if you wanted copy=False, and you get copy=True, then all you
get is a slowdown; if you wanted copy=True, and you get copy=False,
then you have possibly hard to find bugs. So the principle of least
surprise says we want copy=True, I think.

> In general I view X.change_ring(R) as shorthand for X.parent
> ().change_ring(R)(X), and given a parent R, R(x) generally returns x
> if x is already an element of R.
>

That's interesting -- I actually think of it as "tensor X.parent()
with R, and take the natural image of X in that tensor product"
(because I think of change_ring as a shorthand for base_change on the
parent). So I'd generally expect to get a (naturally isomorphic) copy
back.

-cc

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

Reply via email to