# $3\times 3 = 6 + \bar{3}$ in Mathematica?

Can Mathematica handle this type of algebra, which is used very frequently in e.g. particle/nuclear physics? That is, I want to decompose a product of representations (in $SU(N)$ say) into irreducible ones. How can one do that with Mathematica?

Edit: I came across a website that uses a software called LiE that can decompose a product of irreps into a sum of irreps (which is what I want). I think it should be possible to write or translate what that software has done into Mathematica form/language. For example, in the link above you could try out the direct product $$10\otimes 27$$ in $SU(3)$ (which in the notation of that site is called $A2$) to get the result

$$10\otimes 27 = 1X[5,2] +1X[3,3] +1X[4,1] +1X[1,4] +1X[2,2] +1X[3,0] +1X[0,3] +1X[1,1],$$

which translates to

$$10\otimes 27 = 81 + 64 + 35 + \overline{35} + 27 + 10 + \overline{10} + 8.$$

See also this post in Mathematics stackexchange for a related question and some good insight in the answers.

A very brief introduction is given in the following webpage.

For references one could look up H. Georgi's "Lie Algebras...page 182" or Cheng's "Gauge theory...page 108."

• Please provide additional details or references. Thanks. – bbgodfrey Jan 23 '15 at 23:13
• Can you provide any Internet references for those without that hardcopy? – Mr.Wizard Jan 23 '15 at 23:35
• "Done and done..." – Your Majesty Jan 23 '15 at 23:39
• For such type of applications, one writes a dedicated notebook containing all required functions. I had a lot of fun doing that for the symmetric group Sn (character tables, LR-coefficients and Kostka matrices and such). I was later told that such functions are pre-programmed in Sage. My Mathematica implementation for Sn is at users.telenet.be/Wouter.Meeussen/ToolBox.nb – Wouter Jan 25 '15 at 12:56
• @Wouter thanks for the information, I'll check it out. – Your Majesty Jan 25 '15 at 14:32

The Susyno and LieART Mathematica packages can do this. I know best the first one (I wrote it), so let me use it as an example in this answer.

Assuming that you have installed and loaded the package in a Mathematica session, your example ($\mathbf{10}\times\mathbf{27}$ in $SU(3)$) is computed as follows:

ReduceRepProduct[SU3, {{3, 0}, {2, 2}}]


This follows the generic syntax (which allows more complicated cases)

ReduceRepProduct[<group>, {<rep1>, <rep2>,...}]


The output in your case is

{{{5, 2}, 1}, {{3, 3}, 1}, {{1, 4}, 1}, {{4, 1}, 1}, {{3, 0}, 1}, {{0, 3}, 1}, {{1, 1}, 1}, {{2, 2}, 1}}


which is a list of the form

{..., {< SU(3) representation in the product >, < multiplicity >}, ...}


More information on this or other functions in the package can be found in the help files which you should be able to access from the Mathematica help system itself (once the package is installed of course). In any case, let me say something about the labeling of the representations. The program uses their Dynkin coefficients (as does the LiE program you mentioned). This is true for the output as well as for the input: $\mathbf{10}=\left\{3,0\right\}$ and $\mathbf{27}=\left\{ 2,2\right\}$. To convert the Dynkin coefficients to a more human-friendly notation ($\mathbf{10}$, $\mathbf{27}$, $\overline{\mathbf{3}}$, $\mathbf{15'}$, etc.) you can use the RepName function. In a single step, the code could be

{RepName[SU3, #[]], #[]} & /@ ReduceRepProduct[SU3, {{3, 0}, {2, 2}}]


in which case the output would look as follows:

$\left\{ \left\{ \mathbf{81},1\right\} ,\left\{ \mathbf{64},1\right\} ,\left\{ \overline{\mathbf{35}},1\right\} ,\left\{ \mathbf{35},1\right\} ,\left\{ \mathbf{10},1\right\} ,\left\{ \overline{\mathbf{10}},1\right\} ,\left\{ \mathbf{8},1\right\} ,\left\{ \mathbf{27},1\right\} \right\}$

Of course, the names of representations are partially conventional so, as a general rule, the output of RepName should be interpreted with some care. In the case of $SU(3)$ I think the only important point is that the $\left\{ 0,2\right\}$ representation is considered by this function to have the name $\mathbf{6}$ (not $\overline{\mathbf{6}}$), so for example

{RepName[SU3, #[]], #[]} & /@ ReduceRepProduct[SU3, {{1, 0}, {1, 0}}]


yields

$\left\{ \left\{ \overline{\mathbf{6}},1\right\} ,\left\{ \overline{\mathbf{3}},1\right\} \right\}$

In the package, you can find various other Lie group related functions which can be used, for example, to extract more information on a given representation. Details are explained in the built-in documentation.

A preamble for some context

By multiplying the fundamental representation $F$ of $SU(N)$ with itself $m$ times ($F_{1}\times F_{2}\times F_{3}\cdots\times F_{m}$; subscripts were added just to differentiate the factors) we obtain an $N^m$-dimensional representation of the group, which is reducible. In fact, the irreducible parts can be obtained by (anti)symmetrizing over the $F_i$ representations. For example, in $SU(3)$, $\mathbf{3}\times\mathbf{3}$ is a 9-dimensional representation, which breaks into a symmetric part ($\mathbf{3}_{1}\times\mathbf{3}_{2}+\mathbf{3}_{2}\times\mathbf{3}_{1}$; it is 6-dimensional and it is called by RepName of Susyno the $\overline{\mathbf{6}}$), and an anti-symmetric part ($\mathbf{3}_{1}\times\mathbf{3}_{2}-\mathbf{3}_{2}\times\mathbf{3}_{1}$; the $\overline{\mathbf{3}}$).

By repeated multiplication of the fundamental representation, one can obtain in this way all the irreducible representations of $SU(N)$. Young tableaux are usually associated with the (anti)symmetrization part of this procedure (see for example these notes), which effectively means that an irreducible representation of $SU(N)$ can be labeled also with partitions $\lambda=\left\{ \lambda_{1},\lambda_{2},\cdots,\lambda_{N}\right\}$ with $\lambda_{1}\geq\lambda_{2}\geq\cdots\lambda_{N}\geq0$ of $m=\sum_{i=1}^{N}\lambda_{i}=m$ ($m$ being the number of times the fundamental representation must be multiplied; see above). In the case of $\mathbf{3}\times\mathbf{3}$ in $SU(3)$, we have $m=2$ and the partitions $\lambda=\left\{ 2\right\}$ (which can be seen as $\lambda=\left\{ 2,0\right\}$) and $\left\{1,1\right\}$. The first one is identified with the $\overline{\mathbf{6}}$ (again, in RepName's notation), and the second with the $\overline{\mathbf{3}}$.

Graphically, each $\lambda=\left\{ \lambda_{1},\lambda_{2},\cdots,\lambda_{N}\right\}$ is associated with the Young diagram with $\lambda_1$ boxes in the first row, $\lambda_2$ boxes in the second row, etc.

I'm assuming then you asked for the conversion of the Dynkin coefficients notation $\Lambda=\left\{ \Lambda_{1},\Lambda_{2},...,\Lambda_{N}\right\}$ to the partition notation $\lambda=\left\{ \lambda_{1},\lambda_{2},\cdots,\lambda_{N}\right\}$. It is quite easy: $\Lambda_i$ is the number of columns in the Young diagram with $i$ boxes, so $\Lambda_i=\lambda_i-\lambda_{i+1}$. Then, a possible way to write a function to make this conversion would be

ConvertToPartitionNotation[repr_] := Reverse[Accumulate[Reverse[repr]]]


where repr should be the Dynkin coefficients of the representation (which is what the functions of Susyno output). For example,

DimR[SU3, {1,1}] (* To make sure that {1,1} is the octet; or just use RepName[SU3,{1,1}]  *)
ConvertToPartitionNotation[{1, 1}]


yields

8
{2,1}


Susyno can deal with any simple Lie algebra but, just to be clear, all the discussion above about partitions is valid only for the representations of $SU(N)$ groups.

• That's just awesome! One follow up question I got is: do you know if it is possible to write the representations in tensor form? This should also be programmable. – Your Majesty Mar 5 '15 at 23:43
• I have added to my original post some new text concerning your follow-up question. But I am not completely sure I understood it, so if the newer text does not address your question, please let me know. – RMSF Mar 6 '15 at 14:38
• Thanks @RMSF Sorry for being a bit unclear (I was typing on a phone). I have posted my follow-up question in a new question: please see mathematica.stackexchange.com/q/76626/10325. Could you have a look at it please? – Your Majesty Mar 6 '15 at 15:40

For completeness, here is a way with the LieART package. (By the way, I usually write $DefaultOutputForm=StandardForm; before loading the package, as it otherwise messes up with my preferred output form.) << LieART Irrep[SU] Irrep[SU]  This gives the (TraditionalForm) output$\boldsymbol{8+10+\overline{10}+27+35+\overline{35}+64+81}\$.

The second part of your question, in a comment, was how to express each of these representations in "tensor form". I was hoping to do that with xActxTensor but did not succeed.