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 |
A singular normal toric variety almost never has a unique minimal resolution. This method returns only of one of the many minimal resolutions.