Global Weierstrass models
... over concrete bases
A global Weierstrass model describes a particular form of an elliptic fibration. We focus on elliptic fibrations over base 3-folds $B3$. Consider the weighted projective space $\mathbb{P}^{2,3,1}$ with coordinates $x, y, z$. In addition, consider
- $f \in H^0( B_3, \overline{K}_{B_3}^{\otimes 4} )$,
- $g \in H^0( B_3, \overline{K}_{B_3}^{\otimes 6} )$,
Then form a $\mathbb{P}^{2,3,1}$-bundle over $B3$ such that
- $x$ transforms as a section of $2 \overline{K}_{B_3}$,
- $y$ transforms as a section of $3 \overline{K}_{B_3}$,
- $z$ transforms as a section of $0 \overline{K}_{B_3} = \mathcal{O}_{B_3}$.
In this 5-fold ambient space, a global Weierstrass model is the hypersurface defined by the vanishing of the Weierstrass polynomial $P_W = x^3 - y^2 + f x z^4 + g z^6$.
To construct a Weierstrass model as a hypersurface in an ambient space, we first need to construct the ambient space in question. For a toric base, one way to achieve this is to first focus on the Cox ring of the toric ambient space. This ring must be graded such that the Weierstrass polynomial is homogeneous and cuts out a Calabi-Yau hypersurface. Given this grading, one can perform a triangulation. This triangulation will typically take a long time to complete and yield a large number of candidate ambient spaces. Typically, one wishes to focus on those spaces which contain the toric base space in a manifest way. But even this criterion usually allows for many ambient spaces to be used.
To circumvent this obstacle, all our constructors operate in the opposite direction. That is, they begins by extracting the rays and maximal cones of the chosen toric base space. Subsequently, those rays and cones are extended to form one of the many toric ambient spaces. Note that the so-constructed ambient space need not be smooth.
We support the following constructors:
FTheoryTools.global_weierstrass_model
— Methodglobal_weierstrass_model(base::Oscar.AbstractNormalToricVariety)
This method constructs a global Weierstrass model over a given toric base 3-fold. The Weierstrass sections $f$ and $g$ are taken with (pseudo)random coefficients.
Examples
julia> using Oscar
julia> w = global_weierstrass_model(test_base())
A global Weierstrass model over a concrete base
julia> is_smooth(toric_ambient_space(w))
false
FTheoryTools.global_weierstrass_model_over_projective_space
— Methodglobal_weierstrass_model_over_projective_space()
This method constructs a global Weierstrass model over the 3-dimensional projective space.
Examples
julia> using Oscar
julia> global_weierstrass_model_over_projective_space()
A global Weierstrass model over a concrete base
FTheoryTools.global_weierstrass_model
— Methodglobal_weierstrass_model(f::MPolyElem{fmpq}, g::MPolyElem{fmpq}, base::Oscar.AbstractNormalToricVariety)
This method operates analogously to global_weierstrass_model(base::Oscar.AbstractNormalToricVariety)
. The only difference is that the Weierstrass sections $f$ and $g$ can be specified with non-generic values.
Examples
julia> using Oscar
julia> base = test_base()
A normal toric variety
julia> f = sum([rand(Int) * b for b in basis_of_global_sections(anticanonical_bundle(base)^4)]);
julia> g = sum([rand(Int) * b for b in basis_of_global_sections(anticanonical_bundle(base)^6)]);
julia> w = global_weierstrass_model(f, g, base)
A global Weierstrass model over a concrete base
julia> is_smooth(toric_ambient_space(w))
false
... over not fully specified bases
A global Weierstrass model can also be constructed over a base space that is not fully specified. Rather, it assumes that a base space exists such that the Weierstrass sections $f$ and $g$ are well-defined, so that the Weierstrass model in question is well-defined.
For many practical applications, one wishes to assume a further specialize the Weierstrass sections $f$ and $g$. This has the advantage that one can engineer singularity loci or even the singularity type over a specific locus. To some extend, this is the backbone of many F-theory constructions.
Consequently, the construction of such models accepts a polynomial ring whose variables are the sections used in the desired factorization of the Weierstrass sections $f$ and $g$.
In theory, one can consider the indeterminates of this auxiliary ring as a (possilby redundant) set of local coordinate of the base space. For the computer implementation, this ring will therefore serve as the coordinate ring of an auxiliary toric base space, namely an affine space with those coordinates.
For such geometries, we support the following functionality.
FTheoryTools.global_weierstrass_model
— Methodglobal_weierstrass_model(poly_f::MPolyElem{fmpq}, poly_g::MPolyElem{fmpq}, auxiliary_base_ring::MPolyRing, d::Int)
This method constructs a global Weierstrass model over a base space that is not fully specified. The following example illustrates this approach.
Examples
julia> using Oscar
julia> auxiliary_base_ring, (f, g, x) = QQ["f", "g", "x"];
julia> w = global_weierstrass_model(f, g, auxiliary_base_ring, 3)
A global Weierstrass model over a not fully specified base
julia> weierstrass_polynomial(w)
f*x*z^4 + g*z^6 + x^3 - y^2
julia> toric_base_space(w)
[ Info: Base space was not fully specified. Returning AUXILIARY base space.
A normal toric variety
julia> toric_ambient_space(w)
[ Info: Base space was not fully specified. Returning AUXILIARY ambient space.
A normal, simplicial toric variety
julia> dim(toric_ambient_space(w))
5
Attributes
FTheoryTools.weierstrass_section_f
— Methodweierstrass_section_f(w::GlobalWeierstrassModel)
Return the polynomial $f$ used for the construction of the global Weierstrass model.
julia> using Oscar
julia> w = global_weierstrass_model(test_base())
A global Weierstrass model over a concrete base
julia> weierstrass_section_f(w);
FTheoryTools.weierstrass_section_g
— Methodweierstrass_section_g(w::GlobalWeierstrassModel)
Return the polynomial $g$ used for the construction of the global Weierstrass model.
julia> using Oscar
julia> w = global_weierstrass_model(test_base())
A global Weierstrass model over a concrete base
julia> weierstrass_section_g(w);
FTheoryTools.weierstrass_polynomial
— Methodweierstrass_polynomial(w::GlobalWeierstrassModel)
Return the Weierstrass polynomial of the global Weierstrass model.
julia> using Oscar
julia> w = global_weierstrass_model(test_base())
A global Weierstrass model over a concrete base
julia> weierstrass_polynomial(w);
FTheoryTools.cy_hypersurface
— Methodcy_hypersurface(w::GlobalWeierstrassModel)
Return the Calabi-Yau hypersurface in the toric ambient space which defines the global Weierstrass model.
julia> using Oscar
julia> w = global_weierstrass_model(test_base())
A global Weierstrass model over a concrete base
julia> cy_hypersurface(w)
A closed subvariety of a normal toric variety
AbstractAlgebra.discriminant
— Methoddiscriminant(w::GlobalWeierstrassModel)
Return the discriminant $\Delta = 4 f^3 + 27 g^2$.
julia> using Oscar
julia> w = global_weierstrass_model(test_base())
A global Weierstrass model over a concrete base
julia> discriminant(w);
In case the Weierstrass model is constructed over a not fully specified base, it is nontheless possibly to construct an auxiliary base space as well as an auxiliary ambient space. The (auxiliary) base and ambient space can be accessed with the following functions:
FTheoryTools.toric_base_space
— Methodtoric_base_space(w::GlobalWeierstrassModel)
Return the toric base space of the global Weierstrass model.
julia> using Oscar
julia> w = global_weierstrass_model(test_base())
A global Weierstrass model over a concrete base
julia> is_smooth(toric_base_space(w))
true
FTheoryTools.toric_ambient_space
— Methodtoric_ambient_space(w::GlobalWeierstrassModel)
Return the toric base space of the global Weierstrass model.
julia> using Oscar
julia> w = global_weierstrass_model(test_base())
A global Weierstrass model over a concrete base
julia> is_smooth(toric_ambient_space(w))
false
To tell if they are auxiliary or not, one can use base_fully_specified(w)
, which returns true
in case the Tate model is defined over a concrete base and false
otherwise.
Properties
FTheoryTools.base_fully_specified
— Methodbase_fully_specified(t::GlobalWeierstrassModel)
Return true
is the Weierstrass model has a concrete base space and false
otherwise.
julia> using Oscar
julia> w = global_weierstrass_model(test_base())
A global Weierstrass model over a concrete base
julia> base_fully_specified(w)
true
Singular loci
For applications in F-theory, singular elliptic fibrations are key (cf. Timo Weigand (2018) and references therein). The general approach is to not work with the singular space directly. Rather, one resolves the singularities in order to obtain a smooth space instead. Subsequently, one performs computations on this smooth space.
In this sense, knowledge of the singular loci is a first step to a successful analysis of such a geometry. For this, we provide the following functionality.
FTheoryTools.singular_loci
— Methodsingular_loci(w::GlobalWeierstrassModel)
Return the singular loci of the global Weierstrass model, along with the order of vanishing of $(f, g, \Delta)$ at each locus and the refined Tate fiber type.
For the time being, we either explicitly or implicitly focus on toric varieties as base spaces. Explicitly, in case the user provides such a variety as base space, and implicitly, in case we work over a non-fully specified base. This has the advantage that we can "filter out" trivial singular loci.
Specifically, recall that every closed subvariety of a simplicial toric variety is of the form $V(I)$, where $I$ is a homogeneous ideal of the Cox ring. Let $B$ be the irrelevant ideal of this toric variety. Then, by proposition 5.2.6. of David A. Cox, John B. Little, Henry K. Schenck (2011), $V(I)$ is trivial/empty iff $B^l \subseteq I$ for a suitable $l \geq 0$. This can be checked by checking if the saturation $I:B^\infty$ is the ideal generated by $1$.
By treating a not-fully specified base space implicitly as toric space, we can extend this result straightforwardly to this situation also. This is the reason for constructing this auxiliary base space.
Let us demonstrate the functionality by computing the singular loci of a Type $III$ Tate model Sheldon Katz, David R. Morrison, Sakura Schafer-Nameki, James Sully (2011). In this case, we will consider a global Tate model over a non-fully specified base. The Tate sections are factored as follows:
- $a_1 = a_{11} w^1$,
- $a_2 = a_{21} w^1$,
- $a_3 = a_{31} w^1$,
- $a_4 = a_{41} w^1$,
- $a_6 = a_{62} w^2$.
For this factorization, we expect a singularity of Kodaira type $III$ over the divisor $W = {w = 0}$, as desired. So this should be one irreducible component of the discriminant. Moreover, we should find that the discriminant vanishes to order 3 on $W = {w = 0}$, while the Weierstrass sections $f$ and $g$ vanish to orders 1 and 2, respectively.
Let us verify this by turning this global Tate model into a Weierstrass model and then computing the singular loci of the discriminant of this Weierstrass model.
julia> using Oscar
julia> auxiliary_base_ring, (a11, a21, a31, a41, a62, w) = QQ["a11", "a21", "a31", "a41", "a62", "w"];
julia> a1 = a11 * w;
julia> a2 = a21 * w;
julia> a3 = a31 * w;
julia> a4 = a41 * w;
julia> a6 = a62 * w^2;
julia> ais = [a1, a2, a3, a4, a6];
julia> t = global_tate_model(ais, auxiliary_base_ring, 3)
A global Tate model over a not fully specified base
julia> weier = global_weierstrass_model(t)
[ Info: Base space was not fully specified. Returning AUXILIARY ambient space.
[ Info: Base space was not fully specified. Returning AUXILIARY base space.
A global Weierstrass model over a not fully specified base
julia> length(singular_loci(weier))
[ Info: Base space was not fully specified. Returning AUXILIARY base space.
2
julia> singular_loci(weier)[2]
(ideal(w), (1, 2, 3), "III")