コード例 #1
0
ファイル: scrap.py プロジェクト: emarberg/stable-grothendieck
def skew(w):
    n = w.rank
    f = tuple(i for i in range(1, n + 1) if w(i) > i)
    r = len(f)
    lam = tuple(w(f[-1]) - r - f[i] + i + 1 for i in range(r))
    mu = tuple(w(f[-1]) - r - w(f[i]) + i + 1 for i in range(r))
    print(Partition.printable(lam))
    print()
    print(Partition.printable(mu))
    return lam, mu
コード例 #2
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()
コード例 #3
0
def test_refined_gq_to_gp_expansion(k=12):  # noqa
    for mu in Partition.all(k, strict=True):
        print('mu =', mu)
        print()
        print(Partition.printable(mu, shifted=True))
        print()
        n = len(mu)
        q = SymmetricPolynomial._slow_refined_dual_stable_grothendieck_q(n, mu)
        expected = {}
        for a in zero_one_tuples(len(mu)):
            if not all(mu[i - 1] - a[i - 1] > mu[i] - a[i]
                       for i in range(1, len(a))):
                continue
            if not all(mu[i] - a[i] > 0 for i in range(len(a))):
                continue
            nu = Partition.trim(tuple(mu[i] - a[i] for i in range(len(a))))
            coeff = 2**(len(nu) - sum(a)) * sgn(nu, mu) * BETA**sum(a)
            assert coeff != 0
            expected[nu] = coeff
        print('  expected =', expected)
        expected = sum([
            coeff *
            SymmetricPolynomial._slow_refined_dual_stable_grothendieck_p(
                n, nu) for (nu, coeff) in expected.items()
        ])
        print('           =', expected)
        assert q == expected
        print()
        print()
コード例 #4
0
def test_gq_to_gp_expansion():  # noqa
    for mu in Partition.all(15, 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)
        print('  mu =', mu, 'n =', n)
        print('  expansion =', expansion)
        assert all(len(nu) == len(mu) for nu in expansion)
        assert all(Partition.contains(mu, nu) for nu in expansion)
        # assert all(c % 2**(len(mu) - sum(nu) + sum(mu)) == 0 for nu, c in expansion.items())
        expected = {}
        for a in zero_one_tuples(len(mu)):
            if not all(mu[i - 1] - a[i - 1] > mu[i] - a[i]
                       for i in range(1, len(a))):
                continue
            if not all(mu[i] - a[i] > 0 for i in range(len(a))):
                continue
            nu = Partition.trim(tuple(mu[i] - a[i] for i in range(len(a))))
            coeff = 2**(len(nu) - sum(a)) * sgn(nu, mu) * BETA**sum(a)
            assert coeff != 0
            expected[nu] = coeff
        print('  expected =', expected)
        assert expansion == Vector(expected)
        print()
        print()
コード例 #5
0
def _expansion(n, function, expand, shifted=True, unsigned=True):  # noqa
    for mu in Partition.all(n, strict=shifted):
        n = len(mu)
        p = function(n, mu)
        ansion = expand(p)
        if unsigned:
            expansion = {
                nu: coeff * (-1)**abs(sum(mu) - sum(nu))
                for nu, coeff in ansion.items()
            }
        else:
            expansion = ansion
        print('mu =', mu)
        print()
        print(Partition.printable(mu, shifted=shifted))
        print()
        print('  mu =', mu, 'n =', n)
        print('  expansion =', ansion)
        if unsigned:
            print('  unsigned expansion =', expansion)
        print()
        assert all(v > 0 for v in expansion.values())