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

# NOBody -- Newton-Okounkov body of the matching field

- Usage:
    `D = NOBody L`
- Inputs:
  - L, an instance of the type GrMatchingField or an instance of the type FlMatchingField,
- Outputs:
  - D, a convex polyhedron, Newton-Okounkov body of the matching field

## 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

- matchingFieldFromPermutation -- matching field parametrised by permutations
- isToricDegeneration -- Does the matching field give rise to a toric degeneration
- SubalgebraBases -- A package for finding canonical subalgebra bases (SAGBI bases)
- plueckerAlgebra -- Pluecker algebra of a (partial) flag variety
- plueckerMap -- The ring map of the Pluecker embedding

### Menu

## Ways to use NOBody:

- `NOBody(FlMatchingField)`
- `NOBody(GrMatchingField)`

## For the programmer

The object NOBody is a method function.

The source of this document is in /build/macaulay2-88fgJW/macaulay2-1.25.11+ds/M2/Macaulay2/packages/MatchingFields.m2:2540:0.