### Navigation

- index
- modules |
- next |
- previous |
- Schemes »

# Projective \(n\) space over a ring

EXAMPLES: We construct projective space over various rings of various dimensions.

The simplest projective space:

    sage: ProjectiveSpace(0)
    Projective Space of dimension 0 over Integer Ring

A slightly bigger projective space over \(\QQ\):

    sage: X = ProjectiveSpace(1000, QQ); X
    Projective Space of dimension 1000 over Rational Field
    sage: X.dimension()
    1000

We can use “over” notation to create projective spaces over various base rings.

    sage: X = ProjectiveSpace(5)/QQ; X
    Projective Space of dimension 5 over Rational Field
    sage: X/CC
    Projective Space of dimension 5 over Complex Field with 53 bits of precision

The third argument specifies the printing names of the generators of the homogenous coordinate ring. Using objgens() you can obtain both the space and the generators as ready to use variables.

    sage: P2, (x,y,z) = ProjectiveSpace(2, QQ, 'xyz').objgens()
    sage: P2
    Projective Space of dimension 2 over Rational Field
    sage: x.parent()
    Multivariate Polynomial Ring in x, y, z over Rational Field

For example, we use \(x,y,z\) to define the intersection of two lines.

    sage: V = P2.subscheme([x+y+z, x+y-z]); V
    Closed subscheme of Projective Space of dimension 2 over Rational Field defined by:
     x + y + z,
     x + y - z
    sage: V.dimension()
    0

AUTHORS:

- Ben Hutz: (June 2012): support for rings

`sage.schemes.projective.projective_space.``ProjectiveSpace`(n, R=None, names='x')

  Return projective space of dimension \(n\) over the ring \(R\).

  EXAMPLES: The dimension and ring can be given in either order.

      sage: ProjectiveSpace(3, QQ)
      Projective Space of dimension 3 over Rational Field
      sage: ProjectiveSpace(5, QQ)
      Projective Space of dimension 5 over Rational Field
      sage: P = ProjectiveSpace(2, QQ, names='XYZ'); P
      Projective Space of dimension 2 over Rational Field
      sage: P.coordinate_ring()
      Multivariate Polynomial Ring in X, Y, Z over Rational Field

  The divide operator does base extension.

      sage: ProjectiveSpace(5)/GF(17)
      Projective Space of dimension 5 over Finite Field of size 17

  The default base ring is \(\ZZ\).

      sage: ProjectiveSpace(5)
      Projective Space of dimension 5 over Integer Ring

  There is also an projective space associated each polynomial ring.

      sage: R = GF(7)['x,y,z']
      sage: P = ProjectiveSpace(R); P
      Projective Space of dimension 2 over Finite Field of size 7
      sage: P.coordinate_ring()
      Multivariate Polynomial Ring in x, y, z over Finite Field of size 7
      sage: P.coordinate_ring() is R
      True

      sage: ProjectiveSpace(3, Zp(5), 'y')
      Projective Space of dimension 3 over 5-adic Ring with capped relative precision 20

      sage: ProjectiveSpace(2,QQ,'x,y,z')
      Projective Space of dimension 2 over Rational Field

      sage: PS.<x,y>=ProjectiveSpace(1,CC)
      sage: PS
      Projective Space of dimension 1 over Complex Field with 53 bits of precision

  Projective spaces are not cached, i.e., there can be several with the same base ring and dimension (to facilitate gluing constructions).

class `sage.schemes.projective.projective_space.``ProjectiveSpace_field`(n, R=Integer Ring, names=None)

  Bases: `sage.schemes.projective.projective_space.ProjectiveSpace_ring`

  EXAMPLES:

      sage: ProjectiveSpace(3, Zp(5), 'y')
      Projective Space of dimension 3 over 5-adic Ring with capped relative precision 20

class `sage.schemes.projective.projective_space.``ProjectiveSpace_finite_field`(n, R=Integer Ring, names=None)

  Bases: `sage.schemes.projective.projective_space.ProjectiveSpace_field`

  EXAMPLES:

      sage: ProjectiveSpace(3, Zp(5), 'y')
      Projective Space of dimension 3 over 5-adic Ring with capped relative precision 20

  `rational_points`(F=None)

    Return the list of \(F\)-rational points on the affine space self, where \(F\) is a given finite field, or the base ring of self.

    EXAMPLES:

        sage: P = ProjectiveSpace(1, GF(3))
        sage: P.rational_points()
        [(0 : 1), (1 : 1), (2 : 1), (1 : 0)]
        sage: P.rational_points(GF(3^2, 'b'))
        [(0 : 1), (b : 1), (b + 1 : 1), (2*b + 1 : 1), (2 : 1), (2*b : 1), (2*b + 2 : 1), (b + 2 : 1), (1 : 1), (1 : 0)]

  `rational_points_dictionary`()

    Return dictionary of points.

    OUTPUT:

    - dictionary

    EXAMPLES:

        sage: P1=ProjectiveSpace(GF(7),1,'x')
        sage: P1.rational_points_dictionary()
        {(0 : 1): 0,
         (1 : 0): 7,
         (1 : 1): 1,
         (2 : 1): 2,
         (3 : 1): 3,
         (4 : 1): 4,
         (5 : 1): 5,
         (6 : 1): 6}

class `sage.schemes.projective.projective_space.``ProjectiveSpace_rational_field`(n, R=Integer Ring, names=None)

  Bases: `sage.schemes.projective.projective_space.ProjectiveSpace_field`

  EXAMPLES:

      sage: ProjectiveSpace(3, Zp(5), 'y')
      Projective Space of dimension 3 over 5-adic Ring with capped relative precision 20

  `rational_points`(bound=0)

    Returns the projective points \((x_0:\cdots:x_n)\) over \(\QQ\) with \(|x_i| \leq\) bound.

    INPUT:

    - `bound` - integer

    EXAMPLES:

        sage: PP = ProjectiveSpace(0,QQ)
        sage: PP.rational_points(1)
        [(1)]
        sage: PP = ProjectiveSpace(1,QQ)
        sage: PP.rational_points(2)
        [(-2 : 1), (-1 : 1), (0 : 1), (1 : 1), (2 : 1), (-1/2 : 1), (1/2 : 1), (1 : 0)]
        sage: PP = ProjectiveSpace(2,QQ)
        sage: PP.rational_points(2)
        [(-2 : -2 : 1), (-1 : -2 : 1), (0 : -2 : 1), (1 : -2 : 1), (2 : -2 : 1),
        (-2 : -1 : 1), (-1 : -1 : 1), (0 : -1 : 1), (1 : -1 : 1), (2 : -1 : 1),
        (-2 : 0 : 1), (-1 : 0 : 1), (0 : 0 : 1), (1 : 0 : 1), (2 : 0 : 1), (-2 :
        1 : 1), (-1 : 1 : 1), (0 : 1 : 1), (1 : 1 : 1), (2 : 1 : 1), (-2 : 2 :
        1), (-1 : 2 : 1), (0 : 2 : 1), (1 : 2 : 1), (2 : 2 : 1), (-1/2 : -1 :
        1), (1/2 : -1 : 1), (-1 : -1/2 : 1), (-1/2 : -1/2 : 1), (0 : -1/2 : 1),
        (1/2 : -1/2 : 1), (1 : -1/2 : 1), (-1/2 : 0 : 1), (1/2 : 0 : 1), (-1 :
        1/2 : 1), (-1/2 : 1/2 : 1), (0 : 1/2 : 1), (1/2 : 1/2 : 1), (1 : 1/2 :
        1), (-1/2 : 1 : 1), (1/2 : 1 : 1), (-2 : 1 : 0), (-1 : 1 : 0), (0 : 1 :
        0), (1 : 1 : 0), (2 : 1 : 0), (-1/2 : 1 : 0), (1/2 : 1 : 0), (1 : 0 :
        0)]

    Note

    The very simple algorithm works as follows: every point \((x_0:\cdots:x_n)\) in projective space has a unique largest index \(i\) for which \(x_i\) is not zero. The algorithm then iterates downward on this index. We normalize by choosing \(x_i\) positive. Then, the points \(x_0,\ldots,x_{i-1}\) are the points of affine \(i\)-space that are relatively prime to \(x_i\). We access these by using the Tuples method.

    AUTHORS:

    - Benjamin Antieau (2008-01-12)

class `sage.schemes.projective.projective_space.``ProjectiveSpace_ring`(n, R=Integer Ring, names=None)

  Bases: `sage.schemes.generic.ambient_space.AmbientSpace`

  Projective space of dimension \(n\) over the ring \(R\).

  EXAMPLES:

      sage: X.<x,y,z,w> = ProjectiveSpace(3, QQ)
      sage: X.base_scheme()
      Spectrum of Rational Field
      sage: X.base_ring()
      Rational Field
      sage: X.structure_morphism()
      Scheme morphism:
        From: Projective Space of dimension 3 over Rational Field
        To:   Spectrum of Rational Field
        Defn: Structure map
      sage: X.coordinate_ring()
      Multivariate Polynomial Ring in x, y, z, w over Rational Field

  Loading and saving:

      sage: loads(X.dumps()) == X
      True

  `Lattes_map`(E, m)

    Given an elliptic curve \(E\) and an integer \(m\) return the Lattes map associated to multiplication by \(m\). In other words, the rational map on the quotient \(E/\{\pm 1\} \cong \mathbb{P}^1\) associated to \([m]:E \to E\).

    INPUT:

    - `E` – an elliptic curve
    - `m` – an integer

    OUTPUT: an endomorphism of `self`.

    Examples:

        sage: P.<x,y> = ProjectiveSpace(QQ,1)
        sage: E = EllipticCurve(QQ,[-1, 0])
        sage: P.Lattes_map(E,2)
        Scheme endomorphism of Projective Space of dimension 1 over Rational Field
          Defn: Defined on coordinates by sending (x : y) to
                (x^4 + 2*x^2*y^2 + y^4 : 4*x^3*y - 4*x*y^3)

  `affine_patch`(i, AA=None)

    Return the \(i^{th}\) affine patch of this projective space. This is an ambient affine space \(\mathbb{A}^n_R,\) where \(R\) is the base ring of self, whose “projective embedding” map is \(1\) in the \(i^{th}\) factor.

    INPUT:

    - `i` – integer between 0 and dimension of self, inclusive.

    - `AA` – (default: None) ambient affine space, this is constructed

        if it is not given.

    OUTPUT:

    - An ambient affine space with fixed projective_embedding map.

    EXAMPLES:

        sage: PP = ProjectiveSpace(5) / QQ
        sage: AA = PP.affine_patch(2)
        sage: AA
        Affine Space of dimension 5 over Rational Field
        sage: AA.projective_embedding()
        Scheme morphism:
          From: Affine Space of dimension 5 over Rational Field
          To:   Projective Space of dimension 5 over Rational Field
          Defn: Defined on coordinates by sending (x0, x1, x2, x3, x4) to
                (x0 : x1 : 1 : x2 : x3 : x4)
        sage: AA.projective_embedding(0)
        Scheme morphism:
          From: Affine Space of dimension 5 over Rational Field
          To:   Projective Space of dimension 5 over Rational Field
          Defn: Defined on coordinates by sending (x0, x1, x2, x3, x4) to
                (1 : x0 : x1 : x2 : x3 : x4)

        sage: P.<x,y> = ProjectiveSpace(QQ,1)
        sage: P.affine_patch(0).projective_embedding(0).codomain() == P
        True

  `change_ring`(R)

    Return a projective space over ring \(R\) and otherwise the same as self.

    INPUT:

    - `R` – commutative ring

    OUTPUT:

    - projective space over `R`

    Note

    There is no need to have any relation between \(R\) and the base ring of self, if you want to have such a relation, use `self.base_extend(R)` instead.

    EXAMPLES:

        sage: P.<x, y, z> = ProjectiveSpace(2, ZZ)
        sage: PQ = P.change_ring(QQ); PQ
        Projective Space of dimension 2 over Rational Field
        sage: PQ.change_ring(GF(5))
        Projective Space of dimension 2 over Finite Field of size 5

  `coordinate_ring`()

    Return the coordinate ring of this scheme.

    EXAMPLES:

        sage: ProjectiveSpace(3, GF(19^2,'alpha'), 'abcd').coordinate_ring()
        Multivariate Polynomial Ring in a, b, c, d over Finite Field in alpha of size 19^2

        sage: ProjectiveSpace(3).coordinate_ring()
        Multivariate Polynomial Ring in x0, x1, x2, x3 over Integer Ring

        sage: ProjectiveSpace(2, QQ, ['alpha', 'beta', 'gamma']).coordinate_ring()
        Multivariate Polynomial Ring in alpha, beta, gamma over Rational Field

  `is_projective`()

    Return that this ambient space is projective n-space.

    EXAMPLES:

        sage: ProjectiveSpace(3,QQ).is_projective()
        True

  `ngens`()

    Return the number of generators of self, i.e. the number of variables in the coordinate ring of self.

    EXAMPLES:

        sage: ProjectiveSpace(3, QQ).ngens()
        4
        sage: ProjectiveSpace(7, ZZ).ngens()
        8

  `subscheme`(X)

    Return the closed subscheme defined by X.

    INPUT:

    - `X` - a list or tuple of equations

    EXAMPLES:

        sage: A.<x,y,z> = ProjectiveSpace(2, QQ)
        sage: X = A.subscheme([x*z^2, y^2*z, x*y^2]); X
        Closed subscheme of Projective Space of dimension 2 over Rational Field defined by:
          x*z^2,
          y^2*z,
          x*y^2
        sage: X.defining_polynomials ()
        (x*z^2, y^2*z, x*y^2)
        sage: I = X.defining_ideal(); I
        Ideal (x*z^2, y^2*z, x*y^2) of Multivariate Polynomial Ring in x, y, z over Rational Field
        sage: I.groebner_basis()
        [x*y^2, y^2*z,  x*z^2]
        sage: X.dimension()
        0
        sage: X.base_ring()
        Rational Field
        sage: X.base_scheme()
        Spectrum of Rational Field
        sage: X.structure_morphism()
        Scheme morphism:
          From: Closed subscheme of Projective Space of dimension 2 over Rational Field defined by:
          x*z^2,
          y^2*z,
          x*y^2
          To:   Spectrum of Rational Field
          Defn: Structure map

        sage: TestSuite(X).run(skip=["_test_an_element", "_test_elements", "_test_elements_eq", "_test_some_elements", "_test_elements_eq_reflexive",  "_test_elements_eq_symmetric", "_test_elements_eq_transitive", "_test_elements_neq"])

`sage.schemes.projective.projective_space.``is_ProjectiveSpace`(x)

  Return True if \(x\) is a projective space, i.e., an ambient space \(\mathbb{P}^n_R\), where \(R\) is a ring and \(n\geq 0\) is an integer.

  EXAMPLES:

      sage: from sage.schemes.projective.projective_space import is_ProjectiveSpace
      sage: is_ProjectiveSpace(ProjectiveSpace(5, names='x'))
      True
      sage: is_ProjectiveSpace(ProjectiveSpace(5, GF(9,'alpha'), names='x'))
      True
      sage: is_ProjectiveSpace(Spec(ZZ))
      False

### Navigation

- index
- modules |
- next |
- previous |
- Schemes »