Given a positive integer m and a normal toric variety X, the diagonal morphism is the toric map from X to the m-ary Cartersion product of X such that it composes to the identity with the i-th projection map, for all i in A, and compose to the zero map with the i-th projection maps for all i not in A.
The most important example arises when m = 2. For this case, one may omit both m and A.
i1 : X = hirzebruchSurface 1; |
i2 : delta = diagonalToricMap X o2 = | 1 0 | | 0 1 | | 1 0 | | 0 1 | o2 : ToricMap normalToricVariety ({{1, 0, 0, 0}, {0, 1, 0, 0}, {-1, 1, 0, 0}, {0, -1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}, {0, 0, -1, 1}, {0, 0, 0, -1}}, {{0, 1, 4, 5}, {0, 1, 4, 7}, {0, 1, 5, 6}, {0, 1, 6, 7}, {0, 3, 4, 5}, {0, 3, 4, 7}, {0, 3, 5, 6}, {0, 3, 6, 7}, {1, 2, 4, 5}, {1, 2, 4, 7}, {1, 2, 5, 6}, {1, 2, 6, 7}, {2, 3, 4, 5}, {2, 3, 4, 7}, {2, 3, 5, 6}, {2, 3, 6, 7}}) <--- X |
i3 : assert (isWellDefined delta and source delta === X and target delta === X ^** 2) |
i4 : S = ring target delta; |
i5 : I = ideal delta o5 = ideal (x x - x x , x x x - x x x , x x x - x x x ) 2 4 0 6 3 5 6 1 2 7 3 4 5 0 1 7 o5 : Ideal of S |
i6 : assert (codim I === dim X) |
i7 : X2 = target delta; |
i8 : assert (X2^[0] * delta == id_X and X2^[1] * delta == id_X) |
i9 : assert (delta == diagonalToricMap(X,2) and delta == diagonalToricMap(X,2,[0,1])) |
We may also recover the canonical inclusions.
i10 : X2 = target delta; |
i11 : assert (X2_[0] == diagonalToricMap(X,2,[0])) |
i12 : assert (X2_[1] == diagonalToricMap(X,2,[1])) |
When there are more than to factors, a diagonal can map to any subset of the factors. By omitting A, we obtain the large diagonal.
i13 : m = 3; |
i14 : largeD = diagonalToricMap(X, m) o14 = | 1 0 | | 0 1 | | 1 0 | | 0 1 | | 1 0 | | 0 1 | o14 : ToricMap normalToricVariety ({{1, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {-1, 1, 0, 0, 0, 0}, {0, -1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0}, {0, 0, -1, 1, 0, 0}, {0, 0, 0, -1, 0, 0}, {0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, -1, 1}, {0, 0, 0, 0, 0, -1}}, {{0, 1, 4, 5, 8, 9}, {0, 1, 4, 5, 8, 11}, {0, 1, 4, 5, 9, 10}, {0, 1, 4, 5, 10, 11}, {0, 1, 4, 7, 8, 9}, {0, 1, 4, 7, 8, 11}, {0, 1, 4, 7, 9, 10}, {0, 1, 4, 7, 10, 11}, {0, 1, 5, 6, 8, 9}, {0, 1, 5, 6, 8, 11}, {0, 1, 5, 6, 9, 10}, {0, 1, 5, 6, 10, 11}, {0, 1, 6, 7, 8, 9}, {0, 1, 6, 7, 8, 11}, {0, 1, 6, 7, 9, 10}, {0, 1, 6, 7, 10, 11}, {0, 3, 4, 5, 8, 9}, {0, 3, 4, 5, 8, 11}, {0, 3, 4, 5, 9, 10}, {0, 3, 4, 5, 10, 11}, {0, 3, 4, 7, 8, 9}, {0, 3, 4, 7, 8, 11}, {0, 3, 4, 7, 9, 10}, {0, 3, 4, 7, 10, 11}, {0, 3, 5, 6, 8, 9}, {0, 3, 5, 6, 8, 11}, {0, 3, 5, 6, 9, 10}, {0, 3, 5, 6, 10, 11}, {0, 3, 6, 7, 8, 9}, {0, 3, 6, 7, 8, 11}, {0, 3, 6, 7, 9, 10}, {0, 3, 6, 7, 10, 11}, {1, 2, 4, 5, 8, 9}, {1, 2, 4, 5, 8, 11}, {1, 2, 4, 5, 9, 10}, {1, 2, 4, 5, 10, 11}, {1, 2, 4, 7, 8, 9}, {1, 2, 4, 7, 8, 11}, {1, 2, 4, 7, 9, 10}, {1, 2, 4, 7, 10, 11}, {1, 2, 5, 6, 8, 9}, {1, 2, 5, 6, 8, 11}, {1, 2, 5, 6, 9, 10}, {1, 2, 5, 6, 10, 11}, {1, 2, 6, 7, 8, 9}, {1, 2, 6, 7, 8, 11}, {1, 2, 6, 7, 9, 10}, {1, 2, 6, 7, 10, 11}, {2, 3, 4, 5, 8, 9}, {2, 3, 4, 5, 8, 11}, {2, 3, 4, 5, 9, 10}, {2, 3, 4, 5, 10, 11}, {2, 3, 4, 7, 8, 9}, {2, 3, 4, 7, 8, 11}, {2, 3, 4, 7, 9, 10}, {2, 3, 4, 7, 10, 11}, {2, 3, 5, 6, 8, 9}, {2, 3, 5, 6, 8, 11}, {2, 3, 5, 6, 9, 10}, {2, 3, 5, 6, 10, 11}, {2, 3, 6, 7, 8, 9}, {2, 3, 6, 7, 8, 11}, {2, 3, 6, 7, 9, 10}, {2, 3, 6, 7, 10, 11}}) <--- X |
i15 : assert (isWellDefined largeD and source largeD === X and target largeD === X ^** m) |
i16 : assert (codim ideal largeD === (m-1) * dim X) |
i17 : assert (largeD == diagonalToricMap(X, m, [0,1,2])) |
By using the array to specify a proper subset of the factors, we obtain a small diagonal.
i18 : smallD = diagonalToricMap (X, 3, [0,2]) o18 = | 1 0 | | 0 1 | | 0 0 | | 0 0 | | 1 0 | | 0 1 | o18 : ToricMap normalToricVariety ({{1, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {-1, 1, 0, 0, 0, 0}, {0, -1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0}, {0, 0, -1, 1, 0, 0}, {0, 0, 0, -1, 0, 0}, {0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, -1, 1}, {0, 0, 0, 0, 0, -1}}, {{0, 1, 4, 5, 8, 9}, {0, 1, 4, 5, 8, 11}, {0, 1, 4, 5, 9, 10}, {0, 1, 4, 5, 10, 11}, {0, 1, 4, 7, 8, 9}, {0, 1, 4, 7, 8, 11}, {0, 1, 4, 7, 9, 10}, {0, 1, 4, 7, 10, 11}, {0, 1, 5, 6, 8, 9}, {0, 1, 5, 6, 8, 11}, {0, 1, 5, 6, 9, 10}, {0, 1, 5, 6, 10, 11}, {0, 1, 6, 7, 8, 9}, {0, 1, 6, 7, 8, 11}, {0, 1, 6, 7, 9, 10}, {0, 1, 6, 7, 10, 11}, {0, 3, 4, 5, 8, 9}, {0, 3, 4, 5, 8, 11}, {0, 3, 4, 5, 9, 10}, {0, 3, 4, 5, 10, 11}, {0, 3, 4, 7, 8, 9}, {0, 3, 4, 7, 8, 11}, {0, 3, 4, 7, 9, 10}, {0, 3, 4, 7, 10, 11}, {0, 3, 5, 6, 8, 9}, {0, 3, 5, 6, 8, 11}, {0, 3, 5, 6, 9, 10}, {0, 3, 5, 6, 10, 11}, {0, 3, 6, 7, 8, 9}, {0, 3, 6, 7, 8, 11}, {0, 3, 6, 7, 9, 10}, {0, 3, 6, 7, 10, 11}, {1, 2, 4, 5, 8, 9}, {1, 2, 4, 5, 8, 11}, {1, 2, 4, 5, 9, 10}, {1, 2, 4, 5, 10, 11}, {1, 2, 4, 7, 8, 9}, {1, 2, 4, 7, 8, 11}, {1, 2, 4, 7, 9, 10}, {1, 2, 4, 7, 10, 11}, {1, 2, 5, 6, 8, 9}, {1, 2, 5, 6, 8, 11}, {1, 2, 5, 6, 9, 10}, {1, 2, 5, 6, 10, 11}, {1, 2, 6, 7, 8, 9}, {1, 2, 6, 7, 8, 11}, {1, 2, 6, 7, 9, 10}, {1, 2, 6, 7, 10, 11}, {2, 3, 4, 5, 8, 9}, {2, 3, 4, 5, 8, 11}, {2, 3, 4, 5, 9, 10}, {2, 3, 4, 5, 10, 11}, {2, 3, 4, 7, 8, 9}, {2, 3, 4, 7, 8, 11}, {2, 3, 4, 7, 9, 10}, {2, 3, 4, 7, 10, 11}, {2, 3, 5, 6, 8, 9}, {2, 3, 5, 6, 8, 11}, {2, 3, 5, 6, 9, 10}, {2, 3, 5, 6, 10, 11}, {2, 3, 6, 7, 8, 9}, {2, 3, 6, 7, 8, 11}, {2, 3, 6, 7, 9, 10}, {2, 3, 6, 7, 10, 11}}) <--- X |
i19 : assert (isWellDefined smallD and source smallD === X and target smallD === X ^** m) |
i20 : assert (codim ideal smallD === (m-1) * dim X) |
i21 : X3 = target smallD; |
i22 : assert (X3^[0] * smallD == id_X and X3^[1] * smallD == map(X,X,0) and X3^[2] * smallD == id_X) |
The object diagonalToricMap is a method function.