import sys, os; sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
# W_X in K: for i in {1,6}, beta = w_L alpha_i = -theta alpha_i. Check: alpha_i ⊥ beta, alpha_i ± beta not roots,
# and s_{alpha_i} s_beta acts on Lambda_S as the restricted reflection s_{gamma_i}: (a,b) -> (-a,a+b) resp. (a+b,-b).
from e6core import *
def refl_root(r, v):  # reflection in root r (simply laced, r^vee = r) applied to coroot-coordinate vector v
    c = ip(r, v); return tuple(v[k] - c*r[k] for k in range(n))
for i, expect in ((0, lambda a, b: (-a, a+b)), (5, lambda a, b: (a+b, -b))):
    a = E[i]; beta = wL(a)
    s = tuple(a[k]+beta[k] for k in range(n)); d = tuple(a[k]-beta[k] for k in range(n))
    print('node', i+1, ': beta =', beta, ' (a,beta) =', ip(a, beta), ' a+beta root?', s in Phi, ' a-beta root?', d in Phi)
    ok = True
    for mu in [E[0], E[5], (2,0,1,1,1,1), (1,0,1,1,1,2), (3,1,4,5,2,1)]:
        v = refl_root(a, refl_root(beta, mu))
        ok &= ab(v) == expect(*ab(mu))
    print('   s_alpha s_beta acts on labels as s_gamma:', ok)
