Normal Toric Varieties
Introduction
We introduce two main types of normal toric varieties, distinguishing between the affine and non-affine case:
AffineNormalToricVarietyis the toric variety associated to a cone $\sigma$, denoted by $U_{\sigma}$ in CLS11NormalToricVarietyis the toric variety associated to a polyhedral fan $\Sigma$, denoted by $X_{\Sigma}$ in CLS11
The lattice is always assumed to be the standard lattice $\mathbb{Z}^n$. Transformations for non-standard lattices will have to be done by the user.
Constructors
JToric.AffineNormalToricVariety — MethodAffineNormalToricVariety(C::Cone)Construct the affine normal toric variety $U_{C}$ corresponding to a polyhedral cone C.
Examples
Set C to be the positive orthant in two dimensions.
julia> C = Oscar.positive_hull([1 0; 0 1])
A polyhedral cone in ambient dimension 2
julia> antv = AffineNormalToricVariety(C)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2JToric.NormalToricVariety — MethodNormalToricVariety(C::Cone)Construct the (affine) normal toric variety $X_{\Sigma}$ corresponding to a polyhedral fan $\Sigma = C$ consisting only of the cone C.
Examples
Set C to be the positive orthant in two dimensions.
julia> C = Oscar.positive_hull([1 0; 0 1])
A polyhedral cone in ambient dimension 2
julia> ntv = NormalToricVariety(C)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2JToric.NormalToricVariety — MethodNormalToricVariety(PF::PolyhedralFan)Construct the normal toric variety $X_{PF}$ corresponding to a polyhedral fan PF.
Examples
Take PF to be the normal fan of the square.
julia> square = Oscar.cube(2)
A polyhedron in ambient dimension 2
julia> nf = Oscar.normal_fan(square)
A polyhedral fan in ambient dimension 2
julia> ntv = NormalToricVariety(nf)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2JToric.NormalToricVariety — MethodNormalToricVariety(P::Polyhedron)Construct the normal toric variety $X_{\Sigma_P}$ corresponding to the normal fan $\Sigma_P$ of the given polyhedron P.
Note that this only coincides with the projective variety associated to P, if P is normal.
Examples
Set P to be a square.
julia> square = Oscar.cube(2)
A polyhedron in ambient dimension 2
julia> ntv = NormalToricVariety(square)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2JToric.NormalToricVariety — MethodNormalToricVariety( r::Matrix{Int}, c::Vector{Vector{Int}} )Construct the normal toric variety whose fan has ray generators r and maximal cones c.
Examples
julia> NormalToricVariety( [-1 5; 0 1; 1 0; 0 -1], [[1,2],[2,3],[3,4],[4,1]] )
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2Oscar.Geometry.projective_space — Functionprojective_space( d::Int )Construct the projective space of dimension d.
Examples
julia> projective_space( 2 )
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2JToric.hirzebruch_surface — Functionhirzebruch_surface( r::Int )Constructs the r-th Hirzebruch surface.
Examples
julia> hirzebruch_surface( 5 )
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2JToric.del_pezzo — FunctiondelPezzo( b::Int )Constructs the delPezzo surface with b blowups for b at most 3.
Examples
julia> del_pezzo( 3 )
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2Properties of toric varieties
Hecke.isnormal — Function isnormal(K::AnticNumberField) -> BoolReturns true if $K$ is a normal extension of $\mathbb Q$, false otherwise.
isnormal(C::ClassField) -> BoolFor a class field $C$ defined over a normal base field $k$, decide if $C$ is normal over $Q$.
isnormal(a::AlgAssAbsOrdIdl) -> BoolReturns true if $a$ is a normal ideal and false otherwise.
isnormal(G::T, H::T) where T <: GAPGroupReturn whether the subgroup H is normal in G, i. e., H is invariant under conjugation with elements of G.
isnormal(A::MPolyQuo)Given an affine algebra A over a perfect field, return true if A is normal, false otherwise.
CAVEAT: The function computes the normalization of A. This may take some time.
isnormal(P::Polyhedron)Check whether P is normal.
Examples
The 3-cube is normal.
julia> C = cube(3)
A polyhedron in ambient dimension 3
julia> isnormal(C)
trueBut this pyramid is not:
julia> P = convex_hull([0 0 0; 0 1 1; 1 1 0; 1 0 1]);
julia> isnormal(P)
falseisnormal( v::AbstractNormalToricVariety )Checks if the normal toric variety v is normal. (This function is somewhat tautological at this point.)
Examples
julia> isnormal(projective_space( 2 ))
trueJToric.isaffine — Functionisaffine( v::AbstractNormalToricVariety )Checks if the normal toric variety v is affine.
Examples
julia> isaffine( projective_space( 2 ) )
falseJToric.isprojective — Functionisprojective( v::AbstractNormalToricVariety )Checks if the normal toric variety v is projective, i.e. if the fan of v is the the normal fan of a polytope.
Examples
julia> isprojective( projective_space( 2 ) )
trueHecke.issmooth — Functionissmooth(C::AffinePlaneCurve{S}, P::Point{S}) where S <: FieldElemThrow an error if P is not a point of C, return false if P is a singular point of C, and true if P is a smooth point of C.
Example
julia> R, (x, y) = PolynomialRing(QQ, ["x", "y"])
(Multivariate Polynomial Ring in x, y over Rational Field, fmpq_mpoly[x, y])
julia> C = Oscar.AffinePlaneCurve(x^2*(x+y)*(y^3-x^2))
Affine plane curve defined by -x^5 - x^4*y + x^3*y^3 + x^2*y^4
julia> P = Oscar.Point([QQ(0), QQ(0)])
Point with coordinates fmpq[0, 0]
julia> Oscar.issmooth(C, P)
falseissmooth(C::ProjectivePlaneCurve{S}, P::Oscar.Geometry.ProjSpcElem{S}) where S <: FieldElemThrow an error if P is not a point of C, return false if P is a singular point of C, and true if P is a smooth point of C.
Example
julia> S, (x, y, z) = PolynomialRing(QQ, ["x", "y", "z"])
(Multivariate Polynomial Ring in x, y, z over Rational Field, fmpq_mpoly[x, y, z])
julia> T, _ = grade(S)
(Multivariate Polynomial Ring in x, y, z over Rational Field graded by
x -> [1]
y -> [1]
z -> [1], MPolyElem_dec{fmpq, fmpq_mpoly}[x, y, z])
julia> C = Oscar.ProjPlaneCurve(x^2*(x+y)*(y^3-x^2*z))
Projective plane curve defined by -x^5*z - x^4*y*z + x^3*y^3 + x^2*y^4
julia> PP = projective_space(QQ, 2)
(Projective space of dim 2 over Rational Field
, MPolyElem_dec{fmpq, fmpq_mpoly}[x[0], x[1], x[2]])
julia> P = Oscar.Geometry.ProjSpcElem(PP[1], [QQ(0), QQ(0), QQ(1)])
(0 : 0 : 1)
julia> Oscar.issmooth(C, P)
falseissmooth(P::Polyhedron)Check whether P is smooth.
Examples
A cube is always smooth.
julia> C = cube(8);
julia> issmooth(C)
trueissmooth(PF::PolyhedralFan)Determine whether PF is smooth.
Examples
Even though the cones of this fan cover the positive orthant together, one of these und thus the whole fan is not smooth.
julia> PF = PolyhedralFan([0 1; 2 1; 1 0], IncidenceMatrix([[1, 2], [2, 3]]));
julia> issmooth(PF)
falseissmooth( v::AbstractNormalToricVariety )Checks if the normal toric variety v is smooth.
Examples
julia> issmooth( projective_space( 2 ) )
trueOscar.iscomplete — Functioniscomplete(PF::PolyhedralFan)Determine whether PF is complete, i.e. its support, the set-theoretic union of its cones, covers the whole space.
Examples
Normal fans of polytopes are complete.
julia> iscomplete(normal_fan(cube(3)))
trueiscomplete( v::AbstractNormalToricVariety )Checks if the normal toric variety v is complete.
Examples
julia> iscomplete( projective_space( 2 ) )
trueJToric.has_torusfactor — Functionhas_torusfactor( v::AbstractNormalToricVariety )Checks if the normal toric variety v has a torus factor.
Examples
julia> has_torusfactor( projective_space( 2 ) )
falseJToric.is_orbifold — Functionis_orbifold( v::AbstractNormalToricVariety )Checks if the normal toric variety v is an orbifold.
Examples
julia> is_orbifold( projective_space( 2 ) )
trueJToric.issimplicial — Functionissimplicial( v::AbstractNormalToricVariety )Checks if the normal toric variety v is simplicial. Hence, this function works just as is_orbifold. It is implemented for user convenience.
Examples
julia> issimplicial( projective_space( 2 ) )
trueJToric.is_gorenstein — Functionis_gorenstein( v::AbstractNormalToricVariety )Checks if the normal toric variety v is Gorenstein.
Examples
julia> is_gorenstein( projective_space( 2 ) )
trueJToric.is_q_gorenstein — Functionis_q_gorenstein( v::AbstractNormalToricVariety )Checks if the normal toric variety v is Q-Gorenstein.
Examples
julia> is_q_gorenstein( projective_space( 2 ) )
trueJToric.is_fano — Functionis_fano( v::AbstractNormalToricVariety )Checks if the normal toric variety v is fano.
Examples
julia> is_fano( projective_space( 2 ) )
trueAttributes of toric varieties
AbstractAlgebra.Generic.dim — Functiondim(Y::YoungTableau) -> BigIntReturn the dimension (using hook-length formula) of the irreducible representation of permutation group $S_n$ associated the partition Y.part.
Since the computation overflows easily BigInt is returned. You may perform the computation of the dimension in different type by calling dim(Int, Y).
Examples
julia> dim(YoungTableau([4,3,1]))
70
julia> dim(YoungTableau([3,1])) # the regular representation of S_4
3dim(M::FreeModule{T}) where T <: FieldElementReturn the dimension of the given vector space.
dim(N::Submodule{T}) where T <: FieldElementReturn the dimension of the given vector subspace.
dim(N::QuotientModule{T}) where T <: FieldElementReturn the dimension of the given vector quotient space.
dim(V::AbsSpace) -> IntReturn the dimension of the space V.
dim(S::ZpGenus) -> fmpzReturn the dimension of this genus.
dim(G::ZGenus) -> IntReturn the dimension of this genus.
dim(I::MPolyIdeal)Return the Krull dimension of I.
Examples
julia> R, (x, y, z) = PolynomialRing(QQ, ["x", "y", "z"])
(Multivariate Polynomial Ring in x, y, z over Rational Field, fmpq_mpoly[x, y, z])
julia> I = ideal(R, [y-x^2, x-z^3])
ideal(-x^2 + y, x - z^3)
julia> dim(I)
1dim(a::MPolyQuoIdeal)Return the Krull dimension of a.
Examples
julia> R, (x, y, z) = PolynomialRing(QQ, ["x", "y", "z"], ordering=:degrevlex)
(Multivariate Polynomial Ring in x, y, z over Rational Field, fmpq_mpoly[x, y, z])
julia> Q, q = quo(R, ideal(R, [x^3*y^2-y^3*x^2, x*y^4-x*y^2]))
(Quotient of Multivariate Polynomial Ring in x, y, z over Rational Field by ideal(x^3*y^2 - x^2*y^3, x*y^4 - x*y^2), Map from
Multivariate Polynomial Ring in x, y, z over Rational Field to Quotient of Multivariate Polynomial Ring in x, y, z over Rational Field by ideal(x^3*y^2 - x^2*y^3, x*y^4 - x*y^2) defined by a julia-function with inverse
)
julia> a = ideal(Q,[x^3*y^4-x+y, x*y+y^2*x])
ideal(x^3*y^4 - x + y, x*y^2 + x*y)
julia> dim(a)
1dim(Q::MPolyQuo)Return the Krull dimension of the quotient ring Q.
Examples
julia> R, (x, y, z) = PolynomialRing(QQ, ["x", "y", "z"])
(Multivariate Polynomial Ring in x, y, z over Rational Field, fmpq_mpoly[x, y, z])
julia> Q, _ = quo(R, ideal(R, [y-x^2, x-z^3]))
(Quotient of Multivariate Polynomial Ring in x, y, z over Rational Field by ideal(-x^2 + y, x - z^3), Map from
Multivariate Polynomial Ring in x, y, z over Rational Field to Quotient of Multivariate Polynomial Ring in x, y, z over Rational Field by ideal(-x^2 + y, x - z^3) defined by a julia-function with inverse
)
julia> dim(Q)
1dim(C::Cone)Return the dimension of C.
Examples
The cone C in this example is 2-dimensional within a 3-dimensional ambient space.
julia> C = Cone([1 0 0; 1 1 0; 0 1 0]);
julia> dim(C)
2dim(P::Polyhedron)Return the dimension of P.
Examples
julia> V = [1 2 3; 1 3 2; 2 1 3; 2 3 1; 3 1 2; 3 2 1];
julia> P = convex_hull(V);
julia> dim(P)
2dim(PF::PolyhedralFan)Return the dimension of PF.
Examples
This fan in the plane contains a 2-dimensional cone and is thus 2-dimensional itself.
julia> PF = PolyhedralFan([1 0; 0 1; -1 -1], IncidenceMatrix([[1, 2], [3]]));
julia> dim(PF)
2dim( v::AbstractNormalToricVariety )Computes the dimension of the normal toric variety v.
JToric.dim_of_torusfactor — Functiondim_of_torusfactor( v::AbstractNormalToricVariety )Computes the dimension of the torus factor of the normal toric variety v.
Hecke.picard_group — Functionpicard_group(O::NfOrd) -> GrpAbFinGen, MapClassGrpReturns the Picard group of $O$ and a map from the group in the set of (invertible) ideals of $O$.
picard_group(O::AlgAssAbsOrd, prepare_ref_disc_log::Bool = false)
-> GrpAbFinGen, MapPicardGroupGiven an order $O$ in a commutative algebra over $\mathbb Q$, this function returns the picard group of $O$. If prepare_ref_disc_log is true, then (possibly expensive) preparations for the computation of refined discrete logarithms in non maximal orders are done.
JToric.nef_cone — Functionnef_cone( v::NormalToricVariety )Computes the nef cone of the normal toric variety v.
Examples
julia> pp = projective_space(2)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2
julia> nef = nef_cone(pp)
A polyhedral cone in ambient dimension 1
julia> dim(nef)
1JToric.mori_cone — Functionmori_cone( v::NormalToricVariety )Computes the mori cone of the normal toric variety v.
Examples
julia> pp = projective_space(2)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2
julia> mori = mori_cone(pp)
A polyhedral cone in ambient dimension 1
julia> dim(mori)
1JToric.toric_ideal_binomial_generators — Methodtoric_ideal_binomial_generators(antv::AffineNormalToricVariety)Get the exponent vectors corresponding to the generators of the toric ideal associated to the affine normal toric variety antv.
Examples
Take the cyclic quotient singularity corresponding to the pair of integers (2,5).
julia> C = Oscar.positive_hull([-2 5; 1 0])
A polyhedral cone in ambient dimension 2
julia> antv = AffineNormalToricVariety(C)
A normal toric variety corresponding to a polyhedral fan in ambient dimension 2
julia> toric_ideal_binomial_generators(antv)
pm::Matrix<long>
-1 -1 2 1
-1 0 3 -1
0 -1 -1 2