Macaulay2 » Documentation
Packages » MatrixSchubert :: Investigating ASM varieties
next | previous | forward | backward | up | index | toc

Investigating ASM varieties -- basic functions for alternating sign matrix ideals

Alternating sign matrix (ASM) varieties were introduced by Weigandt [Wei17]. ASM varieties generalize matrix Schubert varieties. This package contains functions for investigating ASM varieties and their defining ideals.

The general method for defining the ideal of an ASM variety is schubertDeterminantalIdeal. The input can be an alternating sign matrix or a partial alternating sign matrix. This package contains functions for checking if a matrix is a partial ASM, extending a partial ASM to an ASM, and computing the rank matrix for an ASM.

i1 : A = matrix{{0,0,0},{0,1,0},{1,-1,0}} --Example 3.15 in [Wei17]

o1 = | 0 0  0 |
     | 0 1  0 |
     | 1 -1 0 |

              3       3
o1 : Matrix ZZ  <-- ZZ
i2 : isPartialASM A

o2 = true
i3 : A' = partialASMToASM A

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

              5       5
o3 : Matrix ZZ  <-- ZZ

This package contains functions for investigating the rank matrix, the Rothe diagram, and the essential cells of the Rothe diagram of a partial ASM as defined by Fulton in [Ful92] and Weigandt in [Wei17].

i4 : rotheDiagram A

o4 = {(1, 1), (1, 2), (1, 3), (2, 1), (3, 2), (3, 3)}

o4 : List
i5 : essentialSet A

o5 = {(1, 3), (2, 1), (3, 3)}

o5 : List
i6 : rankTable A

o6 = | 0 0 0 |
     | 0 1 1 |
     | 1 1 1 |

              3       3
o6 : Matrix ZZ  <-- ZZ
i7 : netList fultonGens A

     +---------------------+
o7 = |z                    |
     | 1,1                 |
     +---------------------+
     |z                    |
     | 1,2                 |
     +---------------------+
     |z                    |
     | 1,3                 |
     +---------------------+
     |z                    |
     | 2,1                 |
     +---------------------+
     |- z   z    + z   z   |
     |   1,2 2,1    1,1 2,2|
     +---------------------+
     |- z   z    + z   z   |
     |   1,2 3,1    1,1 3,2|
     +---------------------+
     |- z   z    + z   z   |
     |   2,2 3,1    2,1 3,2|
     +---------------------+
     |- z   z    + z   z   |
     |   1,3 2,1    1,1 2,3|
     +---------------------+
     |- z   z    + z   z   |
     |   1,3 3,1    1,1 3,3|
     +---------------------+
     |- z   z    + z   z   |
     |   2,3 3,1    2,1 3,3|
     +---------------------+
     |- z   z    + z   z   |
     |   1,3 2,2    1,2 2,3|
     +---------------------+
     |- z   z    + z   z   |
     |   1,3 3,2    1,2 3,3|
     +---------------------+
     |- z   z    + z   z   |
     |   2,3 3,2    2,2 3,3|
     +---------------------+

The default presentation given by schubertDeterminantalIdeal is given by the Fulton generators of the ideal. In order to access a minimal generating set, use trim.

i8 : I = schubertDeterminantalIdeal A;

o8 : Ideal of QQ[z   ..z   ]
                  1,1   3,3
i9 : # (I_*)

o9 = 13
i10 : # ((trim I)_*)

o10 = 7

After creating an ASM ideal, the corresponding ASM is stored in the cache table.

i11 : peek I.cache

o11 = CacheTable{ASM => | 0 0  0 |                                                                                                                                                                                                                                                                                                                         }
                        | 0 1  0 |
                        | 1 -1 0 |
                 module => image | z_(1,1) z_(1,2) z_(1,3) z_(2,1) -z_(1,2)z_(2,1)+z_(1,1)z_(2,2) -z_(1,2)z_(3,1)+z_(1,1)z_(3,2) -z_(2,2)z_(3,1)+z_(2,1)z_(3,2) -z_(1,3)z_(2,1)+z_(1,1)z_(2,3) -z_(1,3)z_(3,1)+z_(1,1)z_(3,3) -z_(2,3)z_(3,1)+z_(2,1)z_(3,3) -z_(1,3)z_(2,2)+z_(1,2)z_(2,3) -z_(1,3)z_(3,2)+z_(1,2)z_(3,3) -z_(2,3)z_(3,2)+z_(2,2)z_(3,3) |
                 trim => (OptionTable{Strategy => null}) => ideal (z   , z   , z   , z   , z   z    - z   z   , z   z   , z   z   )
                                                                    2,1   1,3   1,2   1,1   2,3 3,2    2,2 3,3   2,3 3,1   2,2 3,1

This package also contains methods for investigating or using initial ideals of ASM ideals.

i12 : antiDiagInit A

o12 = monomialIdeal (z   , z   , z   , z   , z   z   , z   z   , z   z   )
                      1,1   1,2   1,3   2,1   2,2 3,1   2,3 3,1   2,3 3,2

o12 : MonomialIdeal of QQ[z   ..z   ]
                           1,1   3,3

Every ASM ideal can be written as the intersection of Schubert determinantal ideals. The function schubertDecompose outputs the list of permutations that index the prime components of the ASM variety associated to A.

i13 : schubertDecompose I

o13 = {{4, 5, 1, 2, 3}, {4, 2, 5, 1, 3}}

o13 : List

Given a list of partial ASMs, this package also contains functions for intersecting and adding the ASM ideals associated to the list of ASMs or partial ASMs. Every sum of ASM ideals (equivalently, of ideals defined by partial ASMs) is again an ASM ideal. The function schubertAdd automatically stores the ASM associated to this new ideal in its cache table.

i14 : B = matrix{{0,1,0,0,0},{0,0,0,1,0},{1,-1,1,0,0},{0,0,0,0,1},{0,1,0,0,0}}

o14 = | 0 1  0 0 0 |
      | 0 0  0 1 0 |
      | 1 -1 1 0 0 |
      | 0 0  0 0 1 |
      | 0 1  0 0 0 |

               5       5
o14 : Matrix ZZ  <-- ZZ
i15 : L = {A, B} -- a list of 2 partial ASMs

o15 = {| 0 0  0 |, | 0 1  0 0 0 |}
       | 0 1  0 |  | 0 0  0 1 0 |
       | 1 -1 0 |  | 1 -1 1 0 0 |
                   | 0 0  0 0 1 |
                   | 0 1  0 0 0 |

o15 : List
i16 : J = schubertAdd L

o16 = ideal (z   , z   , z   , z   , - z   z    + z   z   , - z   z    +
              1,1   1,2   1,3   2,1     1,2 2,1    1,1 2,2     1,2 3,1  
      -----------------------------------------------------------------------
      z   z   , - z   z    + z   z   , - z   z    + z   z   , - z   z    +
       1,1 3,2     2,2 3,1    2,1 3,2     1,3 2,1    1,1 2,3     1,3 3,1  
      -----------------------------------------------------------------------
      z   z   , - z   z    + z   z   , - z   z    + z   z   , - z   z    +
       1,1 3,3     2,3 3,1    2,1 3,3     1,3 2,2    1,2 2,3     1,3 3,2  
      -----------------------------------------------------------------------
      z   z   , - z   z    + z   z   , - z   z    + z   z   , - z   z    +
       1,2 3,3     2,3 3,2    2,2 3,3     1,2 4,1    1,1 4,2     2,2 4,1  
      -----------------------------------------------------------------------
      z   z   , - z   z    + z   z   )
       2,1 4,2     3,2 4,1    3,1 4,2

o16 : Ideal of QQ[z   ..z   ]
                   1,1   5,5
i17 : peek J.cache

o17 = CacheTable{ASM => | 0 0  0 1 0 |     }
                        | 0 1  0 0 0 |
                        | 1 -1 0 0 1 |
                        | 0 0  1 0 0 |
                        | 0 1  0 0 0 |
                 rankTable => | 0 0 0 1 1 |
                              | 0 1 1 2 2 |
                              | 1 1 1 2 3 |
                              | 1 1 2 3 4 |
                              | 1 2 3 4 5 |
i18 : K = schubertIntersect L

o18 = ideal (z   , z   , z   z   , z   z   , z   z   , z   z    - z   z   ,
              2,1   1,1   1,2 4,1   2,2 3,1   1,2 3,1   1,3 2,2    1,2 2,3 
      -----------------------------------------------------------------------
      z   z   z    - z   z   z    - z   z   z   , z   z   z    -
       2,3 3,2 4,1    2,2 3,3 4,1    2,3 3,1 4,2   1,3 3,2 4,1  
      -----------------------------------------------------------------------
      z   z   z   )
       1,3 3,1 4,2

o18 : Ideal of QQ[z   ..z   ]
                   1,1   5,5

Although every ASM ideal is an intersection of Schubert determinantal ideals, many intersections of Schubert determinantal ideals are not ASM ideals. The function isASMIdeal determines whether or not an ideal is the ASM ideal of any ASM. If it is, the ASM is stored in its cache table and is accessible via getASM.

i19 : isASMIdeal K

o19 = false
i20 : K' = schubertIntersect {{3, 1, 2}, {2, 3, 1}}

o20 = ideal (z   , z   z   )
              1,1   1,2 2,1

o20 : Ideal of QQ[z   ..z   ]
                   1,1   3,3
i21 : isASMIdeal K'

o21 = true
i22 : getASM K'

o22 = | 0 1  0 |
      | 1 -1 1 |
      | 0 1  0 |

               3       3
o22 : Matrix ZZ  <-- ZZ

Additionally, this package facilitates the investigating homological invariants of ASM ideals efficiently by computing the associated invariants for their antidiagonal initial ideals, which are known to be squarefree by [Wei17]. Therefore the extremal Betti numbers (which encode regularity, depth, and projective dimension) of ASM ideals coincide with those of their antidiagonal initical ideals by [CV20].

i23 : time schubertRegularity B
 -- used 0.0238625s (cpu); 0.0242196s (thread); 0s (gc)

o23 = 1
i24 : time regularity comodule schubertDeterminantalIdeal B
 -- used 0.0229039s (cpu); 0.0237587s (thread); 0s (gc)

o24 = 1

Functions for investigating ASM varieties