# NumericalSchubertCalculus -- Numerical Algorithms for Schubert Calculus

## Description

Tools for solving Schubert problems on Grassmannians using numerical homotopy continuation.

The package NumericalSchubertCalculus implements the Littlewood-Richardson and Pieri homotopy algorithms.

### General functions include:

• randomSchubertProblemInstance -- Returns a random instance of a given Schubert problem by computing random matrices representing flags
• changeFlags -- Parameter homotopies to move solutions of a Schubert problem from one instance to another
• checkIncidenceSolution -- Check if a solution satisfies the incidence conditions of a Schubert problem

### Functions implementing homotopies specific to Schubert calculus:

• solveSchubertProblem -- uses Littlewood-Richardson homotopy to solve Schubert problems on Grassmannians
• solveSimpleSchubert -- uses Pieri homotopy algorithm to solve simple Schubert problems on Grassmannians

### Using PHCpack:

An alternative implementation using PHCpack (download from here) includes the following functions:
• LRrule -- uses the geometric Littlewood-Richardson rule to resolve a Schubert intersection problem.
• LRtriple -- runs the Littlewood-Richardson homotopy to solve a generic Schubert problem.
• parseTriplet -- Parses a flag, system, and solutions (the output from LRtriple) into Macaulay2 objects.
• LRcheater -- A cheater's homotopy to a real Schubert triple intersection problem
• PieriRootCount -- the number of solutions to a generic Pieri problem
• PieriHomotopies -- runs the Pieri homotopies to solve a general hypersurface problem
Note that LRcheater is similar to changeFlags
For example, the Schubert problem (2,1)^3 in Gr(3,6) with respect to random flags has 2 solutions
 `i1 : k = 3; n = 6;` ```i3 : SchPblm = { ({2,1}, random(CC^6,CC^6)), ({2,1}, random(CC^6,CC^6)), ({2,1}, random(CC^6,CC^6)) };``` ```i4 : solveSchubertProblem(SchPblm, k,n) o4 = {| -.973546-.443329i -.193482-.957391i -.460977-.267623i |, | | .153343-.291038i .339479-1.30008i -.577303-.171329i | | | .326239-.770744i .120186-1.46205i -.0769985-.323186i | | | -.451322-.514227i -.144874-.987789i -.589493-.209825i | | | -.052568-.692383i .364061-.704785i -.325325-.185011i | | | -.942864-.594173i -.826353-.203654i -.236865+.691374i | | ------------------------------------------------------------------------ -5.47422+1.18674i -.912706-1.64344i -.590144+.126046i |} -2.80395-.714508i -.793467-2.20255i -.016225+.340982i | -2.29873-2.34724i -.905617-2.59114i .0951404+.355536i | -3.36313+2.14592i -.703202-1.58202i -.375349+.205204i | -3.91243-.845457i -.528411-.900447i -.187047+.545512i | -4.19554+1.93172i -1.11528-.480829i .19859+1.24706i | o4 : List```

## Version

This documentation describes version 1.11 of NumericalSchubertCalculus.

## Source code

The source code from which this documentation is derived is in the file NumericalSchubertCalculus.m2. The auxiliary files accompanying it are in the directory NumericalSchubertCalculus/.

## Exports

• Functions and commands
• bracket2partition -- dictionary between different notations for Schubert conditions.
• changeFlags -- Parameter homotopies to move solutions of a Schubert problem from one instance to another
• checkIncidenceSolution -- Check if a solution satisfies the incidence conditions of a Schubert problem
• findGaloisElement (missing documentation)
• isFullSymmetric (missing documentation)
• isGaloisFullSymmetric (missing documentation)
• LRcheater -- A cheater's homotopy to a real Schubert triple intersection problem
• LRrule -- uses the geometric Littlewood-Richardson rule to resolve a Schubert intersection problem.
• LRtriple -- runs the Littlewood-Richardson homotopy to solve a generic Schubert problem.
• parseTriplet -- Parses a flag, system, and solutions (the output from LRtriple) into Macaulay2 objects.
• partition2bracket -- dictionary between different notations for Schubert conditions.
• PieriHomotopies -- runs the Pieri homotopies to solve a general hypersurface problem
• PieriRootCount -- the number of solutions to a generic Pieri problem
• printStatistics (missing documentation)
• randomSchubertProblemInstance -- Returns a random instance of a given Schubert problem by computing random matrices representing flags
• setVerboseLevel -- Set different levels of information printed on screen
• solutionsToAffineCoords -- writes solutions in global coords to affine coordinates.
• solveSchubertProblem -- uses Littlewood-Richardson homotopy to solve Schubert problems on Grassmannians
• solveSimpleSchubert -- uses Pieri homotopy algorithm to solve simple Schubert problems on Grassmannians
• wrapTriplet -- Wraps a flag, system, and solutions into one string for phc -e.
• Symbols