Path: blob/main/GeneratingDiagonalsViaShift/SU_degeneracy.py
1017 views
'''1SU degeneracy projections,2using Proposition 6 of DIAGONALS ON THE PERMUTAHEDRA, MULTIPLIHEDRA AND ASSOCIAHEDRA.3'''4from itertools import combinations56from diagonals_via_shift import SU_diag, LA_diag789def exceptional(A,k):10'''11return: True if the subset A_k is exceptional, False if not12'''13minAk = min(A[k])14maxAk = max(A[k])1516for x in A[k+1:]:17for aij in x:18if minAk < aij and aij < maxAk:19return True2021return False2223def Mult_filter(A):24for j in range(len(A)-1):25minAj = min(A[j])26if (min(A[j]) > min([min(x) for x in A[j+1:]])) and exceptional(A,j):27return False2829return True3031def LA_Mult_diag(n):32valid = []33for p in LA_diag(n):34if Mult_filter(p[0]) and Mult_filter(p[1]):35valid.append(p)3637return valid3839def SU_Mult_diag(n):40valid = []41for p in SU_diag(n):42if Mult_filter(p[0]) and Mult_filter(p[1]):43valid.append(p)4445return valid4647def Assoc_filter(A):48for k in range(len(A)-1):49if exceptional(A,k):50return False5152return True5354def LA_Assoc_diag(n):55valid = []56for p in LA_diag(n):57if Assoc_filter(p[0]) and Assoc_filter(p[1]):58valid.append(p)5960return valid6162def SU_Assoc_diag(n):63valid = []64for p in SU_diag(n):65if Assoc_filter(p[0]) and Assoc_filter(p[1]):66valid.append(p)6768return valid6970def compare_Mult(n):71LA = sorted(LA_Mult_diag(n))72SU = sorted(SU_Mult_diag(n))7374LA_only = []75SU_only = []76shared = []77for x in LA:78if x in SU:79shared.append(x)80else:81LA_only.append(x)82for x in SU:83if x not in LA:84SU_only.append(x)8586return LA, LA_only, shared, SU_only, SU8788def compare_Assoc(n):89LA = sorted(LA_Assoc_diag(n))90SU = sorted(SU_Assoc_diag(n))9192LA_only = []93SU_only = []94shared = []95for x in LA:96if x in SU:97shared.append(x)98else:99LA_only.append(x)100for x in SU:101if x not in LA:102SU_only.append(x)103104return LA, LA_only, shared, SU_only, SU105106107def iso2(p,n):108'''109Applies the iso t(r x r)110'''111def r(op,n):112rev = []113for block in op:114revblock = []115for x in block:116revblock.append(n-x+1)117rev.append(sorted(revblock))118return rev119120def iso1(p):121'''122Applies the iso t(s x s)123'''124return [p[1][::-1],p[0][::-1]]125126if __name__ == '__main__':127128print("\nAssoc")129for n in range(1,6):130print("\nn={}".format(n))131LA, LA_only, shared, SU_only, SU = compare_Assoc(n)132133print("|LA|={}, |LA only|={}, |shared|={}, |SU only|={}, |SU|={}".format(134len(LA), len(LA_only), len(shared), len(SU_only), len(SU)))135136print("\nMult")137for n in range(1,8):138print("\nn={}".format(n))139LA, LA_only, shared, SU_only, SU = compare_Mult(n)140141print("|LA|={}, |LA only|={}, |shared|={}, |SU only|={}, |SU|={}".format(142len(LA), len(LA_only), len(shared), len(SU_only), len(SU)))143144145146