Return the (classical) Hall polynomial
(where
,
and
are the inputs nu, mu
and la).
Let be partitions. The Hall polynomial
(in the indeterminate
) is defined
as follows: Specialize
to a prime power, and consider the
category of
-vector spaces with a distinguished
nilpotent endomorphism. The morphisms in this category shall be
the linear maps commuting with the distinguished endomorphisms.
The type of an object in the category will be the Jordan type
of the distinguished endomorphism; this is a partition. Now, if
is any fixed object of type
in this category, then
the polynomial
specialized at the
prime power
counts the number of subobjects
of
having
type
such that the quotient object
has type
. This determines the values of the polynomial
at infinitely many points (namely, at all
prime powers), and hence
is uniquely
determined. The degree of this polynomial is at most
, where
for every partition
.
(If this is negative, then the polynomial is zero.)
These are the structure coefficients of the (classical) Hall algebra.
If ,
then we have
. More generally, if the
Littlewood-Richardson coefficient
vanishes, then
.
The Hall polynomials satisfy the symmetry property
.
ALGORITHM:
If and
,
then we compute
as follows (cf. Example 2.4
in [Schiffmann]):
First, write , and
define a sequence
such that
Thus if , we have the following system
of equations:
and solving for and back substituting we obtain the equations:
or in general we have the recursive equation:
This, combined with the condition that , determines the
uniquely (recursively). Next we define
and with these notations we have
To compute in general, we compute the product
in the Hall algebra and return the coefficient of
.
EXAMPLES:
sage: from sage.combinat.hall_polynomial import hall_polynomial
sage: hall_polynomial([1,1],[1],[1])
q + 1
sage: hall_polynomial([2],[1],[1])
1
sage: hall_polynomial([2,1],[2],[1])
q
sage: hall_polynomial([2,2,1],[2,1],[1,1])
q^2 + q
sage: hall_polynomial([2,2,2,1],[2,2,1],[1,1])
q^4 + q^3 + q^2
sage: hall_polynomial([3,2,2,1], [3,2], [2,1])
q^6 + q^5
sage: hall_polynomial([4,2,1,1], [3,1,1], [2,1])
2*q^3 + q^2 - q - 1
sage: hall_polynomial([4,2], [2,1], [2,1], 0)
1