Hall Polynomials

sage.combinat.hall_polynomial.hall_polynomial(nu, mu, la, q=None)

Return the (classical) Hall polynomial Pνμ,λ (where ν, μ and λ are the inputs nu, mu and la).

Let ν,μ,λ be partitions. The Hall polynomial Pνμ,λ(q) (in the indeterminate q) is defined as follows: Specialize q to a prime power, and consider the category of Fq-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 N is any fixed object of type ν in this category, then the polynomial Pνμ,λ(q) specialized at the prime power q counts the number of subobjects L of N having type λ such that the quotient object N/L has type μ. This determines the values of the polynomial Pνμ,λ at infinitely many points (namely, at all prime powers), and hence Pνμ,λ is uniquely determined. The degree of this polynomial is at most n(ν)n(λ)n(μ), where n(κ)=i(i1)κi 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 Pνμ,λ=0. More generally, if the Littlewood-Richardson coefficient cνμ,λ vanishes, then Pνμ,λ=0.

The Hall polynomials satisfy the symmetry property Pνμ,λ=Pνλ,μ.

ALGORITHM:

If λ=(1r) and |ν|=|μ|+|λ|, then we compute Pνμ,λ as follows (cf. Example 2.4 in [Sch2006]):

First, write ν=(1l1,2l2,,nln), and define a sequence r=r0r1rn such that

μ=(1l1r0+2r1r2,2l2r1+2r2r3,,(n1)ln1rn2+2rn1rn,nlnrn1+rn).

Thus if μ=(1m1,,nmn), we have the following system of equations:

m1=l1r+2r1r2,m2=l2r1+2r2r3,,mn1=ln1rn2+2rn1rn,mn=lnrn1+rn

and solving for ri and back substituting we obtain the equations:

rn=rn1+mnln,rn1=rn2+mn1ln1+mnln,,r1=r+nk=1(mklk),

or in general we have the recursive equation:

ri=ri1+nk=i(mklk).

This, combined with the condition that r0=r, determines the ri uniquely (recursively). Next we define

t=(rn2rn1)(lnrn1)+(rn3rn2)(ln1+lnrn2)++(r0r1)(l2++lnr1),

and with these notations we have

Pνμ,(1r)=qt(lnrn1)q(ln1rn2rn1)q(l1r0r1)q.

To compute Pνμ,λ in general, we compute the product IμIλ in the Hall algebra and return the coefficient of Iν.

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