import itertools
from sympy import *
from sympy.physics.matrices import msigma
from sympy.physics.quantum import TensorProduct
SU5 = [Matrix([[0,1,0,0,0], [1,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0]]), Matrix([[0,-I,0,0,0], [I,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0]]), Matrix([[1,0,0,0,0], [0,-1,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0]]), Matrix([[0,0,1,0,0], [0,0,0,0,0], [1,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0]]), Matrix([[0,0,-I,0,0], [0,0,0,0,0], [I,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0]]), Matrix([[0,0,0,0,0], [0,0,1,0,0], [0,1,0,0,0], [0,0,0,0,0], [0,0,0,0,0]]), Matrix([[0,0,0,0,0], [0,0,-I,0,0], [0,I,0,0,0], [0,0,0,0,0], [0,0,0,0,0]]), Matrix([[1,0,0,0,0], [0,1,0,0,0], [0,0,-2,0,0], [0,0,0,0,0], [0,0,0,0,0]]), Matrix([[0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,1], [0,0,0,1,0]]), Matrix([[0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,-I], [0,0,0,I,0]]), Matrix([[0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,1,0], [0,0,0,0,-1]]), Matrix([[-2,0,0,0,0], [0,-2,0,0,0], [0,0,-2,0,0], [0,0,0,3,0], [0,0,0,0,3]])/3]
def gamma(i, n = 10):
return TensorProduct(*[msigma(3) for j in range(i // 2)] + [msigma(1) if i % 2 == 0 else msigma(2)] + [eye(2) for j in range(n // 2 - (i // 2 + 1))])
for element in SU5:
SO10 = TensorProduct(Matrix(re(element*I)), eye(2)) + TensorProduct(Matrix(im(element*I)), msigma(3)*msigma(1))
generator = sum([SO10[x,y]*gamma(x)*gamma(y)/4 for x, y in itertools.product(range(10), range(10))], zeros(32))
pprint(generator)