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.
U = normalToricVariety({{4,-1},{0,1}},{{0,1}}); |
isSmooth U |
V = makeSmooth U; |
isSmooth V |
rays V, max V |
set rays V - set rays U |
There is one additional rays, so only one blowup was needed.
To resolve the singularities of this simplicial projective fourfold, we need eleven blowups.
W = weightedProjectiveSpace {1,2,3,4,5}; |
dim W |
isSimplicial W |
isSmooth W |
W' = makeSmooth W; |
isSmooth W' |
R = set rays W' - set rays W |
#R |
If the initial toric variety is smooth, then this method simply returns it.
AA1 = affineSpace 1; |
AA1 === makeSmooth AA1 |
PP2 = projectiveSpace 2; |
PP2 === makeSmooth PP2 |
In the next example, we resolve the singularities of a non-simplicial projective threefold.
X = normalToricVariety(id_(ZZ^3) | -id_(ZZ^3)); |
isSimplicial X |
isSmooth X |
X' = makeSmooth X; |
isSmooth X' |
R = set rays X' - set rays X |
#R |
We also demonstrate this method on a complete simplicial non-projective threefold.
rayList = {{-1,-1,1},{3,-1,1},{0,0,1},{1,0,1},{0,1,1},{-1,3,1},{0,0,-1}}; |
coneList = {{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}}; |
Z = normalToricVariety(rayList,coneList); |
isSimplicial Z |
isSmooth Z |
isComplete Z |
isProjective Z |
Z' = makeSmooth Z; |
isSmooth Z' |
R = set rays Z' - set rays Z |
#R |
We end with a degenerate example.
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}}); |
isDegenerate Y |
Y' = makeSmooth Y; |
isSmooth Y' |