Macaulay2 » Documentation
Packages » MatchingFields > NOBody
next | previous | forward | backward | up | index | toc

NOBody -- Newton-Okounkov body of the matching field

Synopsis

Description

The Pluecker algebra is generated by Pluecker forms given by top-justified minors of a generic matrix. The Pluecker algebra can be constructed with the function plueckerAlgebra, of the image of the Pluecker ring map that can be accessed with the function plueckerMap. Note that the ambient ring containing the Pluecker algebra has a weight-based term order that comes from the matching field. We compute a subalgebra basis (SAGBI basis) using the package SubalgebraBases for the Pluecker algebra.

The Newton-Okounkov body of the matching field is constructed from this subalgebra basis. In the case of Grassmannian matching fields, the NO body is simply the convex hull of the exponent vectors of the initial terms of the subalgebra basis. If the matching field gives rise to a toric degeneration (see the function isToricDegeneration) then the NO body coincides with the matching field polytope (see matchingFieldPolytope) because the maximal minors form a subalgebra basis for the Pluecker algebra.

i1 : L = diagonalMatchingField(2, 4)

o1 = Grassmannian Matching Field for Gr(2, 4)

o1 : GrMatchingField
i2 : P = matchingFieldPolytope L

o2 = P

o2 : Polyhedron
i3 : vertices P

o3 = | 1 1 0 1 0 0 |
     | 0 0 1 0 1 0 |
     | 0 0 0 0 0 1 |
     | 0 0 0 0 0 0 |
     | 0 0 0 0 0 0 |
     | 1 0 0 0 0 0 |
     | 0 1 1 0 0 0 |
     | 0 0 0 1 1 1 |

              8       6
o3 : Matrix QQ  <-- QQ
i4 : noBody = NOBody L

o4 = noBody

o4 : Polyhedron
i5 : vertices noBody

o5 = | 1 1 0 1 0 0 |
     | 0 0 1 0 1 0 |
     | 0 0 0 0 0 1 |
     | 0 0 0 0 0 0 |
     | 0 0 0 0 0 0 |
     | 1 0 0 0 0 0 |
     | 0 1 1 0 0 0 |
     | 0 0 0 1 1 1 |

              8       6
o5 : Matrix QQ  <-- QQ
i6 : P == noBody

o6 = true

In the case of flag matching fields, the NO body is computed in a similar way. First a subalgebra basis is computed for the Pluecker algebra. However, to construct the NO body from the subalgebra basis, we need to take into account the grading on the Pluecker forms. From the geometric perspective, we are simply using the Segre embedding to view the flag variety as a subvariety of a suitably large projective space.

i7 : L = diagonalMatchingField({1,2}, 4)

o7 = Flag Matching Field for Fl(1, 2; 4)

o7 : FlMatchingField
i8 : noBody = NOBody L

o8 = noBody

o8 : Polyhedron
i9 : vertices noBody

o9 = | 2 1 1 1 2 0 1 0 1 0 2 0 0 1 0 0 |
     | 0 1 0 0 0 2 0 1 0 1 0 2 0 0 1 0 |
     | 0 0 1 0 0 0 1 1 0 0 0 0 2 0 0 1 |
     | 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 1 |
     | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
     | 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 |
     | 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 |
     | 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 |

              8       16
o9 : Matrix QQ  <-- QQ
i10 : noBody == matchingFieldPolytope L

o10 = true

Note that the matching field polytope is equal to the NO body if and only if the matching field gives rise to a toric degeneration. So, for a hexagonal matching field for Gr$(3,6)$, the NO body has an additional vertex. We construct a hexagonal matching field using the function matchingFieldFromPermutation as follows.

i11 : L = matchingFieldFromPermutation(3, 6, {6,1,5,2,3,4}, UsePrimePowers => true, ScalingCoefficient => 3)

o11 = Grassmannian Matching Field for Gr(3, 6)

o11 : GrMatchingField
i12 : isToricDegeneration L

o12 = false
i13 : vertices NOBody L

o13 = | 1 1 1 0 1 0 0 1 1 0 1 0 0 0 1 1 0 0 1 0 1/2 |
      | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   |
      | 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0   |
      | 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0   |
      | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1/2 |
      | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   |
      | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   |
      | 1 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 1/2 |
      | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1/2 |
      | 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0   |
      | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0   |
      | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   |
      | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   |
      | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   |
      | 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   |
      | 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1/2 |
      | 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0   |
      | 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1/2 |

               18       21
o13 : Matrix QQ   <-- QQ

See also

Ways to use NOBody :

For the programmer

The object NOBody is a method function.

Menu