#16158: Make Spec into a functor
----------------------------+----------------------------------------------
Reporter: pbruin | Owner:
Type: enhancement | Status: new
Priority: major | Milestone: sage-6.2
Component: algebraic | Keywords: Spec functor affine scheme
geometry | Authors: Peter Bruin
Merged in: | Report Upstream: N/A
Reviewers: | Branch:
Work issues: | Dependencies: #15990, #16156
Commit: |
Stopgaps: |
----------------------------+----------------------------------------------
Sage's `Spec` command currently produces a `Spec` object that derives
from, but is not the same as, an `AffineScheme`. The goal of this ticket
is
- merge the existing `Spec` with `AffineScheme` by moving all existing
methods of `Spec` to `AffineScheme`;
- upgrade `Spec` to a functor from `CommutativeRings` to `Schemes` (or
`Schemes(A)` if a base ring ''A'' is specified), returning objects of type
`AffineScheme`.
Example of the new functionality:
{{{
sage: A.<x,y> = QQ[]
sage: Spec(A)
Spectrum of Multivariate Polynomial Ring in x, y over Rational Field
sage: type(Spec(A))
<class 'sage.schemes.generic.scheme.AffineScheme_with_category'>
sage: B.<t> = QQ[]
sage: f = A.hom((t^2, t^3))
sage: Spec(f)
Affine Scheme morphism:
From: Spectrum of Univariate Polynomial Ring in t over Rational Field
To: Spectrum of Multivariate Polynomial Ring in x, y over Rational
Field
Defn: Ring morphism:
From: Multivariate Polynomial Ring in x, y over Rational Field
To: Univariate Polynomial Ring in t over Rational Field
Defn: x |--> t^2
y |--> t^3
}}}
Two small user-visible changes had to be made to accommodate the new
situation:
- If ''S'' = Spec(''A'') is an affine scheme, then the syntax `S(a_1, ...,
a_n)` to construct the topological point of ''S'' defined by the prime
ideal ''P'' = (''a'',,1,,, ..., ''a,,n,,'') of ''A'' is no longer
supported. The syntax `S(A.ideal(a_1, ..., a_n))` now has to be used
instead. This is because it conflicts with the much more useful
application of this syntax to construct the point with coordinates
(''a'',,1,,, ..., ''a,,n,,'') if ''S'' is (a subscheme of) an affine space
'''A'''^''n''^.
- Given ''S'' = Spec(''A'') and another scheme ''X'', the result of `X(A)`
is the same as before (a point homset), but `X(S)`, which used to be
identical to this, now returns the standard scheme homset. To get the
point homset, one now has to type `X(A)` or `X(S.coordinate_ring())`.
This seems the "principle of least surprise" convention to me, and it is
consistent with the fact that `X.point_homset()` only accepts rings, not
affine schemes.
--
Ticket URL: <http://trac.sagemath.org/ticket/16158>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.