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

## Synopsis

• Usage:
makeSmooth X
• Function: makeSmooth
• 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.