Elliptic Surfaces

See [SS19] for the theory of elliptic surfaces.

EllipticSurfaceType
EllipticSurface{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.

source

Constructors

elliptic_surfaceFunction
elliptic_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 field
  • euler_characteristic – the Euler characteristic of the Kodaira-Néron model of $E$.
  • mwl_gens – a vector of rational points of the generic fiber
  • is_basis – if set to false compute a reduced basis from mwl_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
source
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.

source
kodaira_neron_modelMethod
kodaira_neron_model(E::EllipticCurve) -> EllipticSurface

Return the Kodaira-Neron model of the elliptic curve E.

source

Attributes

generic_fiberMethod
generic_fiber(X::EllipticSurface) -> EllipticCurve

Return the generic fiber as an elliptic curve.

source
zero_sectionMethod
zero_section(X::EllipticSurface) -> AbsWeilDivisor

Return the zero section of the relatively minimal elliptic fibration $\pi\colon X \to C$.

source
euler_characteristicMethod
euler_characteristic(X::EllipticSurface) -> Int

Return the Euler characteristic $\chi(\mathcal{O}_X)$.

source
fibrationMethod
fibration(X::EllipticSurface)

Return the elliptic fibration $X \to \mathbb{P}^1$.

source
weierstrass_chartMethod
weierstrass_chart(X::EllipticSurface)

Return the Weierstrass chart of $X$ on its weierstrass_model.

source
weierstrass_chart_on_minimal_modelMethod
weierstrass_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.

source
weierstrass_modelMethod
weierstrass_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}).\]

source
weierstrass_contractionMethod
weierstrass_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.

source
fibration_on_weierstrass_modelMethod
fibration_on_weierstrass_model(X::EllipticSurface)

Return the elliptic fibration $W \to \mathbb{P}^1$ where $W$ is the Weierstrass model of $X$.

source

Reducible fibers and the trivial lattice

trivial_latticeMethod
trivial_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$.

Warning

The ordering of the basis is in general not canonical and may change in between sessions.

source
reducible_fibersMethod
reducible_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.
source
fiber_cartierFunction
fiber_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.

source
fiber_componentsMethod
fiber_components(X::EllipticSurface, P) -> Vector{<:AbsWeilDivisor}

Return the fiber components of the fiber over the point $P \in C$.

source

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_latticeMethod
algebraic_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$.

Warning

The ordering of the fiber components is in general not canonical and may change in between sessions.

source
mordell_weil_sublatticeMethod
mordell_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$).

source
mordell_weil_torsionMethod
mordell_weil_torsion(X::EllipticSurface) -> Vector{EllipticCurvePoint}

Return the torsion part of the Mordell-Weil group of the generic fiber of $X$.

source
sectionMethod
section(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.

source
basis_representationMethod
basis_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).

source

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!Method
set_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.

source
update_mwl_basis!Method
update_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$.

source
algebraic_lattice_primitive_closure!Method
algebraic_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.

source
algebraic_lattice_primitive_closureMethod
algebraic_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.

source

Morphisms

isomorphism_from_generic_fibersFunction
isomorphism_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$.

source
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$.

source
isomorphismsMethod
isomorphisms(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}\]

source
translation_morphismMethod
translation_morphism(X::EllipticSurface, P::EllipticCurvePoint) -> MorphismFromRationalFunctions

Return the automorphism of $X$ defined by fiberwise translation by the section $P$.

source

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_systemMethod
linear_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.

source
two_neighbor_stepMethod
two_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).
source
elliptic_parameterMethod
elliptic_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.

source
pushforward_on_algebraic_latticesMethod
pushforward_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$.

source

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.