"""Check of the supercharges of d:grass-supercharge and l:grass-supercharge (Section 3) for n = 1: q_+^2 = q_-^2 = 0, q^2 = q_+ q_- + q_- q_+ is the rotation generator, q' Pi = 0 for q' = q, q_+, q_-, q sigma = q_- sigma = q_+ sigma_+ = zeta^* zeta + chi^* chi. Generators: 1 = chi, 2 = chibar; zeta and zetabar are independent symbols (Wirtinger calculus).""" import sys, os; sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) import sympy as sp from grassmann import G z, zb = sp.symbols('z zb') chi, chib = G.gen(1), G.gen(2) F = G({(): sp.Function('f0')(z, zb), (1,): sp.Function('f1')(z, zb), (2,): sp.Function('f2')(z, zb), (1, 2): sp.Function('f12')(z, zb)}) def d(F, v): return F.apply(lambda e: sp.diff(e, v)) def qp(F): return chi * d(F, z) - G.const(zb) * F.dxi(2) def qm(F): return chib * d(F, zb) + G.const(z) * F.dxi(1) def q(F): return qp(F) + qm(F) def rot(F): # z d_z + chi d_chi - zb d_zb - chib d_chib return G.const(z) * d(F, z) + chi * F.dxi(1) - G.const(zb) * d(F, zb) - chib * F.dxi(2) zero = lambda X: all(sp.simplify(v) == 0 for v in X.d.values()) print("q+^2 = 0:", zero(qp(qp(F))), " q-^2 = 0:", zero(qm(qm(F)))) print("q^2 = rotation:", zero(q(q(F)) - rot(F)), " q^2 = q+q- + q-q+:", zero(q(q(F)) - qp(qm(F)) - qm(qp(F)))) Pi = G.const(zb * z) + chib * chi print("q Pi = q+ Pi = q- Pi = 0:", zero(q(Pi)), zero(qp(Pi)), zero(qm(Pi))) S = Pi sigma = G.const(zb) * chi sigmap = -(chib * G.const(z)) print("q sigma = S:", zero(q(sigma) - S), " q- sigma = S:", zero(qm(sigma) - S), " q+ sigma_+ = S:", zero(qp(sigmap) - S))