Projective Curves
ProjectiveCurve
— TypeProjectiveCurve
A reduced projective curve, defined as the vanishing locus of a homogeneous (but not necessarily radical) ideal.
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 = projective_curve(I)
Projective curve
in projective 3-space over QQ with coordinates [w, x, y, z]
defined by ideal (w*y - x^2, w*z - x*y, x*z - y^2)
invert_birational_map
— Functioninvert_birational_map(phi::Vector{T}, C::ProjectiveCurve) 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.
invert_birational_map(phi::Vector{T}, C::ProjectivePlaneCurve) 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 plane 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.
geometric_genus
— Functiongeometric_genus(X::AbsProjectiveScheme{<:Field}; algorithm::Symbol=:default) -> Int
Given a projective curve X
return the genus of X
, i.e. the integer $p_g = p_a - \delta$ where $p_a$ is the arithmetic genus and \delta
the $\delta$-invariant of the curve.
The algorithm
keyword can be specified to
:normalization
to compute $\delta$ a normalization:primary_decomposition
to proceed with a primary decomposition
Normalization is usually slower, but not always.
Examples
julia> R, (x,y,z) = graded_polynomial_ring(QQ, [:x, :y, :z]);
julia> C = plane_curve(z*x^2-y^3)
Projective plane curve
defined by 0 = x^2*z - y^3
julia> geometric_genus(C)
0
graph_curve
— Functiongraph_curve(G::Graph)
Return the graph curve of G
, i.e., a union of lines whose dual graph is G
, see [BE91].
Assumes that G
is trivalent and 3-connected.
Examples
julia> G1 = vertex_edge_graph(simplex(3))
Undirected graph with 4 nodes and the following edges:
(2, 1)(3, 1)(3, 2)(4, 1)(4, 2)(4, 3)
julia> C1 = graph_curve(G1)
Projective curve
in projective 2-space over QQ with coordinates [x1, x2, x3]
defined by ideal (x1^2*x2*x3 - x1*x2^2*x3 + x1*x2*x3^2)
julia> G2 = vertex_edge_graph(cube(3))
Undirected graph with 8 nodes and the following edges:
(2, 1)(3, 1)(4, 2)(4, 3)(5, 1)(6, 2)(6, 5)(7, 3)(7, 5)(8, 4)(8, 6)(8, 7)
julia> C2 = graph_curve(G2)
Projective curve
in projective 4-space over QQ with coordinates [x1, x2, x3, x4, x5]
defined by ideal with 5 generators