A fan F (in a toric lattice L) is a collection of cones in L satisfying typical conditions of cell decompositions (the inclusion of faces of cones is part of the data, and the requirement that any two cones of the fan intersect in a common face is enforced, for instance). The support of F is the union of all the cones as a subset of L. The main two cases are when either the support of F is the support of a single cone (which is regarded as being subdivided by the cones of the fan) or it is the whole of L. Other cases do occur and are allowed by our package---even having cones of different dimensions lying in complementary linear subspaces of L, although that is not commonly interpreted geometrically.
There are several constructors for well-known fans, and also standard methods for modifying fans. If these are not enough, then one can simply list the top-dimensional cones of a fan; Magma will check that they intersect correctly and will add the lower-dimensional cones as necessary.
Fans are of type TorFan.
We first list the comprehensive constructors for fans. After that, we have a collection of constructors for well-known fans, and there also are methods for modifying fans.
define_fan: BoolElt Default: false
max_cones: BoolElt Default: false
The fan generated by the cones in the sequence Q.The optional parameter define_fan (by default false) can be set to true, so that the verification whether the input data is correct is skipped. The optional parameter max_cones (by default false) can be set to true to skip the verification whether the cones are maximal. Both will lead to errors later if the cones do not in fact determine a fan as claimed.
define_fan: BoolElt Default: false
The fan whose rays are the sequence of toric lattice points R (or sequences of sequences of integer coefficients of such points) and whose maximal cones correspond to the sequence S of sequences of integers: each such sequence is interpreted as the indices of a collection of rays of R, and these rays are used to generate a cone.This constructor checks that the given data does indeed define a fan. This check can be lengthy. It can be omitted by setting the parameter define_fan to be false, although this should be used with extreme care: there is no telling what might go wrong if incorrect data is assumed to be a fan.
The fan comprising all faces of the cone C.
The standard fan of affine space of dimension n, where n is a positive integer.
A standard fan for the weighted projective space with weights W, a sequence of positive integers.
The standard fan of projective space of dimension n, a positive integer.
A standard fan for the fake weighted projective space with weights W, a sequence of positive integers, and finite cyclic group actions given by Q, a sequence of sequences of rational numbers. The finite cyclic actions are determined as follows: for Z/r to act diagonally with weights (a1, ..., an), include the sequence [a1/r,...,an/r] as an element of Q.
The fan in the toric lattice L supported at the origin.
The normal fan to a cone C in a fan F in the toric lattice that is the quotient of the ambient lattice of F by the span of C; the quotient map of lattices is the second return value.
The normal fan to the polyhedron P; in particular, the rays of the fan are normal to the facets of P. The resulting fan lies in the lattice dual to the ambient lattice of P.
The toric fan that spans the polyhedron P; in particular, the rays of the fan are generated by the vertices of P. The resulting fan lies in the same ambient lattice as P.
> P := Polytope([ [0,1], [1,0], [1,-1], [-1,0] ]); > SpanningFan(P); Fan with 4 rays: ( 0, 1), ( 1, 0), ( 1, -1), (-1, 0) and 4 cones with indices: [ 1, 4 ], [ 1, 2 ], [ 2, 3 ], [ 3, 4 ]The dual fan of a polytope P is a fan in the dual lattice to that of P whose rays are constant when evaluated on some facet of P. Here we make the fan of projective 3-space as a dual fan.
> Q := StandardSimplex(3); > DualFan(Q); Fan with 4 rays: (-1, -1, -1), ( 1, 0, 0), ( 0, 1, 0), ( 0, 0, 1) and 4 cones with indices: [ 2, 3, 4 ], [ 1, 3, 4 ], [ 1, 2, 4 ], [ 1, 2, 3 ] Mapping from: 3-dimensional toric lattice (Z^3)^* to 3-dimensional toric lattice (Z^3)^* given by a rule
ample: [RngIntElt] Default: the sum of weights
define_fan: BoolElt Default: false
The fan generated by the weights (or gradings) W, where W is a sequence of sequences of integers. The optional parameter ample can be used to specify the ample divisor to use. By default this is equal to the sum of the weights. If the optional parameter define_fan is set to true then the verification that the weights define a fan is skipped.
The blowup of the toric fan F at the point v that is an element of the ambient toric lattice of F.
> F:=FanWithWeights([ > [ 1, 1,-1, 0,-2, 0 ], > [ 0, 0, 1, 1, 0, 0 ], > [ 0, 0, 0, 0, 1, 1 ] > ]); > X<[x]>:=ToricVariety(Rationals(),F); > X; Toric variety of dimension 3 over Rational Field Variables: x[1], x[2], x[3], x[4], x[5], x[6] The components of the irrelevant ideal are: (x[4], x[3]), (x[5], x[2]), (x[3], x[2]), (x[6], x[5], x[1]), (x[6], x[4], x[1]) The 3 gradings are: 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 2, 1, 1 > IsFano(X); true > IsNonsingular(X); false > IsQFactorial(X); true > IsTerminal(X); trueNow we begin by taking P = P(1, 1, 1, 2) and blowing up twice. We obtain a Q-factorial terminal Fano three-fold Y.
> P:=WPS(Rationals(),[1,1,1,2]); > F:=Fan(P); > F; Fan F with 4 rays: ( 0, -1, -1), (-1, 0, 1), (-1, 1, 0), ( 1, 0, 0) and 4 cones with indices: [ 1, 2, 3 ], [ 1, 2, 4 ], [ 1, 3, 4 ], [ 2, 3, 4 ] > N:=Ambient(F); > pt1:=N ! [1,-1,0]; > pt2:=N ! [-1,0,0]; > Y1:=Blowup(P,pt1); > Y<[y]>:=Blowup(Y1,pt2); > Y; Toric variety of dimension 3 over Rational Field Variables: y[1], y[2], y[3], y[4], y[5], y[6] The components of the irrelevant ideal are: (y[6], y[5]), (y[6], y[4]), (y[5], y[3]), (y[4], y[2], y[1]), (y[3], y[2], y[1]) The 3 gradings are: 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 2, 0, 0 > IsFano(Y); trueWe want to show that X and Y are isomorphic. Since they are both Fano, we will work with the polytopes generated by the rays of the fans. It is then trivial to construct an isomorphism between these two polytopes; equivalently, we have an isomorphism between the fans of X and Y.
> PX:=Polytope(Rays(Fan(X))); > PY:=Polytope(Rays(Fan(Y))); > bool,phi:=IsIsomorphic(PX,PY); > bool; true > phi; Mapping from: 3-dimensional toric lattice Z^3 to TorLat: N given by a rule > DefiningMatrix(phi); [ 0 -1 0] [-1 0 1] [ 1 -1 0] > Image(phi,Fan(X)) eq Fan(Y); true
Return true if and only if the support of the fan F contains the element v of its ambient toric lattice. In this case, the index of the first cone of F that contains v is also returned.
The fan generated by the rays of the fan F.
The nth Cartesian product of the fan F.
Return true if and only if the two fans F and G are equal as objects in Magma (not simply isomorphic as fans).
One can retrieve all the usual components of fans: their cones, rays and other dimensional skeletons, and so on.
Note the novelty of `virtual' rays. Virtual rays occur when the rays of the fan in question do not span the ambient lattice, and so one may easily never encounter them. They occur if and only if the underlying toric variety is a product of C * times X for a smaller toric variety X. If this the case, the fan is contained in a hyperplane (or smaller linear space, if there are more factors of C * ). Virtual rays will be in the direction transversal to this hyperplane. Thus a virtual ray is not an honest ray, but a formal object introduced to allow C * as a toric variety and give meaning to its coordinate. If virtual rays are not specified on creation, then Magma will decide where to put them (later, when it needs them).
The fan generated by cones of the fan F of dimension at most the integer n.
Return true if and only if the cone C is one of the cones of the fan F.
A sequence of the maximal cones of the fan F.
The sequence of all i-dimensional cones in the fan F.
The sequence of all codimension i cones in the fan F.
The cones of maximum dimension in the fan F.
A sequence of all the cones of the fan F.
The ith cone of the sequence of maximal cones of the fan F.
in_fan: BoolElt Default: true
extend: BoolElt Default: false
The cone C spanned by those rays in the fan F whose indices appear in S. By default C must be a cone in F. If the optional parameter extend is set to true then the smallest cone in F containing C will be found (if such a cone exists). If the parameter in_fan is set to false then the cone is forcibly created even if it failed previous tests.
The minimum sequence of non-simplicial (i.e. non-Q-factorial) cones of the fan F. Also gives the sequences of indices of the rays of F defining each non-simplicial cone.
A sequence containing the minimal singular cones of the fan F. A second (parallel) sequence contains sets of the indices of the rays that generate these cones.
> F := FanOfWPS([1,2,2,3]); > SingularCones(F); [ 2-dimensional simplicial cone with 2 minimal generators: (-1, -1, 0), (-1, 1, 0), 3-dimensional simplicial cone with 3 minimal generators: (-1, -1, 0), ( 1, -1, -1), ( 1, 0, 1) ] [ { 1, 4 }, { 1, 2, 3 } ]The two cones correspond to these two singular strata; the point strata lying on the line are not returned, since they can be recovered, if needed, as the cones having this 2-dimensional cone in their boundary.
The sequence S of sets of integers, such that ith cone of the fan F is generated by rays with indices S[i].
The sequence of integers that are the indices of the rays which generate the cone C of the fan F.
The intersection of the two cones C1 and C2, both of which are members of the fan F. (This is usually more efficient than C1 meet C2 given that the fan F exists.)
The smallest cone in the fan F which contains the cone C. (An error is returned if there is no such cone in the fan.)
If all the cones of the fan F are Q-Gorenstein, this returns a sequence of elements in the dual lattice where the i-th element is the inner (resp. outer) normal of the i-th cone of F.
The cone in the toric fan dual to the polyhedron P which is dual to the face of P determined by the sequence of integers Q.
A sequence containing the rays of the fan F (as a sequence of primitive lattice points on each ray).
The ith ray of the fan F (regarded as the primitive ambient toric lattice point on the ray).
A sequence of the rays of the fan F (including all virtual rays).
A sequence of the (non-virtual) rays of the fan F.
A sequence of the indices of the non-virtual rays of the fan F among all its rays.
Given a sequence S of rays of a fan, computes the remaining virtual rays which form a basis of the lattice complementary to the linear span of S. Virtual rays are useful, for example, when calculating the coordinate ring of the toric variety associated to the fan when the variety is a product of a torus and a smaller toric variety.
A sequence of the virtual rays of the fan F.
A sequence of the indices of the virtual rays of the fan F among all its rays.
The ambient toric lattice of the toric fan F.
Return true if and only if the toric fan F has its entire ambient toric lattice; that is, the cones of F cover the whole ambient space.
Return false if and only if all the cones of the fan F are nonsingular.
Return true if and only if all the cones of the fan F are nonsingular.
Return true if and only if all the cones of the fan F are Q-factorial.
Return true if and only if all the cones of the fan F are isolated.
Return true if and only if all the cones of the fan F are terminal.
Return true if and only if all the cones of the fan F are canonical.
Return true if and only if all the cones of the fan F are Gorenstein.
Return true if and only if all the cones of the fan F are Q-Gorenstein.
The image of the fan F by the map f of toric lattices.
A toric fan that is a simplicial subdivision of the toric fan F (or of the toric cone C).
> L := ToricLattice(3); > C := Cone([L| [1,0,0], [0,1,0], [0,0,1],[1,-1,1]]); > SiC := SimplicialSubdivision(C); > #Cones(SiC); 2 > [ ZGenerators(B) : B in Cones(SiC) ]; [ [ (0, 1, 0), (1, -1, 1), (1, 0, 0) ], [ (0, 1, 0), (1, -1, 1), (0, 0, 1) ] ]
Return true if and only if the two fans F1 and F2 lie in the same toric lattice, and each cone of F1 is a subcone of some cone of F2.
Return true if and only if the toric lattice map f between the ambient toric lattices of the two fans F1 and F2 maps every cone of F1 into a cone of F2.
A toric fan F that resolves the identity map of lattices restricted to the toric fans F1 and F2. The two fans Fi are expected to lie in the same lattice and to have the same support, and the resulting toric fan F gives a common refinement of them; in particular, F will admit a fan map into each of the Fi. (If the Fi have different supports, the fan F will be supported on their intersection and will only refine this part of each of them. Geometrically speaking, this will produce a non-proper resolution.)
deterministic: BoolElt Default: true
A resolution of singularities of the fan F. If the optional parameter deterministic is set to false then a potentially much faster non-deterministic algorithm will be used to calculate the resolution.
A Q-factorial terminal refinement of the fan F.
A Q-factorial canonical refinement of the fan F.