A Maple package for Kronecker coefficients arXiv download

Kronecker is a Maple package for computing Kronecker coefficients g(λ,μ,ν). It implements a highly optimized version of the algorithm proposed by Baldoni-Vergne-Walter (2017). Kronecker works just as well symbolically, computing dilated or stretched Kronecker coefficients g(kλ,kμ,kν) and even the entire quasipolynomial on a polyhedral chamber of (λ,μ,ν)’s.

Getting started

Download the zip file here, unpack it, and run the GettingStarted.mw worksheet. You should see the following code and output at the top of the file:

> restart:
  read "Kronecker.mpl":

Kronecker v1.0 by Velleda Baldoni, Michèle Vergne, Michael Walter (see https://github.com/catch22/kronecker for more information).

If you instead see an error message please let us now by opening a new bug report. The worksheet also contains the following illustrative examples demonstrating the functionality of the Kronecker package:

Calculate individual coefficients

Pass a list of partitions [λ,μ,ν] to Kronecker to compute the corresponding Kronecker coefficient g(λ,μ,ν):

> Kronecker([[131, 39, 19, 11], [110, 90], [120, 80]]);

70

> Kronecker([[15, 10, 9, 4, 3, 2], [21, 14, 8], [27, 16]]);

148

> Kronecker([[400000, 200000, 100000], [500000, 100000, 100000], [300000, 200000, 200000]]);

1596403568763802677125206373630515086

This last example is a branching problem for SL(9) and hence might take a little while to compute (around 6 minutes).

Calculate dilated coefficients

By providing an additional symbolic parameter to Kronecker, we can instead compute the dilated Kronecker coefficient, i.e., the quasipolynomial function p(k) = g(kλ,kμ,kν):

> Kronecker([[10, 6, 2], [10, 8], [11, 7]], k);

3/8 + (5/8)*(-1)^k + (3/2)*k + (7/4)*k^2

> Kronecker([[1, 1, 1, 1, 1, 1], [2, 2, 2], [3, 3]], k);

1

We can also probe individual cosets by using the coset option:

> Kronecker([[1, 1, 1, 1], [1, 1, 1, 1], [2, 2]], k, coset = 0);

(1/6)*k + 1

> Kronecker([[1, 1, 1, 1], [1, 1, 1, 1], [2, 2]], k, coset = 1);

-1/6 + (1/6)*k
> Kronecker([[1, 1], [1, 1], [1, 1], [1, 1]], k, coset = 0);

(2/3)*k + (1/6)*k^2 + (1/72)*k^3 + 1

> Kronecker([[1, 1], [1, 1], [1, 1], [1, 1]], k, coset = 1);

5/18 + (13/24)*k + (1/6)*k^2 + (1/72)*k^3

The last example shows that the Kronecker package also supports iterated Kronecked coefficients indexed by four or more partitions.

Calculate quasipolynomials on a chamber

Lastly, by providing three symbolic variables we can compute the entire quasipolynomial on the corresponding chamber:

> Kronecker([[132, 38, 19, 11], [110, 90], [120, 80]], [lambda, mu, nu]);

3/4 + (1/8)*(-1)^(lambda[4]+mu[1]+lambda[2]+nu[1]) - (1/2)*lambda[4]*mu[1] - (1/2)*lambda[4]*lambda[2] + (1/4)*lambda[4]^2 + (1/2)*lambda[4]*nu[1] + (1/2)*lambda[2] + (1/2)*lambda[3] - lambda[4] + (1/2)*mu[1] - (1/2)*nu[1] - (1/4)*lambda[3]^2 - (1/2)*lambda[3]*nu[1] + (1/2)*lambda[3]*mu[1] + (1/2)*lambda[3]*lambda[2] + (1/8)*(-1)^(lambda[3]+mu[1]+lambda[2]+nu[1])

Sometimes, the chamber and hence the quasipolynomial are not uniquely determined, because the given partition triple sits on a wall between two chambers. In other cases, such as in the following, the chamber is uniquely determined, but Kronecker is not aware of it since the partition triple sits on the boundary of the Kirwan cone. In either case the forceperturb option can be used to go ahead and select a chamber:

> factor(Kronecker([[288, 192, 174, 120, 30, 6], [343, 270, 197], [654, 156]], [lambda, mu, nu], forceperturb = true));

1/5040 * (-nu[1]+7+lambda[1]+lambda[2]+lambda[3]) * (-nu[1]+6+lambda[3]+lambda[2]+lambda[1]) * (-nu[1]+5+lambda[3]+lambda[2]+lambda[1]) * (-nu[1]+4+lambda[3]+lambda[2]+lambda[1]) * (-nu[1]+3+lambda[3]+lambda[2]+lambda[1]) * (-nu[1]+2+lambda[3]+lambda[2]+lambda[1]) * (-nu[1]+1+lambda[3]+lambda[2]+lambda[1]) * (lambda[1]+lambda[2]+lambda[4]+lambda[5]-mu[1]-mu[2]+1)

Attribution

If you find this software useful in your research please consider citing our paper:

@article{kronecker,
  title={Computation of dilated Kronecker coefficients},
  author={Baldoni, Velleda and Vergne, Mich{\`e}le},
  journal={Journal of Symbolic Computation},
  year={2017},
  doi={10.1016/j.jsc.2017.03.005},
  eprint={1601.04325},
  note={In press. With an appendix by Michael Walter. Software available at \url{https://catch22.github.io/kronecker/}.},
}

See also

  • barvikron: a Python package for efficiently computing Kronecker coefficients (using Barvinok’s algorithm to evaluate characters rather than the iterated residues used here)
  • LiE: a computer algebra system for reductive Lie group computations
  • SageMath: a computer algebra system which includes support for symmetric functions