# NormalToricVariety ^ Array -- make a canonical projection map

## Synopsis

• Operator: ^
• Usage:
X ^ A
• Inputs:
• X, , that is a constructed as a product or blow-up
• A, an array, whose entries index factors in the product construction of X or is empty if X is a blow-up
• Outputs:
• , that projects from X onto the product of the factors indexed by A or the normal toric variety that was blown-up

## Description

A product of varieties is equipped with canonical projection maps onto it factors. Given a product of normal toric varieties and a nonempty array, this methods provides a concise way to make these toric maps.

The product of two normal toric varieties has projections onto each factor.

 i1 : Y0 = toricProjectiveSpace 1; i2 : Y1 = hirzebruchSurface 3; i3 : X = Y0 ** Y1; i4 : X^ o4 = | 1 0 0 | o4 : ToricMap Y0 <--- X i5 : assert isWellDefined X^ i6 : assert (source X^ === X) i7 : assert (target X^ === Y0) i8 : X^ o8 = | 0 1 0 | | 0 0 1 | o8 : ToricMap Y1 <--- X i9 : assert isWellDefined X^ i10 : assert (source X^ === X) i11 : assert (target X^ === Y1)

If A indexes all the factors, then we simply obtain the identity map on X.

 i12 : X^[0,1] o12 = | 1 0 0 | | 0 1 0 | | 0 0 1 | o12 : ToricMap X <--- X i13 : assert (X^[0,1] == id_X)

When there are more than two factors, we also obtain projections onto any subset of the factors.

 i14 : Z = Y0 ^** 3; i15 : Z^ o15 = | 1 0 0 | o15 : ToricMap Y0 <--- Z i16 : Z^ o16 = | 0 1 0 | o16 : ToricMap Y0 <--- Z i17 : Z^ o17 = | 0 0 1 | o17 : ToricMap Y0 <--- Z i18 : assert all (3, i -> isWellDefined Z^[i] and source Z^[i] === Z and target Z^[i] === Y0) i19 : Z^[0,1] o19 = | 1 0 0 | | 0 1 0 | o19 : ToricMap normalToricVariety ({{-1, 0}, {1, 0}, {0, -1}, {0, 1}}, {{0, 2}, {0, 3}, {1, 2}, {1, 3}}) <--- Z i20 : Z^[0,2] o20 = | 1 0 0 | | 0 0 1 | o20 : ToricMap normalToricVariety ({{-1, 0}, {1, 0}, {0, -1}, {0, 1}}, {{0, 2}, {0, 3}, {1, 2}, {1, 3}}) <--- Z i21 : Z^[1,2] o21 = | 0 1 0 | | 0 0 1 | o21 : ToricMap normalToricVariety ({{-1, 0}, {1, 0}, {0, -1}, {0, 1}}, {{0, 2}, {0, 3}, {1, 2}, {1, 3}}) <--- Z i22 : assert (isWellDefined Z^[1,2] and target Z^[1,2] === Y0 ** Y0) i23 : Z^[0,1,2] o23 = | 1 0 0 | | 0 1 0 | | 0 0 1 | o23 : ToricMap Z <--- Z i24 : assert (Z^[0,1,2] == id_Z)

When the normal toric variety is not constructed as a product, this method only reproduces the identity map.

 i25 : components Y1 o25 = {Y1} o25 : List i26 : Y1^ o26 = | 1 0 | | 0 1 | o26 : ToricMap Y1 <--- Y1 i27 : assert (Y1^ == id_Y1)

When the normal toric variety X is a blow-up and the array A is empty, one obtains the canonical projection.

 i28 : A = affineSpace 2; i29 : B = toricBlowup({0,1}, A); i30 : B^[] o30 = | 1 0 | | 0 1 | o30 : ToricMap A <--- B i31 : assert (isWellDefined B^[] and source B^[] === B and target B^[] === A)