Points on projective schemes

This module implements scheme morphism for points on weighted projective schemes.

AUTHORS:

  • Gareth Ma (2024): initial version, based on unweighted version.

class sage.schemes.weighted_projective.weighted_projective_point.SchemeMorphism_point_weighted_projective_ring(X, v, check: bool = True)[source]

Bases: SchemeMorphism_point

A rational point of weighted projective space over a ring.

INPUT:

  • X – a homset of a subscheme of an ambient weighted projective space over a ring \(R\).

  • v – a list or tuple of coordinates in \(R\).

  • check – boolean (default: True); Whether to check the input for consistency.

EXAMPLES:

sage: WP = WeightedProjectiveSpace(2, ZZ)
sage: WP(2, 3, 4)
(2 : 3 : 4)
>>> from sage.all import *
>>> WP = WeightedProjectiveSpace(Integer(2), ZZ)
>>> WP(Integer(2), Integer(3), Integer(4))
(2 : 3 : 4)
normalize_coordinates()[source]

Normalise coordinates of this weighted projective point if possible.

Currently, this method checks if (1) the ambient weighted projective space is defined over a field and (2) the weight of any index is \(1\). If so, the last of which is rescaled to \(1\).

EXAMPLES:

sage: WP = WeightedProjectiveSpace([3, 1, 5], QQ)
sage: P = WP([8, 16, 32]); P
(1/512 : 1 : 1/32768)
sage: P.scale_by(13); P
(2197/512 : 13 : 371293/32768)
sage: P.normalize_coordinates(); P
(1/512 : 1 : 1/32768)
>>> from sage.all import *
>>> WP = WeightedProjectiveSpace([Integer(3), Integer(1), Integer(5)], QQ)
>>> P = WP([Integer(8), Integer(16), Integer(32)]); P
(1/512 : 1 : 1/32768)
>>> P.scale_by(Integer(13)); P
(2197/512 : 13 : 371293/32768)
>>> P.normalize_coordinates(); P
(1/512 : 1 : 1/32768)

sage: WP = WeightedProjectiveSpace([3, 4, 5], ZZ)
sage: P = WP([8, 16, 32]); P
(8 : 16 : 32)
sage: P.normalize_coordinates(); P
(8 : 16 : 32)
>>> from sage.all import *
>>> WP = WeightedProjectiveSpace([Integer(3), Integer(4), Integer(5)], ZZ)
>>> P = WP([Integer(8), Integer(16), Integer(32)]); P
(8 : 16 : 32)
>>> P.normalize_coordinates(); P
(8 : 16 : 32)
scale_by(t)[source]

Scale the coordinates of the point by t.

A TypeError occurs if the point is not in the base_ring of the codomain after scaling.

INPUT:

  • t – a ring element

OUTPUT: none

EXAMPLES:

sage: WP = WeightedProjectiveSpace([3, 4, 5], ZZ)
sage: P = WP([8, 16, 32]); P
(8 : 16 : 32)
sage: P.scale_by(1 / 2); P
(1 : 1 : 1)
sage: P.scale_by(1 / 3); P
Traceback (most recent call last):
...
TypeError: ...
>>> from sage.all import *
>>> WP = WeightedProjectiveSpace([Integer(3), Integer(4), Integer(5)], ZZ)
>>> P = WP([Integer(8), Integer(16), Integer(32)]); P
(8 : 16 : 32)
>>> P.scale_by(Integer(1) / Integer(2)); P
(1 : 1 : 1)
>>> P.scale_by(Integer(1) / Integer(3)); P
Traceback (most recent call last):
...
TypeError: ...