def __contains__(self, x): """ Return ``True`` if ``t`` can be interpreted as a :class:`SemistandardSuperTableau`. TESTS:: sage: from sage.combinat.shifted_primed_tableau import PrimedEntry sage: T = sage.combinat.super_tableau.SemistandardSuperTableaux_all() sage: [[1,2],[2]] in T True sage: [[PrimedEntry('1p'),PrimedEntry(2)],[PrimedEntry(2)]] in T True sage: [] in T True sage: Tableau([[1]]) in T True sage: StandardSuperTableau([[1]]) in T Traceback (most recent call last): ... ValueError: the entries in a standard tableau must be in bijection with 1',1,2',2,...,n sage: [[1,2],[1]] in T False sage: [[1,1],[5]] in T True sage: [[1,3,2]] in T False """ if isinstance(x, SemistandardSuperTableau): return True elif Tableaux.__contains__(self, x): x = SemistandardSuperTableau._preprocess(x) for row in x: if any(row[c] > row[c+1] for c in range(len(row)-1)): return False if not all(row[c] < row[c+1] for c in range(len(row)-1) if (row[c].is_primed() or row[c+1].is_primed())): return False for row, next in zip(x, x[1:]): if any(row[c] > next[c] for c in range(len(next))): return False if not all(row[c] < next[c] for c in range(len(next)) if (row[c].is_unprimed() or next[c].is_unprimed())): return False return True else: return False
def __contains__(self, x): """ Return ``True`` if ``t`` can be interpreted as a :class:`StandardSuperTableau`. TESTS:: sage: from sage.combinat.shifted_primed_tableau import PrimedEntry sage: T = sage.combinat.super_tableau.StandardSuperTableaux_all() sage: [[0.5,1],[1.5]] in T True sage: [[PrimedEntry('1p'),PrimedEntry('2p')],[PrimedEntry(1)]] in T True sage: [] in T True sage: Tableau([['1p']]) in T True sage: StandardSuperTableau([['1p']]) in T True sage: [[1,2],[1]] in T False sage: [[1,1],[5]] in T False sage: [[1,3,2]] in T False """ if isinstance(x, StandardSuperTableau): return True elif Tableaux.__contains__(self, x): x = SemistandardSuperTableau._preprocess(x) flattened_list = [i for row in x for i in row] a = PrimedEntry('1p') primed_list = [] for i in range(len(flattened_list)): primed_list.append(a) a = a.increase_half() # return True return sorted(flattened_list) == primed_list and (x or (all(row[i]<row[i+1] for row in x for i in range(len(row)-1)) and all(x[r][c]<x[r+1][c] for r in range(len(x)-1) for c in range(len(x[r+1]))) )) else: return False