Projective Curves
We consider projective curves in projective spaces of arbitrary dimension.
Constructors
We define a projective curve by an ideal of homogeneous polynomials.
ProjCurve — TypeProjCurve(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)General functions for curves
defining_ideal — Methoddefining_ideal(C::ProjCurve)Return the defining ideal of the projective curve C.
in — Methodin(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 4 variables over QQ, QQMPolyRingElem[x, y, z, t])
julia> T, _ = grade(S)
(Graded multivariate polynomial ring in 4 variables over QQ, 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
truecurve_components — Methodcurve_components(C::ProjCurve)Return a dictionary containing the irreducible components of C and the corresponding reduced curve.
is_irreducible — Methodis_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 4 variables over QQ, QQMPolyRingElem[x, y, z, t])
julia> T, _ = grade(S)
(Graded multivariate polynomial ring in 4 variables over QQ, 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)
truereduction — Methodreduction(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 4 variables over QQ, QQMPolyRingElem[x, y, z, t])
julia> T, _ = grade(S)
(Graded multivariate polynomial ring in 4 variables over QQ, 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)jacobi_ideal — Methodjacobi_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 4 variables over QQ, QQMPolyRingElem[x, y, z, t])
julia> T, _ = grade(S)
(Graded multivariate polynomial ring in 4 variables over QQ, 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)invert_birational_map — Methodinvert_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.