Elliptic Surfaces
See [SS19] for the theory of elliptic surfaces.
EllipticSurface
— TypeEllipticSurface{BaseField<:Field, BaseCurveFieldType} <: AbsCoveredScheme{BaseField}
A relatively minimal elliptic surface defined as follows.
A genus $1$-fibration is a proper map
\[\pi \colon X \to C\]
from a smooth projective surface $X$ to a smooth projective curve $C$ whose generic fiber is a curve of (arithmetic) genus $1$.
The fibration is relatively minimal if its fibers do not contain any $(-1)$-curves. We call the fibration elliptic if it is relatively minimal and comes equipped with a section $\sigma_0\colon \mathbb{P}^1 \to X$. This turns the generic fiber of $\pi$ into an elliptic curve $E/k(C)$ where $k(C)$ is the function field of the curve $C$.
We further require that $\pi$ has at least one singular fiber and that the base field $k$ is perfect.
For now functionality is restricted to $C = \mathbb{P}^1$.
This datatype stores a subgroup of the Mordell-Weil group $E(k(C))$. It is referred to as the Mordell-Weil subgroup of X
.
Constructors
elliptic_surface
— Functionelliptic_surface(generic_fiber::EllipticCurve,
euler_characteristic::Int,
mwl_gens::Vector{<:EllipticCurvePoint}=EllipticCurvePoint[];
is_basis::Bool=true)
-> EllipticSurface
Return the relatively minimal elliptic surface with generic fiber $E/k(t)$.
This is also known as the Kodaira-Néron model of $E$.
Input:
generic_fiber
– an elliptic curve over a function fieldeuler_characteristic
– the Euler characteristic of the Kodaira-Néron model of $E$.mwl_gens
– a vector of rational points of the generic fiberis_basis
– if set tofalse
compute a reduced basis frommwl_gens
Examples
julia> Qt, t = polynomial_ring(QQ, :t);
julia> Qtf = fraction_field(Qt);
julia> E = elliptic_curve(Qtf, [0,0,0,0,t^5*(t-1)^2]);
julia> X3 = elliptic_surface(E, 2)
Elliptic surface
over rational field
with generic fiber
-x^3 + y^2 - t^7 + 2*t^6 - t^5
elliptic_surface(g::MPolyRingElem, P::Vector{<:RingElem})
Transform a bivariate polynomial g
of the form y^2 - Q(x)
with Q(x)
of degree at most $4$ to Weierstrass form, apply Tate's algorithm and return the corresponding relatively minimal elliptic surface as well as the coordinate transformation.
kodaira_neron_model
— Methodkodaira_neron_model(E::EllipticCurve) -> EllipticSurface
Return the Kodaira-Neron model of the elliptic curve E
.
Attributes
generic_fiber
— Methodgeneric_fiber(X::EllipticSurface) -> EllipticCurve
Return the generic fiber as an elliptic curve.
zero_section
— Methodzero_section(X::EllipticSurface) -> AbsWeilDivisor
Return the zero section of the relatively minimal elliptic fibration $\pi\colon X \to C$.
euler_characteristic
— Methodeuler_characteristic(X::EllipticSurface) -> Int
Return the Euler characteristic $\chi(\mathcal{O}_X)$.
fibration
— Methodfibration(X::EllipticSurface)
Return the elliptic fibration $X \to \mathbb{P}^1$.
weierstrass_chart
— Methodweierstrass_chart(X::EllipticSurface)
Return the Weierstrass chart of $X$ on its weierstrass_model
.
weierstrass_chart_on_minimal_model
— Methodweierstrass_chart_on_minimal_model(X::EllipticSurface)
Return an affine chart $U$ of $X$ which is isomorphic to the weierstrass_chart
of $X$ on its weierstrass_model
, but with all singular fibers removed.
More precisely, the affine coordinates of $U$ are $(x,y,t)$ and the chart is constructed as the vanishing locus of
\[y^2 + a_1(t) xy + a_3 y = x^3 + a_2 x^2 + a_4 x + a_6\]
minus the reducible singular fibers.
weierstrass_model
— Methodweierstrass_model(X::EllipticSurface) -> CoveredScheme, CoveredClosedEmbedding
Return the Weierstrass model $W$ of $X$ and the inclusion in its ambient projective bundle
\[S\subseteq \mathbb{P}( \mathcal{O}_{\mathbb{P}^1}(-2s) \oplus \mathcal{O}_{\mathbb{P}^1}(-3s) \oplus \mathcal{O}_{\mathbb{P}^1}).\]
weierstrass_contraction
— Methodweierstrass_contraction(X::EllipticSurface) -> SchemeMor
Return the contraction morphism of $X$ to its Weierstrass model.
This triggers the computation of the underlying_scheme
of $X$ as a blowup from its Weierstrass model. It may take a few minutes.
fibration_on_weierstrass_model
— Methodfibration_on_weierstrass_model(X::EllipticSurface)
Return the elliptic fibration $W \to \mathbb{P}^1$ where $W$ is the Weierstrass model of $X$.
Reducible fibers and the trivial lattice
trivial_lattice
— Methodtrivial_lattice(X::EllipticSurface) -> Vector{AbsWeilDivisor}, ZZMatrix
Return a basis for the trivial lattice as well as its Gram matrix.
The trivial lattice is the sublattice of the numerical lattice spanned by fiber components and the zero section of $X$.
The ordering of the basis is in general not canonical and may change in between sessions.
reducible_fibers
— Methodreducible_fibers(X::EllipticSurface)
Return the reducible fibers of $X$.
The output format is the following: A list [F1, ..., Fn]
where each entry Fi
represents a reducible fiber.
The list $F$ has the following entries:
- A point $P \in \mathbb{P}^{1}$ such that $F = \pi^{-1}(P)$;
- The ADE-type of the fiber;
- The fiber $F$ as a Weil divisor, including its multiplicities;
- The irreducible components of the fiber. The first component intersects the zero section;
- Their intersection matrix.
fiber_cartier
— Functionfiber_cartier(X::EllipticSurface, P::Vector = ZZ.([0,1])) -> EffectiveCartierDivisor
Return the fiber of $\pi\colon X \to C$ over $P\in C$ as a Cartier divisor.
fiber_components
— Methodfiber_components(X::EllipticSurface, P) -> Vector{<:AbsWeilDivisor}
Return the fiber components of the fiber over the point $P \in C$.
Mordell Weil group and related lattices
Since we require that $\pi \colon X \to C$ has a section, the generic fibre of $\pi$ is an elliptic curve $E/k(C)$. The group $E(k(C))$ of its rational points is called the Mordell-Weil group. It is a finitely generated abelian group. In general it is difficult to compute.
The height paring gives the free part of the Mordell-Weil group the structure of a quadratic lattice over the integers – the so called Mordell-Weil lattice.
algebraic_lattice
— Methodalgebraic_lattice(X) -> Vector{AbsWeilDivisor}, ZZLat
Return the sublattice $L$ of the numerical lattice spanned by fiber components, torsion sections and the sections provided at the construction of $X$.
The first return value is a list $B$ of vectors corresponding to the standard basis of the ambient space of L
. The second consists of generators $T$ for the torsion part of the Mordell-Weil group. Together $B$ and $L$ generate the algebraic lattice. However, they are linearly dependent. The third return value is the lattice $L$.
The ordering of the fiber components is in general not canonical and may change in between sessions.
mordell_weil_sublattice
— Methodmordell_weil_sublattice(X::EllipticSurface) -> Vector{EllipticCurvePoint}, ZZLat
Return the (sublattice) of the Mordell-Weil lattice of $X$ spanned by the sections of $X$ supplied at its construction.
The Mordell-Weil lattice is represented in the same vector space as the algebraic lattice (with quadratic form rescaled by $-1$).
mordell_weil_torsion
— Methodmordell_weil_torsion(X::EllipticSurface) -> Vector{EllipticCurvePoint}
Return the torsion part of the Mordell-Weil group of the generic fiber of $X$.
section
— Methodsection(X::EllipticSurface, P::EllipticCurvePoint) -> EllipticSurfaceSection
Given a rational point $P\in E(C)$ of the generic fiber $E/C$ of $\pi\colon X \to C$, return its closure in $X$ as a AbsWeilDivisor
.
basis_representation
— Methodbasis_representation(X::EllipticSurface, D::AbsWeilDivisor)
Return the vector representing the numerical class of $D$ with respect to the basis of the ambient space of algebraic_lattice(X)
.
Updating the Mordell Weil group
Since the Mordell-Weil group is hard to compute, the user has to provide its generators, or at least generators of a subgroup at construction of the surface. In some cases it may be convenient to enter the basis after creation, although it is in general not recommended. The following function are meant for this purpose.
set_mordell_weil_basis!
— Methodset_mordell_weil_basis!(X::EllipticSurface, mwl_basis::Vector{EllipticCurvePoint})
Set a basis for the Mordell-Weil sublattice of $X$ or at least of a sublattice.
This invalidates previous computations depending on the generators of the Mordell Weil lattice such as the algebraic_lattice
. Use with care.
The points in mwl_basis
must be linearly independent.
update_mwl_basis!
— Methodupdate_mwl_basis!(X::EllipticSurface, mwl_gens::Vector{<:EllipticCurvePoint})
Compute a reduced basis of the sublattice of the Mordell-Weil lattice spanned by mwl_gens
and set these as the new generators of the Mordell-Weil lattice of $X$.
algebraic_lattice_primitive_closure!
— Methodalgebraic_lattice_primitive_closure!(X::EllipticSurface)
Compute the primitive closure of the algebraic lattice of $X$ inside its numerical lattice and update the generators of its Mordell–Weil group accordingly.
The algorithm works by computing suitable divison points in its Mordell Weil group.
algebraic_lattice_primitive_closure
— Methodalgebraic_lattice_primitive_closure(X::EllipticSurface, p) -> Vector{<:EllipticCurvePoint}
Return sections $P_1,\dots P_n$ of the generic fiber, such that together with the generators of the algebraic lattice $A$, they generate
\[\frac{1}{p} A \cap N\]
where $N$ is the numerical lattice of $X$.
The algorithm proceeds by computing division points in the Mordell-Weil subgroup of X
and using information coming from the discriminant group of the algebraic lattice to do so.
Morphisms
isomorphism_from_generic_fibers
— Functionisomorphism_from_generic_fibers(X::EllipticSurface, Y::EllipticSurface, f::Hecke.EllCrvIso) -> MorphismFromRationalFunctions
Given an isomorphism $f$ between the generic fibers of $X$ and $Y$, return the corresponding isomorphism of $X$ and $Y$ over $\mathbb{P}^1$.
isomorphism_from_generic_fibers(X::EllipticSurface, Y::EllipticSurface) -> MorphismFromRationalFunctions
Given given two elliptic surfaces $X$ and $Y$ whose generic fibers are isomorphic, return the corresponding isomorphism of $X$ and $Y$ over $\mathbb{P}^1$.
isomorphisms
— Methodisomorphisms(X::EllipticSurface, Y::EllipticSurface) -> Vector{MorphismFromRationalFunctions}
Given two elliptic surfaces $X \to \mathbb{P}^1$ and $Y \to \mathbb{P}^1$ return all isomorphisms $X \to Y$ such that there exists Möbius transformation $\mathbb{P}^1 \to \mathbb{P}^1$ fitting in the following commutative diagram.
\[\begin{array}{ccc} X & \to & Y \\ \downarrow & & \downarrow\\ \mathbb{P}^1 & \to & \mathbb{P}^1 \end{array}\]
translation_morphism
— Methodtranslation_morphism(X::EllipticSurface, P::EllipticCurvePoint) -> MorphismFromRationalFunctions
Return the automorphism of $X$ defined by fiberwise translation by the section $P$.
Fibration hopping
The methods in this section are available only for elliptically fibered K3 surfaces. A K3 surface $X$ may admit several elliptic fibrations
\[\pi \colon X \to \mathbb{P}^1.\]
Fibration hopping is a way to compute them. See e.g. [BE23] and [BZ23].
A divisor $F$ on $X$ is called elliptic if it is primitive, isotropic and nef. The linear system $|F|$ of an elliptic divisor $F$ induces a genus one fibration on $X$. Conversely, the class of a fiber $F$ of an elliptic fibration is an elliptic divisor. Two elliptic fibrations on $X$ with elliptic divisors $F_1$ and $F_2$ are called $n$-neighbors if their intersection number is $F_1.F_2=n$.
linear_system
— Methodlinear_system(X::EllipticSurface, P::EllipticCurvePoint, k::Int) -> LinearSystem
Compute the linear system $|O + P + k F|$ on the elliptic surface $X$. Here $F$ is the class of the fiber over $[0:1]$, $O$ the zero section and $P$ any section given as a point on the generic fiber.
The linear system is represented in terms of the Weierstrass coordinates.
two_neighbor_step
— Methodtwo_neighbor_step(X::EllipticSurface, F1::Vector{QQFieldElem})
Let $F$ be the class of a fiber of the elliptic fibration on $X$. Given an isotropic nef divisor $F_1$ with $F_1.F = 2$, compute the linear system $|F_1|$ and return the corresponding generic fiber as a double cover C
of the projective line branched over four points.
Input: $F_1$ is represented as a vector in the algebraic_lattice(X)
$X$ must be a K3 surface
Output: A tuple (C, (x1, y1, t1))
defined as follows.
C
is given by a polynomial $y_1^2 - q(x_1)$ in $k(t_1)[x_1,y_1]$ with $q$ of degree $3$ or $4$.- (x1,y1,t1) are expressed as rational functions in terms of the weierstrass coordinates
(x,y,t)
.
elliptic_parameter
— Methodelliptic_parameter(X::EllipticSurface, F::Vector{QQFieldElem}) -> LinearSystem
Return the elliptic parameter $u$ of the divisor class F
.
The input F
must be given with respect to the basis of algebraic_lattice(X)
and be an isotropic nef divisor. This method assumes that $X$ is a K3 surface.
pushforward_on_algebraic_lattices
— Methodpushforward_on_algebraic_lattices(f::MorphismFromRationalFunctions{<:EllipticSurface, <:EllipticSurface}) -> QQMatrix
Return the pushforward $f_*: V_1 \to V_2$ where $V_i$ is the ambient quadratic space of the algebraic_lattice
.
This assumes that the image $f_*(V_1)$ is contained in $V_2$. If this is not the case, you will get $f_*$ composed with the orthogonal projection to $V_2$.
Contact
Please direct questions about this part of OSCAR to the following people:
You can ask questions in the OSCAR Slack.
Alternatively, you can raise an issue on github.