#16158: Make Spec into a functor
-------------------------------------+-------------------------------------
       Reporter:  pbruin             |        Owner:
           Type:  enhancement        |       Status:  needs_review
       Priority:  major              |    Milestone:  sage-6.2
      Component:  algebraic          |   Resolution:
  geometry                           |    Merged in:
       Keywords:  Spec functor       |    Reviewers:
  affine scheme                      |  Work issues:
        Authors:  Peter Bruin        |       Commit:
Report Upstream:  N/A                |  dcf608f261a4b2efa8e1f5195713e6a676366c07
         Branch:                     |     Stopgaps:
  u/pbruin/16158-Spec_functor        |
   Dependencies:  #15990, #16156     |
-------------------------------------+-------------------------------------
Description changed by pbruin:

Old description:

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

New description:

 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.

 More improvements to affine schemes are made in #7946.

--

--
Ticket URL: <http://trac.sagemath.org/ticket/16158#comment:4>
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