# UnitaryTrace

### Description

•  UnitaryTrace calculates the trace of SU(N) matrices in expressions.
• By default UnitaryTrace uses notation T_A for SU(N) matrices, f_ABC for SU(N) structural constants, d_ABC for $d$-constatnts and N for dimension.
• UnitaryTrace[[Matrix: T, f: f, d: d, N:n]] specifies the notation for SU(N) matrices, structural constants, $d$-constants and dimension .

### Examples

Calculate different traces:

//set up matrices
defineMatrices 'T_A', Matrix2.matrix
//structure constants are antisymmetric
setAntiSymmetric 'f_ABC'
//d-constants are symmetric
setSymmetric 'd_ABC'
println UnitaryTrace >> 'Tr[T_A*T_B]'.t

   > (1/2)*g_AB

UnitaryTrace >> 'Tr[T_A*T_B*T_C]'.t

   > (1/4*I)*f_{CAB}+(1/4)*d_{CAB}'

UnitaryTrace >> 'Tr[T_A*T^A + 1]'.t

   > N-1/2+(1/2)*N**2

UnitaryTrace >> 'Tr[T_A*T_B*T_C*T^A]'.t

   > (-(1/4)*N**(-1)+(1/4)*N)*g_{BC}


Use another notation for SU(N) objects:

//set up matrices
defineMatrices 'm_a', Matrix4.matrix
//structure constants are antisymmetric
setAntiSymmetric 'a_abc'
//d-constants are symmetric
setSymmetric 's_abc'
def uTrace = UnitaryTrace[[Matrix: 'm_a', f: 'a_abc', d: 's_abc', N: 'n']]
println uTrace >> 'Tr[m^a*m_b*m^c*(p^b*m_a + p_a*m^b)*m_n]'.t

   > (-1/4*I)*n**(-1)*a_{n}^{ac}*p_{a}-(1/4)*n**(-1)*p_{a}*s_{n}^{ac}