# makeSmooth(NormalToricVariety) -- make a birational smooth toric variety

## Synopsis

• Function: makeSmooth
• Usage:
makeSmooth X
• Inputs:
• Optional inputs:
• Strategy => an integer, default value 0, either 0 or 1
• Outputs:
• , that is smooth and birational to X

## Description

Every normal toric variety has a resolution of singularities given by another normal toric variety. Given a normal toric variety $X$ this method makes a new smooth toric variety $Y$ which has a proper birational map to $X$. The normal toric variety $Y$ is obtained from $X$ by repeatedly blowing up appropriate torus orbit closures (if necessary the makeSimplicial method is also used with the specified strategy). A minimal number of blow-ups are used.

As a simple example, we can resolve a simplicial affine singularity.

 i1 : U = normalToricVariety ({{4,-1},{0,1}}, {{0,1}}); i2 : assert not isSmooth U i3 : V = makeSmooth U; i4 : assert isSmooth V i5 : rays V, max V o5 = ({{4, -1}, {0, 1}, {1, 0}}, {{0, 2}, {1, 2}}) o5 : Sequence i6 : toList (set rays V - set rays U) o6 = {{1, 0}} o6 : List

There is one additional rays, so only one toricBlowup was needed.

To resolve the singularities of this simplicial projective fourfold, we need eleven toricBlowups.

 i7 : W = weightedProjectiveSpace {1,2,3,4,5}; i8 : assert (dim W === 4) i9 : assert (isSimplicial W and not isSmooth W) i10 : W' = makeSmooth W; i11 : assert isSmooth W' i12 : # (set rays W' - set rays W) o12 = 11

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

 i13 : AA1 = affineSpace 1; i14 : assert (AA1 === makeSmooth AA1) i15 : PP2 = toricProjectiveSpace 2; i16 : assert (PP2 === makeSmooth PP2)

In the next example, we resolve the singularities of a non-simplicial projective threefold.

 i17 : X = normalToricVariety (id_(ZZ^3) | -id_(ZZ^3)); i18 : assert (not isSimplicial X and not isSmooth X) i19 : X' = makeSmooth X; i20 : assert isSmooth X' i21 : # (set rays X' - set rays X) o21 = 18

We also demonstrate this method on a complete simplicial non-projective threefold.

 i22 : Z = normalToricVariety ({{-1,-1,1},{3,-1,1},{0,0,1},{1,0,1},{0,1,1},{-1,3,1},{0,0,-1}}, {{0,1,3},{0,1,6},{0,2,3},{0,2,5},{0,5,6},{1,3,4},{1,4,5},{1,5,6},{2,3,4},{2,4,5}}); i23 : assert (isSimplicial Z and not isSmooth Z) i24 : assert (isComplete Z and not isProjective Z) i25 : Z' = makeSmooth Z; i26 : assert isSmooth Z' i27 : # (set rays Z' - set rays Z) o27 = 11

We end with a degenerate example.

 i28 : Y = normalToricVariety ({{1,0,0,0},{0,1,0,0},{0,0,1,0},{1,-1,1,0},{1,0,-2,0}}, {{0,1,2,3},{0,4}}); i29 : assert (isDegenerate Y and not isSimplicial Y and not isComplete Y) i30 : Y' = makeSmooth Y; i31 : assert isSmooth Y' i32 : # (set rays Y' - set rays Y) o32 = 1

## Caveat

A singular normal toric variety almost never has a unique minimal resolution. This method returns only of one of the many minimal resolutions.