Пример #1
0
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()
Пример #2
0
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())
Пример #3
0
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())