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
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
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
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)