sage: PP = ProjectiveSpace(2, QQ) sage: PP Projective Space of dimension 2 over Rational Field sage: X,Y,Z = PP.gens()
The last line is an abuse of language - returning the generators
of the coordinate ring by gens()
.
A projective space object in the category of schemes is a locally
free object - the images of the generator functions locally
determine a point. Over a field, one can choose one of the standard
affine patches by the condition that a coordinate function
sage: PP(QQ) Set of Rational Points of Projective Space of dimension 2 over Rational Field sage: PP(QQ)([-2,3,5]) (-2/5 : 3/5 : 1)
Over a ring, this is not true, e.g. even over an integral domain which is not a PID, there may be no single affine patch which covers a point.
sage: R, x = objgen(ZZ['x']) sage: S, t = objgen(R/(x^2+5), 't') sage: P = ProjectiveSpace(2, S) sage: P(S) Set of Rational Points of Projective Space of dimension 2 over Univariate Quotient Polynomial Ring in t over Integer Ring with modulus x^2 + 5
In order to represent the projective point
we
note that the first representative is not well-defined at the
prime
and the second element is not well-defined at
the prime
, but that
, so globally the
pair of coordinate representatives is well-defined.
sage: P( [2, 1+t] ) Traceback (most recent call last): ... NotImplementedError
In fact, we need a test R.ideal([2,1+t]) == R.ideal([1])
in order
to make this meaningful.
See About this document... for information on suggesting changes.