Search this site
Embedded Files
Paola Comparin
  • Home Page
    • Conferences and talks
    • Papers and preprints
    • Teaching activities
Paola Comparin

Magma

Families of Calabi-Yau hypersurfaces in Q-Fano toric varieties

The following functions check some basic properties of the anticanonical polytope P of a toric variety and of the span Q of its lattice points.

antpol:=function(X)

F:=Fan(X);

n:=#Rays(F);

P:=HalfspaceToPolyhedron(Rays(F)[1],-1);

for i in [2..n]

do P:=P meet HalfspaceToPolyhedron(Rays(F)[i],-1);

end for;

return P;

end function;

An example.

w:=[1,2,3,4,5];

X:=WeightedProjectiveSpace(Rationals(),w);

F:=Fan(X);

P:=antpol(X);

Q:=Polytope(Points(P));

IsReflexive(P);

IsReflexive(Q);

InteriorPoints(Q);

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Given a toric variety X and a polynomial f in R(X), we check whether the associated anticanonical hypersurface is well-formed or quasismooth.

wf:=function(X,f)

R<[x]>:=CoordinateRing(X);

A,B:=SingularCones(Fan(X));

S:=[Scheme(X,[x[a],x[b]]):a,b in [1..#Rays(Fan(X))]|{a,b} in B and a gt b];

r:=[S[i] subset Scheme(X,f): i in [1..#S]];

if r eq [false: i in [1..#S]]

then print "wellformed";

else print "not wellformed";

end if;

return r;

end function;

qs:=function(X,f)

R<[x]>:=CoordinateRing(X);

J:=IrrelevantIdeal(X);

der:=[Derivative(f,i): i in [1..Rank(R)]];

I:=Ideal(der);

if J subset Radical(I) then print "quasismooth";

else print "not quasismooth";

end if;

return MinimalBasis(Radical(I));

end function;

An example.

X<[x]>:=WeightedProjectiveSpace(Rationals(),[1,1,2,3,3,3]);

R<[x]>:=CoordinateRing(X);

Q:=RiemannRochPolytope(-CanonicalDivisor(X));

monv:=[LatticeElementToMonomial(-CanonicalDivisor(X),p): p in Vertices(Q)];

f:=&+[monv[i]: i in [16,15,14,13,12,4]];

f:=R!f;

wf(X,f);

qs(X,f);

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

The following function computes the Berglund-Hübsch-Krawitz dual of a triple (X,W,G), where X is a weighted projective space and G is a subgroup of SL(n,C) which leaves W invariant.

The input is given by a polynomial W of Delsarte type in n variables and of a sequence g of sequences with n rational entries representing the generators of the group G.

For example:

R<[x]>:=PolynomialRing(Rationals(),4);

W:=x[1]^2+x[2]^3+x[3]^12+x[4]^12;

g:=[[0/1,0/1,0/1,0/1]];

or

R<[x]>:=PolynomialRing(Rationals(),4);

W:=x[1]^2+x[2]^3+x[3]^12+x[4]^12;

g:=[[0,0,1/6,5/6]];

The following function computes the minimal weights making W homogeneous.

weights:=function(W)

A:=Matrix(Rationals(),[Exponents(m): m in Monomials(W)]);

n:=NumberOfRows(A);

e:=Matrix(Rationals(),n,1,[1: i in [1..n]]);

q:=A^-1*e;

deg:=Lcm([Denominator(q[i]): i in [1..n]]);

w:=Vector(Integers(), Transpose(deg*q));

w:=[w[i]: i in [1..n]];

return w;

end function;

The following function computes the Berglund-Hübsch-Krawitz dual (X*,W*,G*) of the triple (X,W,G).

BHK:=function(W,g)

X:=FakeProjectiveSpace(Rationals(),weights(W),g);

n:=#weights(W);

P2:=antpol(X);

exps:=[Exponents(m): m in Monomials(W)];

one:=Vector([1: i in [1..n]]);

U:=Matrix([Solution(Transpose(Matrix(Rays(Fan(X)))), Vector(i)-one): i in exps]);

P1b:=Polytope(RowSequence(U));

S:=[];

for i in [1..#Points(P2)] do if SetToSequence(Points(P2))[i] in Points(P1b) then Append(~S, SetToSequence(Points(P2))[i]);

end if;

end for;

P1:=Polytope(S);

Y:=ToricVariety(Rationals(),NormalFan(Polar(P1)));

Wt:=&+[LatticeElementToMonomial(-CanonicalDivisor(Y), p): p in Vertices(Polar(P2))];

return Y, Wt;

end function;

Google Sites
Report abuse
Google Sites
Report abuse