import sys; sys.path.insert(0,'.')
from fibres import *
def lams(maxa):
    out=[]
    for a1 in range(maxa+1):
        for b1 in range(a1+1):
            for a2 in range(maxa+1):
                for b2 in range(a2+1):
                    out.append(((a1,b1),(a2,b2)))
    return out
def nus(maxd, maxe):
    return [(d1,d2,e) for d1 in range(maxd+1) for d2 in range(maxd+1) for e in range(maxe+1) if (e-(d1-d2))%2==0]
viol=[]; rel={}
L=lams(int(sys.argv[1])); V=nus(int(sys.argv[2]), int(sys.argv[3]))
for lam in L:
    for nu in V:
        p=N(lam,nu)
        if not p: continue
        r = 2*deg(p) - two_rho(lam) + delta(nu)
        if r>0: viol.append((lam,nu,pstr(p),r))
        if r==0: rel.setdefault(nu,[]).append((lam,lead(p)))
print("violations of semismallness:", len(viol))
for v in viol[:20]: print(v)
covered=set(phi(l) for l in L)
print("relevant pairs at uncovered labels:")
for nu in V:
    if nu in covered: continue
    print(nu, rel.get(nu, "NONE")[:6])
