23.9 Algebraic schemes

Module: sage.schemes.generic.algebraic_scheme

An algebraic scheme must be defined by sets of equations in affine or projective spaces, perhaps by means of gluing relations.

Module-level Functions

is_AlgebraicScheme( x)

Return True if $ x$ is an algebraic scheme, i.e., a subscheme of an ambient space over a ring defined by polynomial equations.

Affine space is itself not an algebraic scheme, though the closed subscheme defined by no equations is.

sage: is_AlgebraicScheme(AffineSpace(10, Q))
False
sage: V = AffineSpace(10, Q).subscheme([]); V
Closed subscheme of Affine Space of dimension 10 over
Rational Field defined by:
  (no equations)
sage: is_AlgebraicScheme(V)
True

We create a more complicated closed subscheme.

sage: A, x = AffineSpace(10, Q).objgens()
sage: X = A.subscheme([sum(x)]); X
Closed subscheme of Affine Space of dimension 10 over Rational Field
defined by:
  x9 + x8 + x7 + x6 + x5 + x4 + x3 + x2 + x1 + x0
sage: is_AlgebraicScheme(X)
True

sage: is_AlgebraicScheme(Q)
False
sage: S = Spec(Q)
sage: is_AlgebraicScheme(S)
False

Class: AlgebraicScheme

class AlgebraicScheme
An algebraic scheme presented as a subscheme in an ambient space.
AlgebraicScheme( self, A)

Functions: ambient_space,$  $ ngens

Special Functions: _homset_class,$  $ _point_class,$  $ _repr_

Class: AlgebraicScheme_quasi

class AlgebraicScheme_quasi
The quasi-affine or quasi-projective scheme X - Y, where X and Y are both closed subschemes of a common ambient affine or projective space.
AlgebraicScheme_quasi( self, X, Y)

Functions: rational_points,$  $ X,$  $ Y

rational_points( self, [F=0], [B=None])

Return the set of rational points over its base ring.

Special Functions: _check_satisfies_equations,$  $ _error_bad_coords,$  $ _repr_

_check_satisfies_equations( self, v)

Verify that the coordinates of v define a point on this scheme, or raise a TypeError.

Class: AlgebraicScheme_subscheme

class AlgebraicScheme_subscheme
An algebraic scheme presented as a closed subscheme is defined by explicit polynomial equations. This is as opposed to a general scheme, which could, e.g., by the Neron model of some object, and for which we do not want to give explicit equations.

INPUT: A - ambient space (affine or projective n-space over a ring) G - ideal or tuple of defining polynomials

AlgebraicScheme_subscheme( self, A, G)

Functions: base_extend,$  $ coordinate_ring,$  $ defining_ideal,$  $ defining_polynomials,$  $ exclude,$  $ intersection,$  $ irreducible_components,$  $ rational_points,$  $ reduce,$  $ union

exclude( self, other)

Return the scheme-theoretic complement self - other.

HERE

intersection( self, other)

Return the scheme-theoretic intersection of self and other in their common ambient space.

irreducible_components( self)

Return the irreducible components of this algebraic scheme, as subschemes of the same ambient space.

OUTPUT: an immutable sequence of irreducible subschemes of the ambient space of this scheme

The components are cached.

We define what is clearly a union of four hypersurfaces in $ \P^4_{\mathbf{Q}}$ then find the irreducible components.

sage: P, (x,y,z,w,v) = ProjectiveSpace(4,QQ).objgens()
sage: V = P.subscheme( (x^2 - y^2 - z^2)*(w^5 -  2*v^2*z^3)* w * (v^3 - x^2*z) )
sage: V.irreducible_components()
[Closed subscheme of Projective Space of dimension 4 over Rational Field
defined by:
x3,
 Closed subscheme of Projective Space of dimension 4 over Rational Field
defined by:
 -1*x4^3 + x0^2*x2,
 Closed subscheme of Projective Space of dimension 4 over Rational Field
defined by:
 x3^5 - 2*x2^3*x4^2,
 Closed subscheme of Projective Space of dimension 4 over Rational Field
defined by:
 -1*x2^2 - x1^2 + x0^2]

reduce( self)

Return the corresponding reduced algebraic space associated to this scheme.

First we construct the union of a doubled and triplled line in the affine plane over $ \mathbf{Q}$ .

sage: A, (x,y) = AffineSpace(2, Q).objgens('xy')
sage: X = A.subscheme([(x-1)^2*(x-y)^3]); X
Closed subscheme of Affine Space of dimension 2 over Rational Field defined
by:
  -1*y^3 + 3*x*y^2 + 2*x*y^3 - 3*x^2*y - 6*x^2*y^2 - x^2*y^3 + x^3 +
6*x^3*y + 3*x^3*y^2 - 2*x^4 - 3*x^4*y + x^5
sage: X.dimension()
1

Then we compute the corresponding reduced scheme.

sage: Y = X.reduce(); Y
Closed subscheme of Affine Space of dimension 2 over Rational Field defined
by:
  y - x - x*y + x^2

Finally, we verify that the reduced scheme $ Y$ is the union of those two lines.

sage: L1 = A.subscheme([x-1]); L1
Closed subscheme of Affine Space of dimension 2 over Rational Field defined
by:
  -1 + x
sage: L2 = A.subscheme([x-y]); L2
Closed subscheme of Affine Space of dimension 2 over Rational Field defined
by:
  -1*y + x
sage: W = L1.union(L2); W             # taken in ambient space
Closed subscheme of Affine Space of dimension 2 over Rational Field defined
by:
  y - x - x*y + x^2
sage: Y == W
True

union( self, other)

Return the scheme-theoretic union of self and other in their common ambient space.

We construct the union of a line and a tripled-point on the line.

sage: A, (x,y) = AffineSpace(2, Q, 'xy').objgens()
sage: I = ideal([x,y])^3
sage: P = A.subscheme(I)
sage: L = A.subscheme([y-1])
sage: S = L.union(P); S
Closed subscheme of Affine Space of dimension 2 over Rational Field defined
by:
  -1*y^3 + y^4
  -1*x*y^2 + x*y^3
  -1*x^2*y + x^2*y^2
  -1*x^3 + x^3*y
sage: S.dimension()
1
sage: S.reduce()
Closed subscheme of Affine Space of dimension 2 over Rational Field defined
by:
  -1*y + y^2
  -1*x + x*y

We can also use the notation "+" for the union:

sage: A.subscheme([x]) + A.subscheme([y^2 - (x^3+1)])
Closed subscheme of Affine Space of dimension 2 over Rational Field defined
by:
  -1*x + x*y^2 - x^4

Saving and loading:

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

Special Functions: __cmp__,$  $ _check_satisfies_equations,$  $ _error_bad_coords,$  $ _repr_,$  $ _validate

_check_satisfies_equations( self, v)

Verify that the coordinates of v define a point on this scheme, or raise a TypeError.

Class: AlgebraicScheme_subscheme_affine

class AlgebraicScheme_subscheme_affine

Functions: dimension,$  $ projective_embedding

dimension( self)

sage: A, (x,y) = AffineSpace(2, Q).objgens('xy')
sage: A.subscheme([]).dimension()
2
sage: A.subscheme([x]).dimension()
1
sage: A.subscheme([x^5]).dimension()
1
sage: A.subscheme([x^2 + y^2 - 1]).dimension()
1
sage: A.subscheme([x*(x-1), y*(y-1)]).dimension()
0

Something less obvious

sage: A, (x,y,z,w) = AffineSpace(4, Q).objgens('xyzw')
sage: X = A.subscheme([x^2, x^2*y^2 + z^2, z^2 - w^2, 10*x^2 + w^2 - z^2])
sage: X
Closed subscheme of Affine Space of dimension 4 over Rational Field defined
by:
  x^2
  z^2 + x^2*y^2
  -1*w^2 + z^2
  w^2 - z^2 + 10*x^2
sage: X.dimension()
1

projective_embedding( self, [i=None], [X=None])

Returns a morphism from this affine scheme into an ambient projective space of the same dimension.

INPUT:
    i -- integer (default: dimension of self = last coordinate) determines
         which projective embedding to compute.  The embedding is that
         which has a 1 in the i-th coordinate, numbered from 0.

X - (default: None) projective scheme, i.e., codomain of morphism; this is constructed if it is not given.

Special Functions: _point_morphism_class

Class: AlgebraicScheme_subscheme_projective

class AlgebraicScheme_subscheme_projective

Functions: affine_patch,$  $ dimension

affine_patch( self, i)

Return the $ i$ -th affine patch of this projective scheme. This is the intersection with this $ i$ -th affine patch of its ambient space.

INPUT:
    i -- integer between 0 and dimension of self, inclusive.

OUTPUT:
    an affine scheme with fixed projective_embedding map.

sage: PP = ProjectiveSpace(2, QQ, names='X,Y,Z')
sage: X,Y,Z = PP.gens()
sage: C = PP.subscheme(X^3*Y + Y^3*Z + Z^3*X)
sage: U = C.affine_patch(0)
sage: U
Closed subscheme of Affine Space of dimension 2 over Rational Field defined
by:
x1^3 + x0 + x0^3*x1
sage: U.projective_embedding()
Scheme morphism:
  From: Closed subscheme of Affine Space of dimension 2 over Rational Field
defined by:
  x1^3 + x0 + x0^3*x1
  To:   Closed subscheme of Projective Space of dimension 2 over Rational
Field defined by:
  Y^3*Z + X*Z^3 + X^3*Y
  Defn: Defined on coordinates by sending (x0, x1) to
        (1 : x0 : x1)

dimension( self)

sage: A, (x,y) = AffineSpace(2, Q).objgens('xy')
sage: A.subscheme([]).dimension()
2
sage: A.subscheme([x]).dimension()
1
sage: A.subscheme([x^5]).dimension()
1
sage: A.subscheme([x^2 + y^2 - 1]).dimension()
1
sage: A.subscheme([x*(x-1), y*(y-1)]).dimension()
0

Something less obvious

sage: A, (x,y,z,w) = AffineSpace(4, Q).objgens('xyzw')
sage: X = A.subscheme([x^2, x^2*y^2 + z^2, z^2 - w^2, 10*x^2 + w^2 - z^2])
sage: X
Closed subscheme of Affine Space of dimension 4 over Rational Field defined
by:
  x^2
  z^2 + x^2*y^2
  -1*w^2 + z^2
  w^2 - z^2 + 10*x^2
sage: X.dimension()
1

Special Functions: _point_morphism_class,$  $ _validate

See About this document... for information on suggesting changes.