In this project we investigate millions of instances of different enumerative problems on various classical flag varieties. The choice of which enumerative problems to study is not the subject of this page, but rather how the computations for a single enumerative problem are performed.
For a given enumerative problem, there is a text file, called Enumerative_Problem.data, which contains the data defining the problem to be studied. An example of this file can be found here. These data include:
This data file is formatted to be read by Maple, which uses the data to create a Singular input file that controls the first stage of the computation. In this stage, a subset of the points X is selected randomly, then each necklace determines which Schubert conditions are evaluated at which osculating flags. Each such choice is one instance of the enumerative problem. Each instance is formulated as the solutions to a system of polynomial equations. These systems are passed to Singular which uses Gröbner basis methods to compute an eliminant (a univariate polynomial in the ideal of the enumerative problem) for each instance. In the second phase of the computation, these eliminants are passed to Maple which computes the number of real roots of each eliminant using the package realroot, and the table is updated accordingly.
The number of real roots of each eliminant equals the number of real solutions to the corresponding instance of the enumerative problem, only eliminants satisfying the Shape Lemma are passed to Maple. That is, when Singular computes an eliminant, it checks whether its number of roots equals the number of solutions to the enumerative problem. If not, then it computes a different eliminant. In fact, it does the following. It first computes an eliminant with respect to one variable, and if this fails, then it applies a random linear shear to that variable and computes a new eliminant. If this fails, then it does this procedure again, with respect to a different variable. If this fails for each variable, an eliminant is computed with respect to a random linear form. If no eliminant satisfying the shape lemma is found, then an error message is printed to a file BadIdeals, and this instance of the enumerative problem is studied by hand.
One iteration of the procedure just described yields one instance of the enumerative problem for each necklace. The complete computation is organized by a shell script which iterates this procedure a fixed number of times (typically several hundred to several tens of thousands), randomly selecting a new set of points X each time.