def test_generate(): assert set(Permutation.fpf_involutions(2)) == {Permutation(2, 1)} assert set(Permutation.fpf_involutions(3)) == set() assert set(Permutation.fpf_involutions(4)) == { Permutation(2, 1, 4, 3), Permutation(3, 4, 1, 2), Permutation(4, 3, 2, 1), }
def test_involutions(): assert set(Permutation.involutions(1)) == {Permutation()} assert set(Permutation.involutions(1, True)) == {Permutation(), Permutation(-1)} assert set(Permutation.involutions(2)) == {Permutation(), Permutation(2, 1)} assert set(Permutation.involutions(2, True)) == { Permutation(), Permutation(-1), Permutation(2, 1), Permutation(-2, -1), Permutation(-1, -2), Permutation(1, -2) } n = 6 assert set(Permutation.involutions(n)) == { w for w in Permutation.all(n) if w.inverse() == w } assert set(Permutation.involutions(n, True)) == { w for w in Permutation.all(n, True) if w.inverse() == w } assert len(set(Permutation.involutions(n))) == len(list(Permutation.involutions(n))) assert set(Permutation.fpf_involutions(4)) == { Permutation(2, 1, 4, 3), Permutation(3, 4, 1, 2), Permutation(4, 3, 2, 1), }
def test_get_molecules_n(n=8): ans = {} fpf = set(Permutation.fpf_involutions(n)) bns = get_molecules_n(n) for mu in bns: molecule = molecule_n(mu) fpf -= molecule ans[mu] = molecule assert len(fpf) == 0 assert all(ans[mu] == bns[mu] for mu in bns)
def test_bidirected_edges_m(n=8): for w in Permutation.fpf_involutions(n): p, _ = rsk(w) for y, i in set(bidirected_edges_m(w)): print(w, '<--', i, '-->', y) q, _ = rsk(y) print(p) print(q) print() assert q == dual_equivalence(p, i)
def test_fpf_atoms(): y = Permutation(4, 3, 2, 1) s = Permutation.s_i(1) t = Permutation.s_i(2) u = Permutation.s_i(3) assert set(y.get_fpf_atoms()) == {t * s, t * u} n = 6 for w in Permutation.fpf_involutions(n): atoms = set() for word in w.get_fpf_involution_words(): atoms.add(Permutation.from_word(word)) assert atoms == set(w.get_fpf_atoms())
def test_get_molecules_m(n=8): ans = {} inv = set(Permutation.fpf_involutions(n)) while inv: w = inv.pop() mu = rsk(w)[0].shape() molecule = molecule_m(mu) inv -= molecule assert mu not in ans ans[mu] = molecule bns = get_molecules_m(n) assert all(ans[mu] == bns[mu] for mu in bns) assert all(representative_m(mu) in bns[mu] for mu in bns)
def get_molecules_m(n, verbose=False): ans = {} nn = double_fac(n - 1) for i, w in enumerate(Permutation.fpf_involutions(n)): mu = rsk(w)[0].shape() if mu not in ans: ans[mu] = set() ans[mu].add(w) if verbose: a = nn - i if a % 100 == 0: print(a) return ans
def test_six(): _test(Permutation.fpf_involutions(6), 6)
def test_four(): _test(Permutation.fpf_involutions(4), 8)
def test_three(): _test(Permutation.fpf_involutions(3), 10)
def test_two(): _test(Permutation.fpf_involutions(2), 8)
def test_one(): _test(Permutation.fpf_involutions(1), 12)