Characters
The character of an irrep is the trace of its representation matrix, $\chi_\lambda(U) = \operatorname{tr}\rho_\lambda(U)$. Because the trace is unchanged by conjugation ($\chi(U)=\chi(V^\dagger U V)$ for unitary $V$), $\chi_\lambda$ depends on U only through its eigenvalues (it is a class function). character(λ, U) computes it by summing the diagonal group functions over the GT basis (see group functions).
julia> using GroupFunctionsjulia> λ = [2, 1, 0];julia> U = su2_block(3, 1, (0.0, pi/3, 0.0));julia> character(λ, U)6.464101615137754 + 0.0im
Orthogonality
Characters of distinct irreps are orthonormal under the Haar measure on U(d):
\[\langle \chi_\lambda, \chi_\mu \rangle = \int_{U(d)} \overline{\chi_\lambda(U)}\,\chi_\mu(U)\,dU = \delta_{\lambda\mu}.\]
In particular, for a single irrep $\langle |\chi_\lambda|^2 \rangle = 1$. This is a statement about averages, and we can exemplified it by sampling.
Here we draw Haar-random U(3) matrices with a QR-based sampler and average $|\chi_\lambda|^2$. The average approaches 1; the estimator is noisy, so a small sample scatters by several percent, use roughly $2 \times 10^4$ samples or more:
julia> using GroupFunctionsjulia> using LinearAlgebra: Diagonal, diag, qrjulia> using Random: randn, seed!julia> using Statistics: meanjulia> # Alternative with RandomMatrices.jl: # using RandomMatrices: Haar # rand(Haar(2), d) function haar_unitary(d) z = randn(ComplexF64, d, d) F = qr(z) phases = diag(F.R) ./ abs.(diag(F.R)) Matrix(F.Q) * Diagonal(phases) endhaar_unitary (generic function with 1 method)julia> λ = [2, 1, 0];julia> nsamples = 20000;julia> seed!(420);julia> values = [character(λ, haar_unitary(3)) for _ in 1:nsamples];julia> mean(abs2, values)1.0020718103090207
The Weyl character formula
Computing $\chi_\lambda(U)$ does not require building $\rho_\lambda(U)$ (a matrix of size $\dim V_\lambda$) and tracing it. The Weyl character formula recovers the same trace from $\lambda$ and the eigenvalues $x_1,\dots,x_d$ of U alone, as a ratio of two $d\times d$ determinants. The denominator depends only on $d$:
\[\det\begin{pmatrix} x_1^{d-1} & x_1^{d-2} & \cdots & 1 \\ x_2^{d-1} & x_2^{d-2} & \cdots & 1 \\ \vdots & \vdots & & \vdots \\ x_d^{d-1} & x_d^{d-2} & \cdots & 1 \end{pmatrix} = \prod_{i<j}(x_i - x_j),\]
the Vandermonde determinant. The numerator is the same matrix with the partition added into the exponents, so the $(i,j)$-entry is $x_i^{\lambda_j + d - j}$:
\[\det\begin{pmatrix} x_1^{\lambda_1+d-1} & x_1^{\lambda_2+d-2} & \cdots & x_1^{\lambda_d} \\ x_2^{\lambda_1+d-1} & x_2^{\lambda_2+d-2} & \cdots & x_2^{\lambda_d} \\ \vdots & \vdots & & \vdots \\ x_d^{\lambda_1+d-1} & x_d^{\lambda_2+d-2} & \cdots & x_d^{\lambda_d} \end{pmatrix}.\]
Their ratio is the Schur polynomial $s_\lambda$:
\[\chi_\lambda(U) = s_\lambda(x_1,\dots,x_d) = \frac{\det\!\left(x_i^{\,\lambda_j+d-j}\right)}{\det\!\left(x_i^{\,d-j}\right)}.\]
For $d=2$, $\lambda=(1,0)$, the top exponents are $(2,0)$ and the ratio is $\frac{x_1^2 - x_2^2}{x_1 - x_2} = x_1 + x_2$. The size of the irrep never enters — two $d\times d$ determinants regardless of $\dim V_\lambda$.
This is what schur_polynomial computes; character(λ, U) instead builds and traces the representation, so prefer schur_polynomial when only the character is needed.
julia> using GroupFunctionsjulia> schur_polynomial([2, 1, 0])x_1*x_2^2 + x_1*x_3^2 + x_1^2*x_2 + x_1^2*x_3 + x_3*x_2^2 + x_3^2*x_2 + 2*x_1*x_3*x_2