Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parametrizing rational plane curves #846

Merged
merged 10 commits into from
Dec 3, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions docs/doc.main
Original file line number Diff line number Diff line change
Expand Up @@ -122,13 +122,15 @@
],

"Algebraic Geometry" => [
# "Curves" => [
"AlgebraicGeometry/intro.md",
"Curves" => [
# "Experimental/introduction.md",
# "Experimental/plane_curves.md",
# "Experimental/divisors.md",
# "Experimental/elliptic_curves.md",
# "Experimental/non_plane_curves.md",
# ],
"AlgebraicGeometry/para_rational_curves.md",
],
"Toric Varieties" => [
"ToricVarieties/intro.md",
"ToricVarieties/NormalToricVarieties.md",
Expand Down
20 changes: 20 additions & 0 deletions docs/oscar_references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,18 @@ @Article{BDEPS04
url = {https://doi.org/10.1093/qjmath/55.3.237}
}

@InCollection{BDLP17,
author = {Böhm, Janko and Decker, Wolfram and Laplagne, Santiago
and Pfister, Gerhard},
title = {Local to global algorithms for the Gorenstein adjoint
ideal of a curve},
booktitle = {Algorithmic and experimental methods in algebra, geometry,
and number theory},
pages = {51--96},
publisher = {Springer, Cham},
year = {2017}
}

@InProceedings{BDLP19,
title = {Computing integral bases via localization and Hensel
lifting},
Expand Down Expand Up @@ -66,6 +78,14 @@ @Article{BKR20
url = {https://doi.org/10.1090/mcom/3546}
}

@MastersThesis{Bhm99,
author = {Böhm, Janko},
title = {Parametrisierung rationaler Kurven},
school = {Universität Bayreuth},
type = {Diploma Thesis},
year = {1999}
}

@Book{CLS11,
author = {David A. {Cox} and John B. {Little} and Henry K.
{Schenck}},
Expand Down
21 changes: 21 additions & 0 deletions docs/src/AlgebraicGeometry/intro.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
```@meta
CurrentModule = Oscar
```

```@setup oscar
using Oscar
```

```@contents
Pages = ["intro.md"]
```

# Introduction

In this chapter, we introduce structures and functionality for dealing with varieties, sheaves, and schemes.

This part of Oscar is at the very beginning of its development.

We refer to the individual sections for references which provide details on theory and algorithms.


95 changes: 95 additions & 0 deletions docs/src/AlgebraicGeometry/para_rational_curves.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
```@meta
CurrentModule = Oscar
```

```@setup oscar
using Oscar
```

```@contents
Pages = ["para_rational_curves.md"]
```

# Rational Parametrizations of Rational Plane Curves

!!! note
In this section, $C$ will denote a complex projective plane curve, defined by an absolutely irreducible,
homogeneous polynomial in three variables, with coeffients in $\mathbb Q$. Moreover, we will write $n = \deg C$.

Recall that the curve $C$ is *rational* if it is birationally equivalent to the projective line $\mathbb P^1(\mathbb C)$.
In other words, there exists a *rational parametrization* of $C$, that is, a birational map $\mathbb P^1(\mathbb C)\dashrightarrow C$.
Note that such a parametrization is given by three homogeneous polynomials of the same degree in the homogeneous coordinates on
$\mathbb P^1(\mathbb C)$.

!!! note
The curve $C$ is rational iff its geometric genus is zero.

Based on work of Max Noether on adjoint curves, Hilbert und Hurwitz showed that if
$C$ is rational, then there is a birational map $C \dashrightarrow D$ defined over $\mathbb Q$ such
that $D = \mathbb P^1(\mathbb C)$ if $n$ is odd, and $D\subset\mathbb P^2(\mathbb C)$ is a conic if $n$ is even.

!!! note
If a conic $D$ contains a rational point, then there exists a parametrization of $D$ defined over $\mathbb Q$;
otherwise, there exists a parametrization of $D$ defined over a quadratic field extension of $\mathbb Q$.

The approach of Hilbert und Hurwitz is constructive and allows one, in principle, to find rational parametrizations.
The resulting algorithm is not very practical, however, as the approach asks to compute adjoint curves repeatedly,
at each of a number of reduction steps.

The algorithm implemented in OSCAR relies on reduction steps of a different type and requires the computation of adjoint
curves only once. Its individual steps are interesting in their own right:

- Assure that the curve $C$ is rational by checking that its geometric genus is zero;
- compute a basis of the adjoint curves of $C$ of degree ${n-2}$; each such basis defines a birational map $C \dashrightarrow C_{n-2},$
where $C_{n-2}$ is a rational normal curve in $\mathbb P^{n-2}(\mathbb C)$;
- the anticanonical linear system on $C_{n-2}$ defines a birational map $C_{n-2}\dashrightarrow C_{n-4}$, where $C_{n-4}$ is a rational normal curve in in $\mathbb P^{n-4}(\mathbb C)$;
- iterate the previous step to obtain a birational map $C_{n-2} \dashrightarrow \dots \dashrightarrow D$,
where $D = \mathbb P^1(\mathbb C)$ if $n$ is odd, and $D\subset\mathbb P^2(\mathbb C)$ is a conic if $n$ is even;
- invert the birational map $C \dashrightarrow C_{n-2} \dashrightarrow \dots \dashrightarrow D$;
- if $n$ is even, compute a parametrization of the conic $D$ and compose it with the inverted map above.

!!! note
The defining property of an adjoint curve is that it passes with “sufficiently high” multiplicity through the singularities of $C$.
There are several concepts of making this precise. For each such concept, there is a corresponding *adjoint ideal* of $C$,
namely the homogeneous ideal formed by the defining polynomials of the adjoint curves. In OSCAR, we follow
the concept of Gorenstein which leads to the largest possible adjoint ideal.

See [Bhm99](@cite) and [BDLP17](@cite) for details and further references.

## Creating Projective Plane Curves

The data structures for algebraic curves in OSCAR are still under development
and subject to change. Here is the current constructor for projective plane curves:

```@docs
ProjPlaneCurve(f::MPolyElem{T}) where {T <: FieldElem}
```

## The Genus of a Plane Curve

```@docs
geometric_genus(C::ProjectivePlaneCurve{T}) where T <: FieldElem
```

## Adjoint Ideals of Plane Curves

```@docs
adjoint_ideal(C::ProjPlaneCurve{fmpq})
```

## Rational Points on Conics

```@docs
rational_point_conic(D::ProjPlaneCurve{fmpq})
```
## Parametrizing Rational Plane Curves

```@docs
parametrization_plane_curve(C::ProjPlaneCurve{fmpq})
```






12 changes: 6 additions & 6 deletions experimental/PlaneCurve/AffinePlaneCurve.jl
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ julia> D = Oscar.AffinePlaneCurve(x*(x+y)*(x-y))
Affine plane curve defined by x^3 - x*y^2

julia> Oscar.common_components(C, D)
1-element Vector{Oscar.PlaneCurveModule.AffinePlaneCurve{fmpq}}:
1-element Vector{AffinePlaneCurve{fmpq}}:
Affine plane curve defined by x^2 + x*y
```
"""
Expand Down Expand Up @@ -141,8 +141,8 @@ Affine plane curve defined by x^2 - x*y - 2*x + 2*y

julia> Oscar.curve_intersect(C, D)
2-element Vector{Vector{T} where T}:
Oscar.PlaneCurveModule.AffinePlaneCurve[]
Oscar.PlaneCurveModule.Point{fmpq}[Point with coordinates fmpq[0, 0], Point with coordinates fmpq[2, -2]]
AffinePlaneCurve[]
Point{fmpq}[Point with coordinates fmpq[0, 0], Point with coordinates fmpq[2, -2]]
```
"""
function curve_intersect(C::AffinePlaneCurve{S}, D::AffinePlaneCurve{S}) where S <: FieldElem
Expand Down Expand Up @@ -231,8 +231,8 @@ Affine plane curve defined by -x^5 - x^4*y + x^3*y^3 + x^2*y^4

julia> Oscar.curve_singular_locus(C)
2-element Vector{Vector{T} where T}:
Oscar.PlaneCurveModule.AffinePlaneCurve[Affine plane curve defined by x]
Oscar.PlaneCurveModule.Point[Point with coordinates fmpq[-1, 1], Point with coordinates fmpq[0, 0]]
AffinePlaneCurve[Affine plane curve defined by x]
Point[Point with coordinates fmpq[-1, 1], Point with coordinates fmpq[0, 0]]
```
"""
function curve_singular_locus(C::AffinePlaneCurve)
Expand Down Expand Up @@ -355,7 +355,7 @@ julia> P = Oscar.Point([QQ(0), QQ(0)])
Point with coordinates fmpq[0, 0]

julia> Oscar.tangent_lines(C, P)
Dict{Oscar.PlaneCurveModule.AffinePlaneCurve{fmpq}, Int64} with 2 entries:
Dict{AffinePlaneCurve{fmpq}, Int64} with 2 entries:
x => 4
x + y => 1
```
Expand Down
Loading