On Jun 30, 1:05 am, Francis Clarke <[email protected]> wrote:

Thanks, Francis.  Very astute.

> This makes no sense at all; the function is not a homomorphism:

Right.

So K^2 is a 4-dimensional vector space over the rationals.  But you've
represented  f  with a  2 x 2  matrix.

Despite  f  above acting as a homomorphism, we are not in the clear.
The following (on top of above) works:

sage: x = vector(K, [2, 2])
sage: f.lift(x)

But the following still goes boom:

sage: b = K.0
sage: x = vector(K, [b, b])
sage: f.lift(x)

despite

sage: f.is_surjective()
True

Is there a way in Sage to recognize K^2 as QQ^4?  Should we?  Can we?

sage: P = K^2
sage: P.vector_space(base_field=QQ)
Vector space of dimension 2 over Rational Field

Not what I would have hoped.

However,

sage: X, fromX, toX = K.vector_space()
sage: a = K.0
sage: toX(5 + 4*a)
(5, 4)
sage: fromX([9, -3])
-3*a + 9

Is there an easy way to extend these mappings with K to the obvious
ones with K^2?  If not, maybe this would be a nice enhancement for
the .vector_space() method.

In any event, even with such a mapping, recognizing/identifying K^2 as
QQ^4 seems a bit of work, and then all of the morphism code would have
to translate at the appropriate junctures?

Which brings me back to my original question, just a bit wiser.
Should we explicitly reject constructing morphisms between free
modules if their *obvious* base rings differ, so as to not get
erroneous or conflicting behavior?  While leaving the door open to a
big project to be more clever about recognizing constructions like K^2
as free modules over less-obvious rings?  (By obvious and less-
obvious, I mean in terms of implementation.)  My inclination is to say
"yes."

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

Reply via email to