# makeSimplicial(NormalToricVariety) -- make a birational simplicial toric variety

## Description

A normal toric variety is simplicial if every cone in its fan is simplicial and a cone is simplicial if its minimal generators are linearly independent over . In fact, the following conditions on a normal toric variety X are equivalent:

• X is simplicial;
• every Weil divisor on X has a positive integer multiple that is Cartier;
• the Picard group of X has finite index in the class group of X;
• X has only finite quotient singularities.

Given a normal toric variety, this method makes a simplicial toric variety with the same rays by triangulating the non-simplicial maximal cones. For the 0 strategy, the triangulation is constructed by repeated regular subdivisions using random integral weight vectors. For the 1 strategy, the triangulation is constructed by repeated pushing subdivisions (i.e. toricBlowups at a given ray).

 `i1 : X = normalToricVariety (id_(ZZ^3) | - id_(ZZ^3));` `i2 : assert not isSimplicial X` `i3 : Y1 = makeSimplicial X;` `i4 : assert isSimplicial Y1` `i5 : assert (rays Y1 === rays X)` ```i6 : max Y1 o6 = {{0, 1, 3}, {0, 1, 5}, {0, 2, 3}, {0, 2, 6}, {0, 4, 5}, {0, 4, 6}, {1, ------------------------------------------------------------------------ 3, 7}, {1, 5, 7}, {2, 3, 7}, {2, 6, 7}, {4, 5, 7}, {4, 6, 7}} o6 : List``` ```i7 : max X o7 = {{0, 1, 2, 3}, {0, 1, 4, 5}, {0, 2, 4, 6}, {1, 3, 5, 7}, {2, 3, 6, 7}, ------------------------------------------------------------------------ {4, 5, 6, 7}} o7 : List``` `i8 : Y2 = makeSimplicial(X, Strategy => 1);` `i9 : assert isSimplicial Y2` `i10 : assert (rays Y2 === rays X)` ```i11 : max Y2 o11 = {{0, 1, 3}, {0, 1, 5}, {0, 2, 3}, {0, 2, 6}, {0, 4, 5}, {0, 4, 6}, {1, ----------------------------------------------------------------------- 3, 7}, {1, 5, 7}, {2, 3, 7}, {2, 6, 7}, {4, 5, 7}, {4, 6, 7}} o11 : List``` ```i12 : max Y1 == max Y2 o12 = true```

If the initial toric variety is simplicial, then this method simply returns it.

 `i13 : PP3 = toricProjectiveSpace 3;` `i14 : assert isSimplicial PP3` `i15 : Z = makeSimplicial PP3;` `i16 : assert (rays Z === rays PP3 and max Z === max PP3)`