def subscheme(self, X, **kwds): """ Return the closed subscheme defined by ``X``. INPUT: - ``X`` - a list or tuple of equations. EXAMPLES:: sage: A.<x,y> = AffineSpace(QQ, 2) sage: X = A.subscheme([x, y^2, x*y^2]); X Closed subscheme of Affine Space of dimension 2 over Rational Field defined by: x, y^2, x*y^2 :: sage: X.defining_polynomials () (x, y^2, x*y^2) sage: I = X.defining_ideal(); I Ideal (x, y^2, x*y^2) of Multivariate Polynomial Ring in x, y over Rational Field sage: I.groebner_basis() [y^2, x] 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 Affine Space of dimension 2 over Rational Field defined by: x, y^2, x*y^2 To: Spectrum of Rational Field Defn: Structure map sage: X.dimension() 0 """ from sage.schemes.affine.affine_subscheme import ( AlgebraicScheme_subscheme_affine, AlgebraicScheme_subscheme_affine_field) if self.base_ring().is_field(): return AlgebraicScheme_subscheme_affine_field(self, X, **kwds) return AlgebraicScheme_subscheme_affine(self, X, **kwds)
def __init__(self, poly, ambient=None): """ Return the affine hypersurface in the space ambient defined by the polynomial poly. If ambient is not given, it will be constructed based on poly. EXAMPLES:: sage: A.<x, y, z> = AffineSpace(ZZ, 3) sage: AffineHypersurface(x*y-z^3, A) Affine hypersurface defined by -z^3 + x*y in Affine Space of dimension 3 over Integer Ring :: sage: A.<x, y, z> = QQ[] sage: AffineHypersurface(x*y-z^3) Affine hypersurface defined by -z^3 + x*y in Affine Space of dimension 3 over Rational Field TESTS:: sage: H = AffineHypersurface(x*y-z^3) sage: H == loads(dumps(H)) True """ if not is_MPolynomial(poly): raise TypeError( "Defining polynomial (= %s) must be a multivariate polynomial" % poly) if ambient is None: R = poly.parent() from sage.schemes.affine.affine_space import AffineSpace ambient = AffineSpace(R.base_ring(), R.ngens()) ambient._coordinate_ring = R AlgebraicScheme_subscheme_affine.__init__(self, ambient, [poly])