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
true
curve_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)
true
reduction
— 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.