Hi Alex,

This is a historical legacy of a heavy-handed attempt by William and
me
to implement schemes "from the book" (aka Hartshorne):

sage: A = AffineSpace(2, ZZ)
sage: p = A(0, 0)
sage: p.parent().category().element_class
<class 'sage.categories.category.Schemes_abstract.HomCategory.
element_class'>
sage: type(p)
<class 'sage.schemes.generic.morphism.SchemeMorphism_point_affine'>

It is mathematically correct to say that a point is a section from
the base scheme (often a field), whose coordinates are the
values of the coordinate functions.  However, in most working
settings, you just want a list of coordinates over a ring or field.
This is more efficient, more intuitive, and easier to work with.
In the worst case you need multiple lists of coordinates which
glue together where the base ring is not a PID or is a more
general scheme.   This is the standard parent-element standard
used by Sage (elsewhere) and Magma.  (This is a subjective
point which I will argue:) Such elements are not described by
a category framework (which deals with objects, morphisms,
and functors).  Elements are practical things which we often
demand of objects in order to evaluate maps between objects.
They often do have a categorical interpretation by their
identification with morphisms from a free object (if such exists),
but in retrospect equating the set of elements X(S) with
Hom(S,X) was a bad idea.   We don't implement set, module
or ring elements this way, and shouldn't for schemes either.
Instead, ditch this, create an elements class in the standard
parent-element dichotomy and have constructors to turn
elements of X(k) into morphisms in Hom(Spec(k),X).
This was already done, I believe, for elliptic curves precisely
because the beautiful Grothendieck theory of points as
morphisms was too slow to be of any use; coordinate access
by evaluation of the composition of a morphism S -> X with
a coordinate function just doesn't cut it.  The general theory
is needed for X(S) but the line between efficient elements
and their interpretation as morphisms can be made by the
choice of users: X(k) or X(R) for a field k or ring R will be
implemented differently from X(Spec(k)) and X(Spec(R)).

--David



-- 
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