def test_GQ_to_GP_expansion(): # noqa for mu in Partition.all(25, strict=True): print('mu =', mu) print() print(Partition.printable(mu, shifted=True)) print() n = len(mu) q = GQ(n, mu) expansion = SymmetricPolynomial.GP_expansion(q) normalized = Vector({ tuple(nu[i] - mu[i] for i in range(len(mu))): c * sgn(mu, nu) * BETA**(sum(nu) - sum(mu)) / 2**(len(mu) - sum(nu) + sum(mu)) for nu, c in expansion.items() }) unsigned = all(c > 0 for c in normalized.values()) print(' mu =', mu, 'n =', n) print(' expansion =', expansion) print(' normalized expansion =', normalized) assert all(len(nu) == 0 or max(nu) <= 1 for nu in normalized) assert all(len(nu) == len(mu) for nu in expansion) assert all(Partition.contains(nu, mu) for nu in expansion) assert all(c % 2**(len(mu) - sum(nu) + sum(mu)) == 0 for nu, c in expansion.items()) assert unsigned expected = { tuple(mu[i] + a[i] for i in range(len(a))) for a in zero_one_tuples(len(mu)) if all( mu[i - 1] + a[i - 1] > mu[i] + a[i] for i in range(1, len(a))) } print(' expected =', expected) assert set(expansion) == expected print() print()
def test_skew_GP_positivity(): # noqa k = 10 for mu in Partition.all(k, strict=True): for nu in Partition.all(k, strict=True): if not Partition.contains(mu, nu): continue n = len(mu) f = GP(n, mu, nu) expansion = SymmetricPolynomial.GP_expansion(f) normalized = Vector({ lam: c * BETA**(sum(lam) - sum(mu) + sum(nu)) for lam, c in expansion.items() }) print('GP_{%s/%s}(x_%s) =' % (mu, nu, n), normalized) print() assert all(c > 0 for c in normalized.values())
def test_staircase_grothendieck_GP_positivity(): # noqa r = 6 for k in range(r): delta = tuple(k - i for i in range(k)) for nu in Partition.all(sum(delta)): if not Partition.contains(delta, nu): continue n = len(delta) f = G(n, delta, nu) expansion = SymmetricPolynomial.GP_expansion(f) normalized = Vector({ lam: c * BETA**(sum(lam) - sum(delta) + sum(nu)) for lam, c in expansion.items() }) print('G_{%s/%s}(x_%s) =' % (delta, nu, n), normalized) print() assert all(c > 0 for c in normalized.values())