Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemath
GitHub Repository: sagemath/sagelib
Path: blob/master/sage/schemes/readme.py
4077 views
1
r"""
2
Scheme implementation overview
3
4
Various parts of schemes were implemented by
5
Volker Braun,
6
David Joyner,
7
David Kohel,
8
Andrey Novoseltsev,
9
and
10
William Stein.
11
12
AUTHORS:
13
14
- David Kohel (2006-01-03): initial version
15
- William Stein (2006-01-05)
16
- William Stein (2006-01-20)
17
- Andrey Novoseltsev (2010-09-24): update due to addition of toric varieties.
18
19
.. comment seperator
20
21
- **Scheme:**
22
A scheme whose datatype might not be defined in terms
23
of algebraic equations: e.g. the Jacobian of a curve may be
24
represented by means of a Scheme.
25
26
- **AlgebraicScheme:**
27
A scheme defined by means of polynomial equations, which may be
28
reducible or defined over a ring other than a field.
29
In particular, the defining ideal need not be a radical ideal,
30
and an algebraic scheme may be defined over Spec(R).
31
32
- **AmbientSpaces:**
33
Most effective models of algebraic scheme will be
34
defined not by generic gluings, but by embeddings in some fixed
35
ambient space.
36
37
- **AffineSpace:**
38
Affine spaces and their affine subschemes form the most important
39
universal objects from which algebraic schemes are built.
40
The affine spaces form universal objects in the sense that a morphism
41
is uniquely determined by the images of its coordinate functions and
42
any such images determine a well-defined morphism.
43
44
By default affine spaces will embed in some ordinary projective space,
45
unless it is created as an affine patch of another object.
46
47
- **ProjectiveSpace:**
48
Projective spaces are the most natural ambient spaces for most
49
projective objects. They are locally universal objects.
50
51
- **ProjectiveSpace_ordinary (not implemented)**
52
The ordinary projective spaces have the standard weights `[1,..,1]`
53
on their coefficients.
54
55
- **ProjectiveSpace_weighted (not implemented):**
56
A special subtype for non-standard weights.
57
58
- **ToricVariety:**
59
Toric varieties are (partial) compactifications of algebraic tori
60
`\left(\CC^*\right)^n` compatible with torus action. Affine and projective
61
spaces are examples of toric varieties, but it is not envisioned that these
62
special cases should inherit from ``ToricVariety``.
63
64
- **AlgebraicScheme_subscheme_affine:**
65
An algebraic scheme defined by means of an embedding in a
66
fixed ambient affine space.
67
68
- **AlgebraicScheme_subscheme_projective:**
69
An algebraic scheme defined by means of an embedding in a fixed ambient
70
projective space.
71
72
- **QuasiAffineScheme (not yet implemented):**
73
An open subset `U = X \setminus Z` of a closed subset `X` of affine space;
74
note that this is mathematically a quasi-projective scheme, but its
75
ambient space is an affine space and its points are represented by
76
affine rather than projective points.
77
78
.. NOTE::
79
80
AlgebraicScheme_quasi is implemented, as a base class for this.
81
82
- **QuasiProjectiveScheme (not yet implemented):**
83
An open subset of a closed subset of projective space; this datatype
84
stores the defining polynomial, polynomials, or ideal defining the
85
projective closure `X` plus the closed subscheme `Z` of `X` whose complement
86
`U = X \setminus Z` is the quasi-projective scheme.
87
88
.. NOTE::
89
90
The quasi-affine and quasi-projective datatype lets one create schemes
91
like the multiplicative group scheme
92
`\mathbb{G}_m = \mathbb{A}^1\setminus \{(0)\}`
93
and the non-affine scheme `\mathbb{A}^2\setminus \{(0,0)\}`. The latter
94
is not affine and is not of the form `\mathrm{Spec}(R)`.
95
96
TODO List
97
---------
98
99
- **PointSets and points over a ring:**
100
For algebraic schemes `X/S` and `T/S` over `S`, one can form
101
the point set `X(T)` of morphisms from `T\to X` over `S`.
102
103
::
104
105
sage: PP.<X,Y,Z> = ProjectiveSpace(2, QQ)
106
sage: PP
107
Projective Space of dimension 2 over Rational Field
108
109
The first line is an abuse of language -- returning the generators
110
of the coordinate ring by ``gens()``.
111
112
A projective space object in the category of schemes is a locally
113
free object -- the images of the generator functions *locally*
114
determine a point. Over a field, one can choose one of the standard
115
affine patches by the condition that a coordinate function `X_i \ne 0`
116
117
::
118
119
sage: PP(QQ)
120
Set of rational points of Projective Space
121
of dimension 2 over Rational Field
122
sage: PP(QQ)([-2,3,5])
123
(-2/5 : 3/5 : 1)
124
125
Over a ring, this is not true, e.g. even over an integral domain which is not
126
a PID, there may be no *single* affine patch which covers a point.
127
128
::
129
130
sage: R.<x> = ZZ[]
131
sage: S.<t> = R.quo(x^2+5)
132
sage: P.<X,Y,Z> = ProjectiveSpace(2, S)
133
sage: P(S)
134
Set of rational points of Projective Space of dimension 2 over
135
Univariate Quotient Polynomial Ring in t over Integer Ring with
136
modulus x^2 + 5
137
138
In order to represent the projective point `(2:1+t) = (1-t:3)` we
139
note that the first representative is not well-defined at the
140
prime `pp = (2,1+t)` and the second element is not well-defined at
141
the prime `qq = (1-t,3)`, but that `pp + qq = (1)`, so globally the
142
pair of coordinate representatives is well-defined.
143
144
::
145
146
sage: P( [2, 1+t] )
147
Traceback (most recent call last):
148
...
149
NotImplementedError
150
151
In fact, we need a test ``R.ideal([2,1+t]) == R.ideal([1])`` in order
152
to make this meaningful.
153
154
"""
155
156
157