import sys, os; sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
# Prove im r = K := {g : g(y1) = g(sigma y1)} symbolically in t = q^{1/2}:
# odd parts of r(m_{w1+w3}) and r(m_{3 w1}) give M11 - x1 and P - p1 in I, where R = S^sigma + I (M30 - M03).
from c4_cyclic import *
def show(x): return {k: dict(sorted(v.items())) for k, v in sorted(x.items())}
w13 = fw((1,0,1,0,0,0)); w1x3 = fw((3,0,0,0,0,0)); w56 = fw((0,0,0,0,1,1))
Ra = r_of(w13); Rb = r_of(w1x3); Rc = r_of(w56)
print('r(m_{w1+w3}) =', show(Ra))
print('r(m_{w5+w6}) =', show(Rc))
print('r(m_{3w1}) =', show(Rb))
M11 = {(1,1): {0: 1}}; M30 = {(3,0): {0: 1}}; M03 = {(0,3): {0: 1}}; one = {(0,0): {0: 1}}
D = sadd(M30, M03, -1)                       # M30 - M03
print('M11*(M30-M03) =', show(smul(M11, D)))
print('M11*M30 =', show(smul(M11, M30)))
def odd(x):
    r = {}
    for k, v in x.items():
        r = sadd(r, {k: v}); r = sadd(r, {(k[1], k[0]): v}, -1)
    return r                                  # = 2 * odd part
print('2*odd(r(m_{w1+w3})) =', show(odd(Ra)))
print('2*odd(r(m_{3w1})) =', show(odd(Rb)))
