def test_reverse_insertion_complete(): n = 8 count = 200 for w in Permutation.symplectic_hecke_words(n): count -= 1 if count == 0: break print(w) p, q = FState.insertion_tableaux(*w) print() print(p) print() print(q) v = FState.inverse_insertion(p, q) print() print(v) print() assert v == w
def test_reverse_insertion(): w = (2, 1, 4, 1, 4, 3, 4, 1, 2) p, q = FState.insertion_tableaux(*w) r = (2, 3, {-9}) assert q.values() == {1, -2, 3, -4, 5, 6, 7, -8, -9} assert p == Tableau({ (1, 1): 2, (1, 2): 3, (1, 3): 4, (2, 2): 4, (2, 3): 5 }) s, box = FState(p).previous(r) assert box == (2, 3) assert s.tableau == Tableau({ (1, 1): 2, (1, 2): 3, (1, 3): 4, (2, 2): 4, (4, 3): 5 }) assert s.outer == (4, 3) s, box = s.previous() assert box == (2, 2) assert s.tableau == Tableau({ (1, 1): 2, (1, 2): 3, (1, 3): 4, (2, 2): 4, (2, 5): 3 }) assert s.outer == (2, 5) s, box = s.previous() assert box == (1, 2) assert s.tableau == Tableau({ (1, 1): 2, (1, 2): 3, (1, 3): 4, (2, 2): 4, (1, 5): 2 }) assert s.outer == (1, 5) assert s.is_initial() assert FState.inverse_insertion(p, q) == w # # 22 # 6 8 22 # 2 4 6 20 # w = (2, 6, 8, 22, 4, 6, 20, 6) p, q = FState.insertion_tableaux(*w) assert p == Tableau({ (3, 3): 22, (2, 2): 6, (2, 3): 8, (2, 4): 22, (1, 1): 2, (1, 2): 4, (1, 3): 6, (1, 4): 20 }) assert FState.inverse_insertion(p, q) == w