# "Abstract" linear algebra

This is more of a general question about whether we can do with Sage what we normally do as mathematicians on paper and in our minds. For example, if I do

V = VectorSpace(QQ,4)

W = VectorSpace(QQ,4)

V==W

I get: True. This is quite disturbing - while V and W are isomorphic they should not be identical. As I understand it, a vectorspace over QQ for Sage is just QQ^4, that's it. In other words, the Linear algebra package, while excellent, is not really about vector spaces but rather about arrays of numbers.

Any thoughts on this desire of mine to have a genuine "coordinate-free" approach?

edit retag close merge delete

Sort by » oldest newest most voted

I like coordinate-free linear algebra, but your issue here may simply be that == is not the "is identical" operator. Consider the following examples:

sage: 3 == Mod(3,7)
True
sage: 3 == Mod(3,5)
True
sage: Mod(3,5) == Mod(3,7)
False
sage: Q = PolynomialRing(QQ,'t')
sage: 3 == Q(3)
True
sage: 3 in Q
True
sage: R = PolynomialRing(RR,'w,v')
sage: 3 == R(3)
True
sage: Q(3) == R(3)
False


Given this behavior, I don't find it particularly surprising that V == W returns True above!

Of course, id(V) == id(W) also returns True, which is a little more surprising (to me). And the free module documentation includes the following note:

Note: In Sage it is the case that there is only one dense and one sparse free ambient module of rank n over R.

So it seems it's not even _possible_ to make two separate copies of a free module with a given rank. That seems a little limiting, which is your original point, I guess :) Maybe it's more accurate to think of VectorSpace as short for "VectorSpaceWithCanonicalBasis".

more

Thanks for the comments! Given that they went to the trouble of implementing categories, this seems particularly strange. But I think this "problem" is common to all CAS.There must be a reference out there which works out the fundamentals for a CAS with higher fidelity.

This behavior of "VectorSpace" -- which is *just* shorthand for K^n -- is very much by design. It's the same as what Magma does. Also, all this " trouble of implementing categories" was done 4 years after VectorSpace was implemented. The combinatorics code maybe has other more general modules.