[1]:
import os
import sys
sys.path.insert(0, os.path.abspath('../..'))

import sympy as sp
import numpy as np
import itertools as it
import pysymmpol as sy
import pysymmpol.utils as ut
from IPython.display import display, Latex

Class: HallLittlewoodPolynomial

We finally consider the Hall-Littlewood polynomials. We have chosen the deformation parameter as \(Q\), instead \(t\) – since \(t\) is related to our Miwa coordianates.

Basic Usage

[2]:
# Define the deformation parameter
Q = sp.Symbol('Q')
[7]:
# Build Young diagrams for a given partition
part = (4,2)
yg = sy.YoungDiagram(part)
[8]:
hl = sy.HallLittlewoodPolynomial(yg)
[9]:
# Let us build the coordinates
n = 2
x = ut.create_x_coord(n)

# Explicit expression for the Hall-Littlewood polynomial
hl.explicit(x, Q).expand()
[9]:
$\displaystyle - Q x_{1}^{3} x_{2}^{3} + x_{1}^{4} x_{2}^{2} + x_{1}^{3} x_{2}^{3} + x_{1}^{2} x_{2}^{4}$
[10]:
# As before
hl.explicit(x, Q, True)
[10]:
$\displaystyle \operatorname{Poly}{\left( x_{1}^{4}x_{2}^{2} - x_{1}^{3}x_{2}^{3}Q + x_{1}^{3}x_{2}^{3} + x_{1}^{2}x_{2}^{4}, x_{1}, x_{2}, Q, domain=\mathbb{Q} \right)}$
[11]:
# Let us build the coordinates n > len(part)
n = 3
x = ut.create_x_coord(n)

# Explicit expression for the Hall-Littlewood polynomial
hl.explicit(x, Q).expand().factor().expand()
[11]:
$\displaystyle - Q^{3} x_{1}^{2} x_{2}^{2} x_{3}^{2} + Q^{2} x_{1}^{3} x_{2}^{2} x_{3} + Q^{2} x_{1}^{3} x_{2} x_{3}^{2} + Q^{2} x_{1}^{2} x_{2}^{3} x_{3} + 2 Q^{2} x_{1}^{2} x_{2}^{2} x_{3}^{2} + Q^{2} x_{1}^{2} x_{2} x_{3}^{3} + Q^{2} x_{1} x_{2}^{3} x_{3}^{2} + Q^{2} x_{1} x_{2}^{2} x_{3}^{3} - Q x_{1}^{4} x_{2} x_{3} - Q x_{1}^{3} x_{2}^{3} - 3 Q x_{1}^{3} x_{2}^{2} x_{3} - 3 Q x_{1}^{3} x_{2} x_{3}^{2} - Q x_{1}^{3} x_{3}^{3} - 3 Q x_{1}^{2} x_{2}^{3} x_{3} - 4 Q x_{1}^{2} x_{2}^{2} x_{3}^{2} - 3 Q x_{1}^{2} x_{2} x_{3}^{3} - Q x_{1} x_{2}^{4} x_{3} - 3 Q x_{1} x_{2}^{3} x_{3}^{2} - 3 Q x_{1} x_{2}^{2} x_{3}^{3} - Q x_{1} x_{2} x_{3}^{4} - Q x_{2}^{3} x_{3}^{3} + x_{1}^{4} x_{2}^{2} + x_{1}^{4} x_{2} x_{3} + x_{1}^{4} x_{3}^{2} + x_{1}^{3} x_{2}^{3} + 2 x_{1}^{3} x_{2}^{2} x_{3} + 2 x_{1}^{3} x_{2} x_{3}^{2} + x_{1}^{3} x_{3}^{3} + x_{1}^{2} x_{2}^{4} + 2 x_{1}^{2} x_{2}^{3} x_{3} + 3 x_{1}^{2} x_{2}^{2} x_{3}^{2} + 2 x_{1}^{2} x_{2} x_{3}^{3} + x_{1}^{2} x_{3}^{4} + x_{1} x_{2}^{4} x_{3} + 2 x_{1} x_{2}^{3} x_{3}^{2} + 2 x_{1} x_{2}^{2} x_{3}^{3} + x_{1} x_{2} x_{3}^{4} + x_{2}^{4} x_{3}^{2} + x_{2}^{3} x_{3}^{3} + x_{2}^{2} x_{3}^{4}$
[12]:
# Let us build the coordinates n < len(part)
n = 1
x = ut.create_x_coord(n)

# Explicit expression for the Hall-Littlewood polynomial
hl.explicit(x, Q)
[12]:
0

Limits Q=0 and Q=1

One important thing: We need to crete the x coordinates as well the power sums for them, since the Schur polynomials are defined via Miwa coordinates.

[13]:
# We want to find the limits Q = 0 and Q = 1
sc = sy.SchurPolynomial(yg)
mp = sy.MonomialPolynomial(yg)
[14]:
n = 2
x = ut.create_x_coord(n)
X = ut.tx_power_sum(yg.boxes, n)
[15]:
hl = sy.HallLittlewoodPolynomial(yg)

Schur Polynomials

[16]:
# The limit Q=0 is the Schur polynomial.
hl.explicit(x, 0).factor() == sc.explicit(X).factor()
[16]:
True

Monomial Symmetric Polynomials

[17]:
hl = sy.HallLittlewoodPolynomial(yg)
[19]:
# The limit Q=1 is the Schur polynomial.
hl.explicit(x, 1).factor() == mp.explicit(x).factor()
[19]:
True