def __init__(self, mu, max_entry, multisetvalued=False, setvalued=True): assert not multisetvalued self.mu = mu self.max_entry = max_entry self.tableaux = list( Tableau.semistandard(max_entry, mu, setvalued=setvalued)) self._edges = None self._components = None self.multisetvalued = multisetvalued
def test_tableaux(): # generate tableaux and reverse plane partitions from tableaux import Tableau mu = (4, 2, 1) a = Tableau.semistandard(3, mu) b = Tableau.semistandard_setvalued(3, mu) c = Tableau.semistandard_shifted(3, mu, diagonal_primes=True) d = Tableau.semistandard_shifted_setvalued(4, mu, diagonal_primes=False) e = Tableau.semistandard_rpp(3, mu) f = Tableau.semistandard_shifted_rpp(3, mu, diagonal_nonprimes=False) # serialize to change a Tableau into a dictionary s = [t.serialize() for t in c]
def test_semistandard(): mu = () assert Tableau.semistandard(0, mu) == {Tableau()} assert Tableau.semistandard(1, mu) == {Tableau()} assert Tableau.semistandard(2, mu) == {Tableau()} mu = (1, ) assert Tableau.semistandard(1, mu) == {Tableau({(1, 1): 1})} assert Tableau.semistandard(2, mu) == { Tableau({(1, 1): 1}), Tableau({(1, 1): 2}), } mu = (1, 1) assert Tableau.semistandard(2, mu) == {Tableau({(1, 1): 1, (2, 1): 2})} mu = (2, ) assert Tableau.semistandard(2, mu) == { Tableau({ (1, 1): 1, (1, 2): 1 }), Tableau({ (1, 1): 1, (1, 2): 2 }), Tableau({ (1, 1): 2, (1, 2): 2 }), } mu = (1, ) assert Tableau.semistandard(3, mu) == { Tableau({(1, 1): 1}), Tableau({(1, 1): 2}), Tableau({(1, 1): 3}), }
def test_skew_semistandard(): mu = () nu = () assert Tableau.semistandard(0, mu, nu) == {Tableau()} assert Tableau.semistandard(1, mu, nu) == {Tableau()} assert Tableau.semistandard(2, mu, nu) == {Tableau()} mu = (1, 1) nu = (1, ) assert Tableau.semistandard( 2, mu, nu) == {Tableau({(2, 1): 1}), Tableau({(2, 1): 2})} mu = (2, ) nu = (1, ) assert Tableau.semistandard(2, mu, nu) == { Tableau({(1, 2): 1}), Tableau({(1, 2): 2}), } mu = (2, 1) nu = (1, ) assert Tableau.semistandard(2, mu, nu) == { Tableau({ (1, 2): 1, (2, 1): 1 }), Tableau({ (1, 2): 1, (2, 1): 2 }), Tableau({ (1, 2): 2, (2, 1): 1 }), Tableau({ (1, 2): 2, (2, 1): 2 }), } mu = (2, 2) nu = (1, ) assert Tableau.semistandard(3, mu, nu) == { Tableau({ (1, 2): 1, (2, 1): 1, (2, 2): 2 }), Tableau({ (1, 2): 1, (2, 1): 2, (2, 2): 2 }), Tableau({ (1, 2): 1, (2, 1): 1, (2, 2): 3 }), Tableau({ (1, 2): 1, (2, 1): 2, (2, 2): 3 }), Tableau({ (1, 2): 1, (2, 1): 3, (2, 2): 3 }), Tableau({ (1, 2): 2, (2, 1): 1, (2, 2): 3 }), Tableau({ (1, 2): 2, (2, 1): 2, (2, 2): 3 }), Tableau({ (1, 2): 2, (2, 1): 3, (2, 2): 3 }), } mu = (2, 2, 1) nu = (1, ) assert Tableau.semistandard(3, mu, nu) == { Tableau({ (1, 2): 1, (2, 1): 1, (2, 2): 2, (3, 1): 3 }), Tableau({ (1, 2): 1, (2, 1): 1, (2, 2): 2, (3, 1): 2 }), Tableau({ (1, 2): 1, (2, 1): 2, (2, 2): 2, (3, 1): 3 }), # Tableau({ (1, 2): 1, (2, 1): 1, (2, 2): 3, (3, 1): 3 }), Tableau({ (1, 2): 1, (2, 1): 1, (2, 2): 3, (3, 1): 2 }), Tableau({ (1, 2): 1, (2, 1): 2, (2, 2): 3, (3, 1): 3 }), # Tableau({ (1, 2): 2, (2, 1): 1, (2, 2): 3, (3, 1): 3 }), Tableau({ (1, 2): 2, (2, 1): 1, (2, 2): 3, (3, 1): 2 }), Tableau({ (1, 2): 2, (2, 1): 2, (2, 2): 3, (3, 1): 3 }), }
def _slow_schur(cls, num_variables, mu, nu=()): return cls._slow_vectorize(num_variables, Tableau.semistandard(num_variables, mu, nu))