The MatrixSchubert Package for Macaulay2
Abstract.
We introduce the MatrixSchubert package for the computer algebra system Macaulay2. This package has tools to construct and study matrix Schubert varieties and alternating sign matrix (ASM) varieties. The package also introduces tools for quickly computing homological invariants of such varieties, finding the components of an ASM variety, and checking if a union of matrix Schubert varieties is an ASM variety.
1. Introduction
Fulton [Ful92] introduced matrix Schubert varieties in the study of Schubert varieties in the complete flag variety. In that paper, Fulton showed that matrix Schubert varieties are Cohen–Macaulay and gave an attractive description of their codimension and defining equations from a combinatorial perspective. Since that time, there has been a great deal of interest in their algebraic, geometric, and combinatorial properties (see, for example, [KM05, KMY09, Hsi13, EM16, FRS16, RRR+21, PSW22, Por23, RRW23]).
More recently, Weigandt [Wei17] introduced alternating sign matrix (ASM) varieites, which generalize matrix Schubert varieties, and gave a combinatorial description of their defining equations that generalizes Fulton’s description in the case of matrix Schubert varieties (equivalently, when the ASM happens to be a permutation matrix). There are to date no combinatorial descriptions of the codimension of an ASM variety nor a combinatorial criterion to determine if it is Cohen–Macaulay or even unmixed.
The MatrixSchubert package implements many basic functions for permutations and ASMs (such as extending a partial ASM to an ASM, checking if one permutation avoids another, and finding the descent set of a permutation) as well as more complicated ones that rely on one or several theoretical results. Several such examples are described in greater detail in Sections 5 and 7.
One goal of this package is to implement core results from the past three decades on commutative algebraic aspects of Schubert calculus (particularly those found in [Ful92, KM05, Wei17, PSW22]) for the purpose of enjoying the theory that has already been developed. Another is to facilitate inquiry into the many open questions that remain, including those surrounding resolutions and Betti numbers of matrix Schubert varieties and ASM varieties, Cohen–Macaulayness of ASM varieties, and codimension of ASM varieties.
2. Background and some basic functions
2.1 Permutations
Let denote the group of permutations of letters. For a permutation , we call the matrix that has ’s in the positions and ’s in all other positions the permutation matrix of . (As a cautionary note, some authors take the convention that the matrix described here - and used throughout the package MatrixSchubert - is the permutation matrix of .)
Given , the Rothe diagram of is
The Coxeter length of satisfies . The essential set of is
i.e., the maximally southeast elements of the connected components of .
i1 : needsPackage "MatrixSchubert" i2 : w = {2,1,5,4,3}; i3 : rotheDiagram w o3 = {(1, 1), (3, 3), (3, 4), (4, 3)} o3 : List i4 : essentialSet w o4 = {(1, 1), (3, 4), (4, 3)} o4 : List
2.2 Alternating Sign Matrices
A partial alternating sign matrix (partial ASM) is a matrix with entries in so that partial sums taken along each row (and column) are all or . If the entries of each row (and column) sum to (in which case the matrix must be square), we call the partial ASM an ASM. The ASMs whose entries all lie in are exactly the permutation matrices.
The rank function of the partial ASM is defined by for , . (Note that if is not a permutation matrix, then may not be the rank of the submatrix of consisting of its first rows and first columns.)
Given a matrix , let be the submatrix of consisting of the first rows and columns. Given an partial ASM , we define the ASM variety of to be
If , we call a matrix Schubert variety. For background on matrix Schubert varieties, including a geometric motivation for their definition and a description of their connection to Schubert varieties, see [Ful92, MS05].
We call the defining radical of in , an arbitrary field, an ASM ideal or, when , a Schubert determinantal ideal.
Proposition 2.1 ([Ful92, Proposition 3.3]).
For , is prime, , is Cohen–Macaulay.
The function schubertCodim computes the codimension of (that is, the codimension of spec in spec) using [Ful92, Proposition 3.3] and the equality . Returning to the example , one may compare the outcome below to the size of , computed above.
i5 : schubertCodim w o5 = 4
In [Ful92, Lemma 3.10], Fulton gave a generating set for the Schubert determinantal ideal . Fix an generic matrix . We write for the ideal of generated by the -minors in the submatrix of consisting of its first rows and first columns. Then
and we call these generators the Fulton generators. There is a generalization of the Fulton generators for ASM ideals (see [Wei17, Lemma 5.9]).
The function schubertDeterminantalIdeal takes in either a permutation (as a list representing its one-line notation) or a partial ASM matrix and produces its ASM ideal via its Fulton generators (which typically do not form a minimal generating set).
i6 : v = {3,1,4,2}; i7 : schubertDeterminantalIdeal v o7 = ideal (z , z , - z z + z z , - z z + z z , - z z + z z ) 1,1 1,2 1,2 2,1 1,1 2,2 1,2 3,1 1,1 3,2 2,2 3,1 2,1 3,2
A term order on so that the lead term of the determinant of any submatrix of is the product of terms along its antidiagonal is called an antidiagonal term order.
We now state a pivotal result, due to Knutson and Miller in the case of Schubert determinantal ideals. One can extend the result to ASM ideals using either using Frobenius splitting [Knu09] or a combinatorial argument [Wei17]. For full details on the latter, see [KW].
Theorem 2.2.
[KM05, Knu09, Wei17, KW] Fix a partial ASM . The Fulton generators of form a Gröbner basis under any antidiagonal term order . Consequently, is radical.
Rather than computing an ASM ideal and then afterwards computing a Gröbner basis, these theorems allow us to get an antidiagonal initial ideal directly from the permutation or ASM.
i8 : A = matrix{{0,0,1,0},{1,0,-1,1},{0,0,1,0},{0,1,0,0}}; i9 : antiDiagInit A o9 = monomialIdeal (z , z , z z , z z , z z ) 1,1 1,2 1,3 2,1 1,3 2,2 2,2 3,1
3. Rank tables
The rank function of an partial ASM used in the definition ASM ideal can be applied to all . The entire function can be computed and recorded in an matrix, implemented via the method rankTable.
i10 : M = matrix{{0,1,0},{1,-1,0}}; 2 3 o10 : Matrix ZZ <--- ZZ i11 : rankTable M o11 = | 0 1 1 | | 1 1 1 | 2 3 o11 : Matrix ZZ <--- ZZ
Given any rank table that could be constructed from a partial ASM, the method rankTableToASM produces the unique partial ASM of the same size as the input having that rank table.
i12 : rankTableToASM matrix{{0,1,1},{0,1,1},{1,2,2}} o12 = | 0 1 0 | | 0 0 0 | | 1 0 0 | 3 3 o12 : Matrix ZZ <--- ZZ
For the typical ASM, many different rank tables could be used to construct the same ASM variety . The method rankTableToASM expects the (unique) matrix with minimum possible entries, which is the one constructed in Section 2.2 (see [RR86, Lemma 1]). If the user has a non-minimal rank table (as a matrix of non-negative integers), the function rankTableFromMatrix transforms the non-minimal rank table into a minimal rank table.
i13 : rankTableFromMatrix matrix{{0,1,2},{0,4,1},{8,2,4}} o13 = | 0 1 1 | | 0 1 1 | | 1 2 2 | 3 3 o13 : Matrix ZZ <--- ZZ
Among other uses, rank tables also facilitate efficient addition of ASM ideals. Every sum of ASM ideals is again an ASM ideal [Wei17, Section 3], and the rank table of the sum is the entrywise minimum of the rank tables of the ASMs appearing as summands. If are all partial ASMs, the method schubertAdd computes the rank tables of the (via rankTable), takes entrywise minima (via entrywiseMinRankTable), and computes an ASM ideal from that rank table. Both the ASM and its rank table are saved in the cache of the newly computed ASM ideal.
i14 : N = matrix{{1,0,0},{0,0,1}} o14 = | 1 0 0 | | 0 0 1 | 2 3 o14 : Matrix ZZ <--- ZZ i15 : idealSum = schubertAdd{M,N} o15 = ideal (z , - z z + z z ) 1,1 1,2 2,1 1,1 2,2 o15 : Ideal of QQ[z ..z ] 1,1 2,2 i16 : peek idealSum.cache o16 = CacheTable{ASM => | 0 1 0 0 | } | 1 -1 0 1 | | 0 1 0 0 | | 0 0 1 0 | rankTable => | 0 1 1 1 | | 1 1 1 2 | | 1 2 2 3 | | 1 2 3 4 | i17 : getASM idealSum o17 = | 0 1 0 0 | | 1 -1 0 1 | | 0 1 0 0 | | 0 0 1 0 | 4 4 o17 : Matrix ZZ <--- ZZ
4. Pattern Avoidance
The MatrixSchubert package has functions to test pattern avoidance for permutations.
A permutation is called vexillary if it avoids the permutation . The class of one-sided ladder determinantal ideals coincides exactly with the class of vexillary matrix Schubert varieties. The vexillary condition has a large number of equivalent definitions. We direct the reader to [KMY09, Section 3.2] for many of them. Testing if a permutation is vexillary is implemented via the isVexillary function.
i18 : w = {7,2,5,8,1,3,6,4}; i19 : isVexillary w o19 = false i20 : w = {1,6,9,2,4,7,3,5,8}; i21 : isVexillary w o21 = true
A permutation is CDG if it avoids all eight of the following patterns:
The class of CDG permutations was named in [HPW22], where a diagonal Gröbner basis was conjectured for the class (proved in [Kle]). Every CDG permutation is vexillary, and the CDG permutations form the largest named class of permutations for which a diagonal Gröbner basis of their matrix Schubert varieties is known. Testing if a permutation is CDG is implemented via the isCDG function.
i22 : w = {5,7,2,1,6,4,3}; i23 : isCDG w o23 = false i24 : w = {1,3,5,7,2,4,6}; i25 : isCDG w o25 = true
We say that is Cartwright–Sturmfels if it avoids all of the following twelve patterns:
For background on the Cartwright–Sturmfels property of ideals in general, see [CDG22]. For a proof that the Cartwright-Sturmfels property is characterized by the given pattern avoidance condition, that Cartwright-Sturmfels Schubert determinantal ideals have an universal Gröbner basis, and that any initial ideal of a Cartwright-Sturmfels Schubert determinantal ideal is Cohen–Macaulay, see [CDG22, Theorem 4.6]. Every Cartwright–Sturmfels Schubert determinantal ideal is CDG.
Testing if a permutation is Cartwright-Sturmfels is implemented via the isCartwrightSturmfels functions.
i26 : w = {3,1,2,6,5,4}; i27 : isCartwrightSturmfels w; o27 = false i28 : w = {6,3,5,2,1,4}; i29 : isCartwrightSturmfels w o29 = true
More generally, avoidsAllPatterns inputs a permutation and a list of patterns to avoid, and determines if the permutation avoids all of the patterns. This allows users to test conjectures related to pattern avoidance in a much more general capacity.
5. Algorithms for Castelnuovo–Mumford regularity
Castelnuovo–Mumford regularity is a fundamental invariant in commutative algebra and algebraic geometry that in a rough sense gives a measure of the complexity of a module or sheaf.
In this package we implement (as ) a purely combinatorial formula developed by Peckenik, Speyer, and Weigandt [PSW22, Theorem 1.2] for computing the Castelnuovo–Mumford regularity of for arbitrary . We also extend the functionality of so that it can compute the Castelnuovo–Mumford regularity of the coordinate ring associated to a partial ASM by passing to the antidiagonal initial ideal, a valid strategy in light of an important theorem of Conca and Varbaro [CV20] together with Theorem 2.2. See Subsection 5.2 for a fuller explanation.
5.1 Matrix Schubert varieties
The theoretical foundation for the function is a result of Pechenik, Speyer, and Weigandt:
Theorem 5.1 ([PSW22, Theorem 1.2]).
For ,
where is the Rajchgot index of a permutation.
We refer the reader to [PSW22] for the definition of the Rajchgot index.
The function takes either a permutation in one-line notation (that is, as a list) or a partial ASM and returns the Castelnuovo–Mumford regularity of the associated coordinate ring. The computation of the Rajchot index of a permutation invovles determining longest subsequences of the permutation subject to certain conditions. We utilize memoization in determining these longest subsequences which leads to drastic speed improvements over Macaulay2’s built-in command . (By that, we mean that there are examples of the type we would be inclined to compute in the course of research which run reliably faster, not that we have performed any type of formal efficiency analysis. We include a couple of illustrating examples here.) The following example run on a computer with an AMD Ryzen 5 5600U processor demonstrates the extent of this speed-up.
i30 : w = {1,2,3,9,8,4,5,6,7}; i31 : I = antiDiagInit(w, CoefficientRing=>ZZ/3001); ZZ o31 : MonomialIdeal of ----[z ..z ] 3001 1,1 9,9 i32 : M = comodule I; i33 : time regularity M -- used 1.41504 seconds o33 = 6 i34 : time schubertRegularity w -- used 0.000181139 seconds o34 = 6 i35 : time schubertRegularity random toList (1 .. 100) -- used 4.03299 seconds o35 = 1925
5.2 ASM Varieties
The function also accepts as input a partial ASM. First, checks whether the matrix is a permutation matrix; in which case the Castelnuovo–Mumford regularity is computed via Theorem 5.1. Otherwise, the antidiagonal initial ideal of the ASM is computed, and the built-in Macaulay2 command is used. The Castelnuovo–Mumford regularity of the quotient by the initial ideal will coincide with the Castelnuovo–Mumford regularity of the coordinate ring corresponding to the ASM by [CV20, Corollary 2.7] since the antidiagonal initial ideal is squarefree [KM05, Wei17].
i36 : A = matrix{{0,0,1,0},{0,1,-1,1},{1,-1,1,0},{0,1,0,0}}; 4 4 o36 : Matrix ZZ <--- ZZ i37 : time regularity comodule schubertDeterminantalIdeal A -- used 0.00968312 seconds o37 = 1 i38 : time schubertRegularity A -- used 0.0100184 seconds o38 = 1 i39 : B = matrix{{1,0,0,0,0,0,0,0},{0,1,0,0,0,0,0,0},{0,0,0,0,1,0,0,0}, {0,0,0,0,0,1,0,0},{0,0,1,0,0,-1,1,0},{0,0,0,1,-1,1,0,0}, {0,0,0,0,1,0,0,0},{0,0,0,0,0,0,0,1}}; 8 8 o39 : Matrix ZZ <--- ZZ i40 : time regularity comodule schubertDeterminantalIdeal B -- used 1.01169 seconds o40 = 8 i41 : time schubertRegularity B -- used 0.08511 seconds o41 = 8
We are a little bit disappointed that, as we see above with the ASM , the command schubertRegularity is sometimes slower than the already-available regularity command applied to an ASM ideal. However, as we see above with the ASM , schubertRegularity can be a meaningful improvement over regularity in other cases.111We expect that the issue is that we are for some reason describing the sets of rows and columns whose minors define the ASM ideal (or its antidiagonal initial ideal) less efficiently than the minors command does. This explanation is compatible with our experience that antiDiagInit is typically slower than schubertDeterminantalIdeal for dominant permutations, i.e., permutations indexing Schubert determinantal ideals that are already monomial ideals. As a rule of thumb, we recommend schubertRegularity for ASM ideals with more generators of higher degrees and regularity for ASM ideals with fewer generators or generators in lower degrees.
6. Schubert and Grothendieck polynomials
The MatrixSchubert package provides functions to compute Schubert, double Schubert, and Grothendieck polynomials for permutations. We give a brief overview of how these families of polynomials are constructed, and refer the reader to [KM05] for a more detailed (and somewhat more general) treatment. Let , and let denote the polynomial ring in over the field . Let be the ’th divided difference operator, which sends to
It is not obvious that , but it is true. Let , i.e., the longest word in . For , the Schubert polynomial is defined recursively as follows:
where is a right descent of (i.e., ). The double Schubert polynomial is defined using the same recursion, but with initial condition . Finally, the Grothendieck polynomial is defined by the recursion
where is a right descent of . Computing these polynomials for a permutation given in one-line notation is implemented via the schubertPolynomial, doubleSchubertPolynomialnomial, and grothendieckPolynomial functions respectively.
i42 : w = {2,1,4,3}; i43 : schubertPolynomial w 2 o43 = x + x x + x x 1 1 2 1 3 o43 : QQ[x ..x ] 1 4 i44 : doubleSchubertPolynomialnomial w 2 2 o44 = x + x x + x x - 2x y - x y - x y + y - x y + y y - x y + y y 1 1 2 1 3 1 1 2 1 3 1 1 1 2 1 2 1 3 1 3 o44 : QQ[x ..x , y ..y ] 1 4 1 4 i45 : grothendieckPolynomial w
2 2 2 2 o45 = x x x - x x - x x - x x x + x + x x + x x 1 2 3 1 2 1 3 1 2 3 1 1 2 1 3 o45 : QQ[x ..x ] 1 4
The default options for computing Schubert, double Schubert, and Grothendieck polynomials use the definitions by divided difference operators, where we deterministically pick one reduced word for each to apply the divided difference operators. For Schubert polynomials, we also provide the option Algorithm=>"Transition" that computes Schubert polynomials via transition equations; see, e.g., [W21]. For Grothendieck polynomials, we provide three different implementations: "DividedDifference", "Degree", and "PipeDream". The "Degree" option computes the twisted -polynomials of the matrix Schubert variety and should not be used for any practical implementation. The "PipeDream" option computes Grothendieck polynomials by the pipe dream formula. We provide these different options for any users who are interested in comparing efficiency of the different algorithms.
7. Studying ASM varieties via initial ideals
Rank functions induce a lattice structure on the set of ASMs defined by if and only if for all . The restriction of this partial order to recovers (strong) Bruhat order on . Define
Proposition 7.1.
[Wei17, Proposition 5.4],[KW, Lemma 2.6] If is an ASM and is an antidiagonal term order, then
By combining Knutson and Miller’s [KM05, Theorem B] with Bergeron and Billey’s [BB93, Theorem 3.7], one may construct a reduced word for from the indices of the variables generating any minimal prime of .
It is of independent combinatorial interest to understand the lattice of ASMs. The function permSetOfASM takes in an ASM and computes by decomposing the antidiagonal initial ideal of and reading a reduced word from each of the primes appearing in the decomposition. The set of distinct permutations encountered comprises and therefore also indexes the components in a prime decomposition of .
i46 : A = matrix{{0,1,0},{1,-1,1},{0,1,0}}; i47 : permSetOfASM A o47 = {{3, 1, 2}, {2, 3, 1}}
The function schubertDecompose takes in an ideal, computes its initial ideal by the default term order in Macaulay2 (which is antidiagonal) and, from the minimal primes of that ideal, finds and returns the set of permutations with at least one reduced word given by the set of generators of one of those minimal primes. The primary use of this function is on an ideal the user knows to be an ASM ideal (such as one arising directly from the matrix or as a sum of other ASM ideals), in which case the output will be .
i48 : schubertDecompose schubertDeterminantalIdeal A o48 = {{3, 1, 2}, {2, 3, 1}}
If the user has an ideal and is unsure if that ideal is an ASM ideal, they may use the function isASMIdeal, which takes in an ideal and first applies schubertDecompose. It then takes entrywise maxima (using entrywiseMaxRankTable) among the rank tables of the permutations found from schubertDecompose. Using rankTableToASM, it constructs the partial ASM whose ASM ideal is determined by that rank table. Finally, isASMIdeal returns a boolean indicating if is equal to the input ideal. In case it is, isASMIdeal caches the partial ASM so that . The ASM may then be retrieved via getASM.
i49 : I1 = schubertDeterminantalIdeal {3,4,1,2}; o49 : Ideal of QQ[z ..z ] 1,1 4,4 i50 : I2 = sub(schubertDeterminantalIdeal {3,2,4,1},ring I1); o50 : Ideal of QQ[z ..z ] 1,1 4,4 i51 : I = intersect(I1,I2); o51 : Ideal of QQ[z ..z ] 1,1 4,4 i52 : isASMIdeal I o52 = true i53 : A = getASM I o53 = | 0 0 1 0 | | 0 1 0 0 | | 1 -1 0 1 | | 0 1 0 0 |
The antidiagonal initial ideal of an ASM ideal can be used for additional computations in light of recent and impactful results of Conca and Varbaro [CV20]. Fix a partial ASM and antidiagonal term order . A result from [CV20] closely related to that discussed in the section on Castelnuovo–Mumford regulartiy states that is Cohen–Macaulay if and only if is Cohen–Macaulay (which again uses that is radical). The function isSchubertCM assesses Cohen–Macaulayness of by checking .
We continue from the example above and then consider a familiar non-Cohen–Macaulay variety.
i54 : isSchubertCM A o54 = true i55 : B = matrix{{0,0,1,0,0},{0,0,0,1,0},{1,0,-1,0,1},{0,1,0,0,0},{0,0,1,0,0}}; 5 5 o55 : Matrix ZZ <--- ZZ i56 : trim schubertDeterminantalIdeal B o56 = ideal (z , z , z , z , z z , z z , z z , z z ) 2,2 2,1 1,2 1,1 2,3 3,2 1,3 3,2 2,3 3,1 1,3 3,1 i57 : isSchubertCM B o57 = false
The Stanley–Reisner complexes of antidiagonal initial ideals of ASM ideals are of independent interest. Knutson and Miller [KM05] introduced subword complexes, of which Stanley–Reisner complexes of antidiagonal initial ideals of Schubert determinantal ideals are the motivating example. Given a permutation , the method subwordComplex produces the Stanley–Reisner complex of the antidiagonal initial ideal of .
i58 : w = {2,1,4,3}; i59 : netList facets subwordComplex w +--------------------------------------------------------+ o59 = |z z z z z z z z z z z z z z | | 1,2 1,4 2,1 2,2 2,3 2,4 3,1 3,2 3,3 3,4 4,1 4,2 4,3 4,4| +--------------------------------------------------------+ |z z z z z z z z z z z z z z | | 1,2 1,3 1,4 2,1 2,3 2,4 3,1 3,2 3,3 3,4 4,1 4,2 4,3 4,4| +--------------------------------------------------------+ |z z z z z z z z z z z z z z | | 1,2 1,3 1,4 2,1 2,2 2,3 2,4 3,2 3,3 3,4 4,1 4,2 4,3 4,4| +--------------------------------------------------------+ i60 : v = {2,1,6,3,5,4}; i61 : # facets subwordComplex v o61 = 35
Moreover, Knutson and Miller [KM05] showed that the prime components of the antidiagonal initial ideal of Schubert determinantal ideals are indexed by combinatorial objects called pipe dreams (by [KM05], now adopted as standard terminology in the literature) or RC-graphs (by [BB93], to which we refer the reader for background).
In particular, to read off an associated prime of the antidiagonal initial ideal from a pipe dream, one simply needs to read off the locations of the tiles in the pipe dream. This package provides the class PipeDream to display and manipulate pipe dreams.
i62 : u = {2,1,4,3,6,5}; i63 : (pipeDreams u)_0 o63 = +/+/+/ ////// ////// ////// ////// ////// o63 : PipeDream i64 : (decompose antiDiagInit u)_0 o64 = monomialIdeal (z , z , z ) 1,1 1,3 1,5 o64 : MonomialIdeal of QQ[z ..z ] 1,1 6,6
The generator corresponds to the tile in location of the given pipe dream, the generator to the tile in location , and the generator to the tile in location .
To compare the Macaulay2 drawing of a pipe dream with those in [KM05] and subsequent literature, + is interpreted as a cross tile, and / is interpreted as an elbow tile.
![Refer to caption](x1.png)
8. Some diagonal term orders
Knutson and Miller’s [KM05] result that every antidiagonal term order determines the same initial ideal of a given Schubert determinantal ideal has been used heavily throughout the MatrixSchubert
package. By contrast, different diagonal term orders can yield different initial ideals. The various diagonal initial ideals of Schubert determinantal ideals are a topic of active research. Given a permutation in one-line notation or a partial ASM, the functions diagLexInitSE
, diagLexInitNW
, diagRevLexInit
will each produce an initial ideal under a distinct diagonal term order.
Precisely, diagLexInitSE
is the lexicographic order for which is largest and the remaining variables are ordered by reading left across the bottom row, then right to left across row , and so on until arriving finally at , the smallest variable. diagLexInitNW
is the lexicographic order for which is largest and the remaining variables are ordered by reading right across the top row, then left to right across row , and so on until arriving finally at , the smallest variable. And diagRevLexInit
is the reverse lexicographic order where is the smallest (or most penalized) variable followed by the variables encountered reading left to right along the bottom row, then left to right along row and so on until arriving at .
The example , taken from [KW], is the smallest example of which the authors are aware of a permutation with different initial ideals for different diagonal term orders. The authors are unaware of any examples for which diagLexInitSE
and diagRevLexInit
produce different initial ideals. In the example below, the Macaulay2 output recording the ambient rings of the initial ideals has been omitted for brevity.
i65 : w = {2,1,4,3,6,5} o65 = {2, 1, 4, 3, 6, 5} o65 : List i66 : diagLexInitSE w 2 o66 = monomialIdeal (z z z z z z , z z z z z , 5,5 4,3 3,4 3,2 2,1 1,3 5,5 4,3 3,4 2,1 1,2 z z z , z z z z z z , z ) 3,3 2,1 1,2 5,5 4,3 3,4 3,1 2,3 1,2 1,1 i67 : diagLexInitNW w o67 = monomialIdeal (z , z z z , z z z z z , 1,1 1,2 2,1 3,3 1,2 2,1 3,4 4,3 5,5 2 z z z z z z , z z z z z z ) 1,2 2,3 3,1 3,4 4,3 5,5 1,3 2,1 3,2 3,4 4,3 5,5 i68 : diagRevLexInit w 2 o68 = monomialIdeal (z z z z z z , z z z z z , 5,5 4,3 3,4 3,2 2,1 1,3 5,5 4,3 3,4 2,1 1,2 z z z , z z z z z z , z ) 3,3 2,1 1,2 5,5 4,3 3,4 3,1 2,3 1,2 1,1
9. Available Examples of ASMs
For the convenience of the user, we provide a complete list of ASMs up to ASM(7). It can be accessed as
ASMFullList n
for any , which returns a list of objects of type Matrix
. To access a list of random examples of ASMs of size , ASMRandomList(n,m)
returns a random length- list of ASMs which are size , presented as Matrix
objects.
i69 : ASMRandomList(5,4) o69 = {| 1 0 0 0 0 |, | 0 0 0 1 0 |, | 0 0 0 1 0 |, | 0 0 0 0 1 |} | 0 0 1 0 0 | | 1 0 0 -1 1 | | 0 1 0 -1 1 | | 0 0 1 0 0 | | 0 0 0 1 0 | | 0 1 0 0 0 | | 1 -1 1 0 0 | | 1 0 0 0 0 | | 0 1 0 -1 1 | | 0 0 0 1 0 | | 0 0 0 1 0 | | 0 1 -1 1 0 | | 0 0 0 1 0 | | 0 0 1 0 0 | | 0 1 0 0 0 | | 0 0 1 0 0 |
Additionally, for , lists of non-permutation ASMs that define an arithmetically Cohen–Macaulay variety, ASMs that do not define an arithmetically Cohen–Macaulay variety, and antidiagonal initial ideals of ASMs are provided, and can be accessed with cohenMacaulayASMsList n
, nonCohenMacaulayASMsList n
, and initialIdealsList n
, respectively.
It is well known that there are ASMs, of which are permutation matrices. Each non-permutation ASM is on exactly one of the lists cohenMacaulayASMsList 5
or nonCohenMacaulayASMsList 5
.
i70 : CM = cohenMacaulayASMsList 5; i71 : NCM = nonCohenMacaulayASMsList 5; i72 : #CM+#NCM+5! == 429 o72 = true i73 : #ASMFullList 5 o73 = 429
10. Acknowledgements
The authors thank Shiliang Gao, Pooja Joshi, and Antsa Tantely Fandresena Rakotondrafara, contributors to the MatrixSchubert package who provided code, improved existing code, or enhanced documentation. They also thank Anton Leykin, Mike Stillman and Gregory Smith, who answered countless questions both during the Macaulay2 workshop, where this package was begun, and after. They thank Mahrud Sayrafi for his helpful code review and for implementing the PipeDream class. The authors thank Anna Weigandt and Jonathan Montaño for helpful conversations. Finally, the authors would also like to thank Christine Berkesch, Michael Perlman, and Mahrud Sayrafi for co-organizing the workshop with the first author where this project began.