$\mathrm{SU}(3)_3$ subcategory

This rank-four category is the neutral simple-current sector commonly denoted $\mathrm{SU}(3)_3/\mathbb Z_3$. It is one of the smallest braided examples with a two-dimensional fusion space. It is braided but degenerate, so it is not the full modular $\mathrm{SU}(3)_3$ category Ardonne and Slingerland (2010), Appendix B.3, pp. 35–36.

TensorCategories.su_3_3_subcategory(K) is loaded but not exported. The default field is $\mathbb Q(\zeta_{12})$. Labels are $(\mathbb 1,8,10,\overline{10})$, with $8^2=\mathbb 1+2\cdot8+10+\overline{10}$. It supplies associators and braiding, including a $7\times7$ associator block. The coefficient field must contain a square root of $3$ and a primitive fourth root of unity; in particular, these formulas do not apply in characteristics $2$ or $3$. The constructor retains all-one pivotal components, which pass the exact pivotal check over the default field. The precise source is Ardonne and Slingerland (2010), Appendix B.3, pp. 35–36, Eqs. (82)–(92). The $7\times7$ array is the displayed matrix (87), whose rows use the left intermediate channel. The associator matrices are real and orthogonal; the conventions section explains why the paper's projection convention and the package's splitting convention give the same arrays in this gauge. The label order and every $F$-block agree without another gauge change.

The complex embedding needs separate attention. Write $\iota$ for the element returned by TensorCategories.root_of_unity(K,4); this routine chooses a primitive root, not a distinguished positive-imaginary complex root. For $8\otimes8\to8$, the code stores $\operatorname{diag}(\iota,-\iota)$, while Ardonne and Slingerland (2010), Eq. (89) print $\operatorname{diag}(-i,i)$ at $q=\exp(2\pi i/6)$. With $\iota\mapsto i$, the two braiding matrices are inverses. With $\iota\mapsto-i$ and the chosen square root of $3$ mapping to $+\sqrt3$, they agree. The default constructor does not install a complex embedding. Consequently, the bare number-field data do not fix one of these complex realizations.

For the default field, this translation is the exact automorphism $\zeta_{12}\mapsto\zeta_{12}^{-1}$. It fixes every associator coefficient and reverses the two nonreal braiding eigenvalues. No change of $F$-symbol gauge is required:

using TensorCategories, Oscar
C = TensorCategories.su_3_3_subcategory()
K = base_ring(C)
σ = hom(K,K,inv(gen(K)))
@assert !isdefined(C,:embedding)
@assert all(σ(x)==x for A in C.ass for x in A)
B = C.braiding[2,2,2]
@assert σ(B[1,1]) == -B[1,1]
@assert σ(B[2,2]) == -B[2,2]

To compare with the paper over the algebraic complex numbers, choose the embedding explicitly:

Kbar = QQBarField()
zpaper = (sqrt(Kbar(3))-sqrt(Kbar(-1)))/2
e = complex_embedding(K,AcbField()(zpaper))
Cpaper = complex_embedding(C,e)
@assert Cpaper.ass[2,2,2,2][1,2] == inv(sqrt(Kbar(3)))
@assert Cpaper.braiding[2,2,2] ==
        matrix(Kbar,[-sqrt(Kbar(-1)) 0; 0 sqrt(Kbar(-1))])

The all-one pivotal components are a package choice that passes the exact pivotal check; Appendix B.3 does not identify that pivotal gauge. The multiplicity-two fusion space is illustrated in the worked examples.