General curve constructors

AUTHORS:

  • William Stein (2005-11-13)
  • David Kohel (2006-01)
  • Grayson Jorgenson (2016-6)
sage.schemes.curves.constructor.Curve(F, A=None)

Return the plane or space curve defined by F, where F can be either a multivariate polynomial, a list or tuple of polynomials, or an algebraic scheme.

If no ambient space is passed in for A, and if F is not an algebraic scheme, a new ambient space is constructed.

Also not specifying an ambient space will cause the curve to be defined in either affine or projective space based on properties of F. In particular, if F contains a nonhomogenous polynomial, the curve is affine, and if F consists of homogenous polynomials, then the curve is projective.

INPUT:

  • F – a multivariate polynomial, or a list or tuple of polynomials, or an algebraic scheme.
  • A – (default: None) an ambient space in which to create the curve.

EXAMPLES: A projective plane curve

sage: x,y,z = QQ['x,y,z'].gens()
sage: C = Curve(x^3 + y^3 + z^3); C
Projective Plane Curve over Rational Field defined by x^3 + y^3 + z^3
sage: C.genus()
1

EXAMPLES: Affine plane curves

sage: x,y = GF(7)['x,y'].gens()
sage: C = Curve(y^2 + x^3 + x^10); C
Affine Plane Curve over Finite Field of size 7 defined by x^10 + x^3 + y^2
sage: C.genus()
0
sage: x, y = QQ['x,y'].gens()
sage: Curve(x^3 + y^3 + 1)
Affine Plane Curve over Rational Field defined by x^3 + y^3 + 1

EXAMPLES: A projective space curve

sage: x,y,z,w = QQ['x,y,z,w'].gens()
sage: C = Curve([x^3 + y^3 - z^3 - w^3, x^5 - y*z^4]); C
Projective Curve over Rational Field defined by x^3 + y^3 - z^3 - w^3, x^5 - y*z^4
sage: C.genus()
13

EXAMPLES: An affine space curve

sage: x,y,z = QQ['x,y,z'].gens()
sage: C = Curve([y^2 + x^3 + x^10 + z^7,  x^2 + y^2]); C
Affine Curve over Rational Field defined by x^10 + z^7 + x^3 + y^2, x^2 + y^2
sage: C.genus()
47

EXAMPLES: We can also make non-reduced non-irreducible curves.

sage: x,y,z = QQ['x,y,z'].gens()
sage: Curve((x-y)*(x+y))
Projective Conic Curve over Rational Field defined by x^2 - y^2
sage: Curve((x-y)^2*(x+y)^2)
Projective Plane Curve over Rational Field defined by x^4 - 2*x^2*y^2 + y^4

EXAMPLES: A union of curves is a curve.

sage: x,y,z = QQ['x,y,z'].gens()
sage: C = Curve(x^3 + y^3 + z^3)
sage: D = Curve(x^4 + y^4 + z^4)
sage: C.union(D)
Projective Plane Curve over Rational Field defined by
x^7 + x^4*y^3 + x^3*y^4 + y^7 + x^4*z^3 + y^4*z^3 + x^3*z^4 + y^3*z^4 + z^7

The intersection is not a curve, though it is a scheme.

sage: X = C.intersection(D); X
Closed subscheme of Projective Space of dimension 2 over Rational Field defined by:
 x^3 + y^3 + z^3,
 x^4 + y^4 + z^4

Note that the intersection has dimension \(0\).

sage: X.dimension()
0
sage: I = X.defining_ideal(); I
Ideal (x^3 + y^3 + z^3, x^4 + y^4 + z^4) of Multivariate Polynomial Ring in x, y, z over Rational Field

EXAMPLES: In three variables, the defining equation must be homogeneous.

If the parent polynomial ring is in three variables, then the defining ideal must be homogeneous.

sage: x,y,z = QQ['x,y,z'].gens()
sage: Curve(x^2+y^2)
Projective Conic Curve over Rational Field defined by x^2 + y^2
sage: Curve(x^2+y^2+z)
Traceback (most recent call last):
...
TypeError: x^2 + y^2 + z is not a homogeneous polynomial

The defining polynomial must always be nonzero:

sage: P1.<x,y> = ProjectiveSpace(1,GF(5))
sage: Curve(0*x)
Traceback (most recent call last):
...
ValueError: defining polynomial of curve must be nonzero
sage: A.<x,y,z> = AffineSpace(QQ, 3)
sage: C = Curve([y - x^2, z - x^3], A)
sage: A == C.ambient_space()
True