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

Reply via email to