def _slow_schur_p(cls, num_variables, mu, nu=()): return cls._slow_vectorize( num_variables, Tableau.semistandard_shifted_marked(num_variables, mu, nu, diagonal_primes=False))
def _slow_transposed_dual_stable_grothendieck_q(cls, num_variables, mu, nu=()): p = 0 for tab in Tableau.semistandard_shifted_marked(num_variables, mu, nu): m = 1 for i in range(1, num_variables + 1): r = len({x for x, y, v in tab if v[0] == i}) c = len({y for x, y, v in tab if v[0] == -i}) a = len({(x, y) for x, y, v in tab if abs(v[0]) == i}) x = Polynomial.x(i) m *= x**(r + c) * (x + 1)**(a - r - c) p += m dictionary = {} for e in p: tup = num_variables * [0] for i in e: tup[i - 1] = e[i] dictionary[tuple(tup)] = p[e] return SymmetricPolynomial({ SymmetricMonomial(num_variables, alpha): coeff * (-BETA**-1)**(sum(alpha)) for alpha, coeff in dictionary.items() if Partition.is_partition(alpha) }) * (-BETA)**(sum(mu) - sum(nu))
def test_from_string(m=4): for n in range(m): for mu in Partition.generate(n, strict=True): for t in Tableau.semistandard_shifted_marked(n, mu): u = Tableau(str(t)) if u != t: print(t) print(u) print(t.boxes, u.boxes) print() assert Tableau(str(t)) == t
def test_semistandard_shifted_marked(): mu = () assert Tableau.semistandard_shifted_marked(0, mu) == {Tableau()} assert Tableau.semistandard_shifted_marked(1, mu) == {Tableau()} assert Tableau.semistandard_shifted_marked(2, mu) == {Tableau()} mu = (1, ) assert Tableau.semistandard_shifted_marked(1, mu) == { Tableau({(1, 1): 1}), Tableau({(1, 1): -1}), } assert Tableau.semistandard_shifted_marked(1, mu, diagonal_primes=False) == { Tableau({(1, 1): 1}), } assert Tableau.semistandard_shifted_marked(2, mu) == { Tableau({(1, 1): 1}), Tableau({(1, 1): -1}), Tableau({(1, 1): 2}), Tableau({(1, 1): -2}), } assert Tableau.semistandard_shifted_marked(2, mu, diagonal_primes=False) == { Tableau({(1, 1): 1}), Tableau({(1, 1): 2}), } mu = (3, 1) assert Tableau.semistandard_shifted_marked(1, mu) == set() assert Tableau.semistandard_shifted_marked(1, mu, diagonal_primes=False) == set() assert Tableau.semistandard_shifted_marked(2, mu) == { Tableau({ (1, 1): 1, (2, 2): 2, (1, 2): 1, (1, 3): 1 }), Tableau({ (1, 1): 1, (2, 2): 2, (1, 2): 1, (1, 3): 2 }), Tableau({ (1, 1): 1, (2, 2): 2, (1, 2): 1, (1, 3): -2 }), Tableau({ (1, 1): 1, (2, 2): 2, (1, 2): -2, (1, 3): 2 }), Tableau({ (1, 1): 1, (2, 2): -2, (1, 2): 1, (1, 3): 1 }), Tableau({ (1, 1): 1, (2, 2): -2, (1, 2): 1, (1, 3): 2 }), Tableau({ (1, 1): 1, (2, 2): -2, (1, 2): 1, (1, 3): -2 }), Tableau({ (1, 1): 1, (2, 2): -2, (1, 2): -2, (1, 3): 2 }), Tableau({ (1, 1): -1, (2, 2): 2, (1, 2): 1, (1, 3): 1 }), Tableau({ (1, 1): -1, (2, 2): 2, (1, 2): 1, (1, 3): 2 }), Tableau({ (1, 1): -1, (2, 2): 2, (1, 2): 1, (1, 3): -2 }), Tableau({ (1, 1): -1, (2, 2): 2, (1, 2): -2, (1, 3): 2 }), Tableau({ (1, 1): -1, (2, 2): -2, (1, 2): 1, (1, 3): 1 }), Tableau({ (1, 1): -1, (2, 2): -2, (1, 2): 1, (1, 3): 2 }), Tableau({ (1, 1): -1, (2, 2): -2, (1, 2): 1, (1, 3): -2 }), Tableau({ (1, 1): -1, (2, 2): -2, (1, 2): -2, (1, 3): 2 }), } assert Tableau.semistandard_shifted_marked(2, mu, diagonal_primes=False) == { Tableau({ (1, 1): 1, (2, 2): 2, (1, 2): 1, (1, 3): 1 }), Tableau({ (1, 1): 1, (2, 2): 2, (1, 2): 1, (1, 3): 2 }), Tableau({ (1, 1): 1, (2, 2): 2, (1, 2): 1, (1, 3): -2 }), Tableau({ (1, 1): 1, (2, 2): 2, (1, 2): -2, (1, 3): 2 }), } mu = (3, 2) assert Tableau.semistandard_shifted_marked(1, mu) == set() assert Tableau.semistandard_shifted_marked(1, mu, diagonal_primes=False) == set()
def _slow_schur_q(cls, num_variables, mu, nu=()): return cls._slow_vectorize( num_variables, Tableau.semistandard_shifted_marked(num_variables, mu, nu))