def test_gp_pieri(n=4, m=10, l=5): for mu in Partition.all(m, strict=True): if sum(mu) <= 1: continue f = gp(n, mu) for p in range(1, l + 1): g = gp(n, (p,)) actual = f * g expected = 0 pieri = gp_pieri(mu, p) for (lam, c) in pieri.items(): expected += gp(n, lam) * c # print('gp_%s(x_%s)' % (mu, n), '*', 'gp_%s(x_%s)' % (p, n)) # print(' ', actual - expected) # print() assert actual == expected pieri = {k: 2 * v for k, v in pieri.items()} if p >= 2: for (lam, c) in gp_pieri(mu, p - 1).items(): pieri[lam] = pieri.get(lam, 0) + c * beta q = mu[0] if mu else 0 nu = (q + p,) + mu print() print(Partition.printable(nu, mu, shifted=True)) print() print('mu =', mu, 'p =', p, 'q =', q) print() rho1 = (q + p,) + mu[1:] rho2 = (q + p - 1,) + mu[1:] print(pieri) print() for lam in pieri: co = pieri[lam].substitute(0, 1) co = co - 1 if lam in [rho1, rho2] else co klg = Tableau.KLG_counts(nu, lam, q) print(lam, co, klg) assert co == klg print()
def rvector(nu, mu, p_max): ans = RCACHE.get((nu, mu), RowVector()) if len(ans) >= p_max: return ans.subvector(p_max) for p in range(len(ans), p_max): v = 0 for lam in rshapes(nu, mu): c = sum(nu) - sum(lam) v += 2**(len(lam) - c) * (-1)**( columns(nu, lam) + c) * Tableau.KLG_counts(lam, mu, p) if p == 0 and columns(nu, mu) == 1: v *= -1 ans.append(v) RCACHE[(nu, mu)] = ans return ans