# Sizes of standard Levi root subsystems Phi_I of E6 (|I| <= 5) and rank<=3 subsystem bound check.
from itertools import combinations
n=6; edges=[(0,2),(2,3),(3,4),(4,5),(1,3)]
A=[[2 if i==j else 0 for j in range(n)] for i in range(n)]
for i,j in edges: A[i][j]=A[j][i]=-1
def refl(i,v):
    v=list(v); k=sum(v[j]*A[j][i] for j in range(n)); v[i]-=k; return tuple(v)
simple=[tuple(1 if j==i else 0 for j in range(n)) for i in range(n)]
roots=set(simple); ch=True
while ch:
    ch=False
    for r in list(roots):
        for i in range(n):
            s=refl(i,r)
            if s not in roots: roots.add(s); ch=True
assert len(roots)==72
sizes={}
for k in range(0,6):
    for I in combinations(range(n),k):
        cnt=sum(1 for r in roots if all(r[j]==0 for j in range(n) if j not in I))
        sizes.setdefault(k,set()).add(cnt)
for k in sorted(sizes): print("rank",k,"standard Levi subsystem sizes:",sorted(sizes[k]))
# rank-4 Levi subsystems with 24 roots
for I in combinations(range(n),4):
    cnt=sum(1 for r in roots if all(r[j]==0 for j in range(n) if j not in I))
    if cnt==24: print("24-root rank-4 Levi:", [i+1 for i in I])
