# Projective Curves

We consider projective curves in projective spaces of arbitrary dimension.

## Constructors

We define a projective curve by an ideal of homogeneous polynomials.

ProjCurveType
ProjCurve(I::MPolyIdeal)

Given a homogeneous ideal I of Krull dimension 2, return the projective curve defined by I.

Examples

julia> R, (w, x, y, z) = graded_polynomial_ring(QQ, ["w", "x", "y", "z"]);

julia> M = matrix(R, 2, 3, [w x y; x y z])
[w   x   y]
[x   y   z]

julia> V = minors(M, 2)
3-element Vector{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}:
w*y - x^2
w*z - x*y
x*z - y^2

julia> I = ideal(R, V);

julia> TC = ProjCurve(I)
Projective curve defined by the ideal(w*y - x^2, w*z - x*y, x*z - y^2)
source

## General functions for curves

inMethod
in(P::Oscar.Geometry.ProjSpcElem, C::ProjCurve)

Return true if the point P is on the curve C, and false otherwise.

Examples

julia> S, (x, y, z, t) = polynomial_ring(QQ, ["x", "y", "z", "t"])
(Multivariate Polynomial Ring in x, y, z, t over Rational Field, QQMPolyRingElem[x, y, z, t])

(Multivariate Polynomial Ring in x, y, z, t over Rational Field graded by
x -> [1]
y -> [1]
z -> [1]
t -> [1], MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}[x, y, z, t])

julia> I = ideal(T, [x^2, y^2*z, z^2])
ideal(x^2, y^2*z, z^2)

julia> C = Oscar.ProjCurve(I)
Projective curve defined by the ideal(x^2, y^2*z, z^2)

julia> PP = proj_space(QQ, 3)
(Projective space of dim 3 over Rational Field
, MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}[x[0], x[1], x[2], x[3]])

julia> P = Oscar.Geometry.ProjSpcElem(PP[1], [QQ(0), QQ(2), QQ(0), QQ(5)])
(0 : 2 : 0 : 5)

julia> P in C
true
source
curve_componentsMethod
curve_components(C::ProjCurve)

Return a dictionary containing the irreducible components of C and the corresponding reduced curve.

source
is_irreducibleMethod
is_irreducible(C::ProjCurve)

Return true if C is irreducible, and false otherwise.

Examples

julia> S, (x, y, z, t) = polynomial_ring(QQ, ["x", "y", "z", "t"])
(Multivariate Polynomial Ring in x, y, z, t over Rational Field, QQMPolyRingElem[x, y, z, t])

(Multivariate Polynomial Ring in x, y, z, t over Rational Field graded by
x -> [1]
y -> [1]
z -> [1]
t -> [1], MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}[x, y, z, t])

julia> I = ideal(T, [x^2, y^2*z, z^2])
ideal(x^2, y^2*z, z^2)

julia> C = Oscar.ProjCurve(I)
Projective curve defined by the ideal(x^2, y^2*z, z^2)

julia> Oscar.is_irreducible(C)
true
source
reductionMethod
reduction(C::ProjCurve)

Return the projective curve defined by the radical of the defining ideal of C.

Examples

julia> S, (x, y, z, t) = polynomial_ring(QQ, ["x", "y", "z", "t"])
(Multivariate Polynomial Ring in x, y, z, t over Rational Field, QQMPolyRingElem[x, y, z, t])

(Multivariate Polynomial Ring in x, y, z, t over Rational Field graded by
x -> [1]
y -> [1]
z -> [1]
t -> [1], MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}[x, y, z, t])

julia> I = ideal(T, [x^2, y^2*z, z^2])
ideal(x^2, y^2*z, z^2)

julia> C = Oscar.ProjCurve(I)
Projective curve defined by the ideal(x^2, y^2*z, z^2)

julia> Oscar.reduction(C)
Projective curve defined by the ideal(z, x)
source
jacobi_idealMethod
jacobi_ideal(C::ProjCurve)

Return the Jacobian ideal of the defining ideal of C.

Examples

julia> S, (x, y, z, t) = polynomial_ring(QQ, ["x", "y", "z", "t"])
(Multivariate Polynomial Ring in x, y, z, t over Rational Field, QQMPolyRingElem[x, y, z, t])

(Multivariate Polynomial Ring in x, y, z, t over Rational Field graded by
x -> [1]
y -> [1]
z -> [1]
t -> [1], MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}[x, y, z, t])

julia> I = ideal(T, [x^2, y^2*z, z^2])
ideal(x^2, y^2*z, z^2)

julia> C = Oscar.ProjCurve(I)
Projective curve defined by the ideal(x^2, y^2*z, z^2)

julia> Oscar.jacobi_ideal(C)
ideal(4*x*y*z, 2*x*y^2, 4*x*z, 4*y*z^2)
source
invert_birational_mapMethod
invert_birational_map(phi::Vector{T}, C::ProjCurve) where {T <: MPolyRingElem}

Return a dictionary where image represents the image of the birational map given by phi, and inverse represents its inverse, where phi is a birational map of the projective curve C to its image in the projective space of dimension size(phi) - 1. Note that the entries of inverse should be considered as representatives of elements in R/image, where R is the basering.

source