コード例 #1
0
def _test(n_max, v_max):
    for n in range(n_max + 1):
        for v in range(1, v_max + 1):
            for lam1 in Partition.all(n):
                for lam2 in Partition.all(n):
                    print()
                    print()
                    print('* v =', v, ', n =', n, ', mu =', lam1, ', nu =',
                          lam2)
                    print()

                    print('Computing LHS . . .')
                    print()

                    s = Polynomial()
                    for mu in Partition.all(n + max(sum(lam1), sum(lam2))):
                        a = SymmetricPolynomial.stable_grothendieck_doublebar(
                            v, mu, lam1).truncate(n).polynomial('x')
                        b = SymmetricPolynomial.dual_stable_grothendieck(
                            v, mu, lam2).truncate(n).polynomial('y')
                        s += (a * b).truncate(n)
                        print('  ', mu, ':', s, '|', a, '|', b)
                        print()
                    print('LHS =', s)
                    print()
                    print()

                    print('Computing RHS . . .')
                    print()

                    f = Polynomial.one()
                    x = Polynomial.x
                    y = Polynomial.y
                    for i in range(1, v + 1):
                        for j in range(1, v + 1):
                            a = x(i) * y(j)
                            term = Polynomial.one()
                            for e in range(1, n + 1):
                                term += a**e
                            f = (f * term).truncate(n)
                    print('  ', '   :', f)
                    print()

                    t = Polynomial()
                    for kappa in Partition.subpartitions(lam2):
                        a = SymmetricPolynomial.stable_grothendieck_doublebar(
                            v, lam2, kappa).truncate(n)
                        b = SymmetricPolynomial.dual_stable_grothendieck(
                            v, lam1, kappa).truncate(n)
                        t += (f * a.polynomial('x') *
                              b.polynomial('y')).truncate(n)
                        print('  ', kappa, ':', t)
                        print()

                    print('RHS =', t)
                    print()
                    print()
                    print('diff =', s - t)
                    print()
                    assert s == t
コード例 #2
0
def kernel(n, v):
    t = Polynomial.one()
    x = Polynomial.x
    y = Polynomial.y
    for i in range(1, v + 1):
        for j in range(1, v + 1):
            a = x(i) * y(j)
            base = 1 + BETA * x(i) + x(i) * y(j)
            term = Polynomial.one()
            for e in range(1, n + 1):
                term += a**e
            base *= term
            term = Polynomial.one()
            for e in range(1, n + 1):
                term += (-BETA * x(i))**e
            base *= term
            t = (t * base).truncate(n)
    return t
コード例 #3
0
 def polynomial(self, variable='x'):
     x = Polynomial.x if variable == 'x' else Polynomial.y
     ans = Polynomial()
     for alpha in set(itertools.permutations(self.mu)):
         k = len(alpha)
         for index in itertools.combinations([i + 1 for i in range(self.n)],
                                             k):
             term = Polynomial.one()
             for i in range(k):
                 term *= x(index[i])**alpha[i]
             ans += term
     return ans
コード例 #4
0
def test_polynomials():
    m = SymmetricMonomial(5, ())
    assert m.polynomial() == Polynomial.one()

    m = SymmetricMonomial(5, (1, ))
    x = Polynomial.x
    assert m.polynomial() == x(1) + x(2) + x(3) + x(4) + x(5)

    m = SymmetricMonomial(3, (
        2,
        1,
    ))
    x = Polynomial.y
    assert m.polynomial('y') == \
        x(1) * x(2)**2 + x(1)**2 * x(2) + \
        x(1) * x(3)**2 + x(1)**2 * x(3) + \
        x(3) * x(2)**2 + x(3)**2 * x(2)