QS = RQ Is All You Need
...to understand the vast majority of representation theory
APS March Meeting 2026 — GDS Short Course on Data Science for Physicists II
Tess Smidt — MIT
Outline
- Crash Course — Groups, representations, and irreps
- Act 1 — The similarity transform \(QS = RQ\) and how to solve it
- Act 2 — Finding all irreps & decomposing vibrational modes
- Interlude — Direct sum, tensor product, change of basis
- Act 3 — Continuous groups, SO(3), spherical harmonics, CG coefficients
- Act 4 — Equivariant machine learning
- Act 5 — The unifying picture
Crash Course
Groups, Representations, and Irreps
What is a Group?
A group is a set of elements with a multiplication satisfying four rules:
- Closure — combining two elements gives another element
- Associativity — \((ab)c = a(bc)\)
- Identity — there exists an element \(E\) such that \(Eg = gE = g\)
- Inverses — every element \(g\) has an inverse \(g^{-1}\)
\(P(3) \cong S_3 \cong D_3\): the 6 symmetries of an equilateral triangle (and the permutations of 3 objects) — identity, 3 mirrors, 2 rotations.
\(P(3)\): Multiplication Table
What is a Representation?
A representation maps each group element to a matrix such that matrix multiplication mirrors group multiplication:
\[ D(g_1) \, D(g_2) = D(g_1 g_2) \]
- The same group can have many representations — different matrices on different vector spaces
- Representations are not unique: if \(U\) is invertible, \(U D(g) U^{-1}\) is also a valid representation (change of basis)
Representations of \(P(3)\)
Each element as a 3×3 permutation matrix (acting on 3 objects) or a 2×2 rotation/reflection matrix (acting on the plane):
Irreducible Representations (Irreps)
Reducible: a change of basis makes all matrices block diagonal simultaneously.
Irreducible (irrep): no such basis exists — cannot be decomposed further. Like prime factors for integers.
\(P(3)\) has exactly three irreps: \(\Gamma_1\) (dim 1), \(\Gamma_1'\) (dim 1), \(\Gamma_2\) (dim 2). Note: \(1^2 + 1^2 + 2^2 = 6 = |P(3)|\).
The Central Question
Given a representation, how do we find the irreps inside it?
And how do we find all irreps of a group in the first place?
The answer: solve a similarity transform equation —
\[ S(g) \cdot Q = Q \cdot R(g) \]
— and look at the nullspace.
If you know linear algebra, you already know representation theory.
Act 1
The Similarity Transform
The Equation: \(S(g) \cdot Q = Q \cdot R(g)\)
Given two representations \(S(g)\) and \(R(g)\) of the same group, find all matrices \(Q\) satisfying:
\[ S(g) \cdot Q = Q \cdot R(g) \quad \text{for all } g \in G \]
- This is a similarity transform — a change of basis between \(S\) and \(R\)
- Each group element gives a linear constraint: \(S(g) Q - Q R(g) = 0\)
- The matrix \(Q\) is called an intertwiner in representation theory — but the equation is pure linear algebra
The Kronecker Product Trick
The problem: \(Q\) appears on both sides of \(SQ - QR = 0\), multiplied by different matrices. This isn't a standard \(Ax = b\) problem.
Write the \((i,k)\) component in index notation:
\[ \sum_j S_{ij} Q_{jk} - \sum_\ell Q_{i\ell} R_{\ell k} = 0 \]
The two terms sum over different indices of \(Q\): the first over \(j\) (row), the second over \(\ell\) (column).
Goal: rewrite both terms as sums over the same pair of indices \((j, \ell)\), so we can factor out \(Q_{j\ell}\).
Inserting Kronecker Deltas (1/2)
\(\delta_{ab} = 1\) if \(a = b\), \(0\) otherwise. Use it to make both terms sum over \((j, \ell)\):
\[ \sum_j S_{ij} Q_{jk} = \sum_{j,\ell} S_{ij} \, \delta_{k\ell} \, Q_{j\ell} \]
\(\delta_{k\ell}\) forces \(\ell = k\), recovering the original.
\[ \sum_\ell Q_{i\ell} R_{\ell k} = \sum_{j,\ell} \delta_{ij} \, R_{\ell k} \, Q_{j\ell} \]
\(\delta_{ij}\) forces \(j = i\). Scalars commute, so we moved \(Q_{j\ell}\) to the end.
Inserting Kronecker Deltas (2/2)
Now both terms sum over \((j, \ell)\). Combine and factor out \(Q_{j\ell}\):
\[ \sum_{j,\ell} \Big(\underbrace{S_{ij} \, \delta_{k\ell}}_{(S \overset{\text{kr}}{\otimes} I)_{ik,j\ell}} \;-\; \underbrace{\delta_{ij} \, R_{\ell k}}_{(I \overset{\text{kr}}{\otimes} R^T)_{ik,j\ell}}\Big) \, Q_{j\ell} = 0 \]
The 4-index object \(P_{ik,j\ell}\) acts on the 2-index object \(Q_{j\ell}\).
Flatten \((i,k) \to\) row, \((j,\ell) \to\) column — this becomes:
\[ \underbrace{\Big(S \overset{\text{kr}}{\otimes} I - I \overset{\text{kr}}{\otimes} R^T\Big)}_{P(g)} \;\text{vec}(Q) = 0 \]
The Nullspace Problem
For all group elements simultaneously, stack the constraints:
\[ P_\text{all} = \begin{pmatrix} P(g_1) \\ P(g_2) \\ \vdots \end{pmatrix} \qquad \Longrightarrow \qquad \text{solutions} = \ker(P_\text{all}) \]
The complete algorithm:
- For each \(g\), build \(P(g) = S(g) \overset{\text{kr}}{\otimes} I - I \overset{\text{kr}}{\otimes} R(g)^T\)
- Stack into \(P_\text{all}\)
- Find \(\ker(P_\text{all})\) via SVD
- Reshape each nullspace vector into a matrix \(Q\)
Index Manipulation Walkthrough
What the Solution Space Tells You
The dimension of \(\ker(P_\text{all})\) — the number of independent \(Q\) matrices — is extraordinarily informative:
| \(\dim \ker\) | Condition | Meaning |
| \(0\) | \(S \neq R\) | \(S\) and \(R\) are inequivalent |
| \(1\) | \(S = R\) | \(S\) is irreducible (Schur's lemma!) |
| \(> 1\) | \(S = R\) | \(S\) is reducible — eigenspaces of \(Q\) are the irrep subspaces |
| \(\geq 1\) | \(S \neq R\) | \(Q\) is a change of basis: CG coefficients, equivariant map, ... |
Schur's Lemma
If \(S\) and \(R\) are both
irreducible, then either:
- \(Q = 0\) — the irreps are inequivalent
- \(Q \propto I\) — the irreps are equivalent (same irrep, different basis)
This is a consequence of the similarity transform equation — the nullspace is at most 1-dimensional when both sides are irreducible.
For equivariant ML: a linear map \(W\) between inequivalent irreps must be zero; between equivalent irreps it must be a scalar times the identity. This is the origin of the dramatic parameter reduction in equivariant networks.
Act 2
Irreps from Scratch
The Regular Representation
Built directly from the multiplication table:
- Each group element becomes a basis vector: \(\{|E\rangle, |A\rangle, \ldots\}\)
- \(D^{\text{reg}}(g)|h\rangle = |gh\rangle\) — permutation matrices of size \(|G| \times |G|\)
- Contains every irrep, each appearing \(\ell_j\) times: \(\; D^{\text{reg}} \cong \bigoplus_j \ell_j \, \Gamma_j\)
Regular Representation of \(P(3)\)
Each row of the multiplication table encodes a \(6 \times 6\) permutation matrix:
Extracting Irreps via \(QS = RQ\)
The decomposition algorithm:
1. Self-similarity: Set \(S = R = D_{\text{reg}}\) and solve for all \(Q\) such that \(D_\text{reg}(g) Q = Q D_\text{reg}(g)\) for all \(g\).
2. Random combination: The solution space (the commutant) has dimension \(\sum_j \ell_j^2\). Take a random linear combination to get a single \(Q_\text{rand}\).
3. Eigendecompose: The eigenspaces of \(Q_\text{rand}\) are (generically) the irreducible subspaces! Each distinct eigenvalue corresponds to one copy of one irrep.
4. Project: Extract the irrep matrices by projecting \(D_\text{reg}\) onto each eigenspace.
We put in only the multiplication table. We got out all irreducible representations.
Molecular Vibrations — Water
The same equation decomposes vibrational modes. For water (\(C_{2v}\), \(N = 3\)):
Step 1: Build the displacement representation. Each symmetry operation permutes atoms (\(D_\text{perm}\), \(3 \times 3\)) and rotates coordinates (\(D_\text{vec}\), \(3 \times 3\)). The tensor product gives \(9 \times 9\) matrices:
\[ D_\text{disp}(g) = D_\text{perm}(g) \otimes D_\text{vec}(g) \]
Constructing the Permutation Representation
The Tensor Product: \(D_\text{perm} \otimes D_\text{vec}\)
Project and Decompose
Step 2: Project out translations & rotations. Build vibrational projector \(P^\text{vib} = I - P^\text{trans} - P^\text{rot}\). Extract basis \(Q\) for the vibrational subspace (\(3N{-}6\) dimensions).
Step 3: Build the vibrational representation. \(D_\text{vib}(g) = Q^T \, D_\text{disp}(g) \, Q\) — compact \((3N{-}6) \times (3N{-}6)\) matrices.
Step 4: Decompose into irreps using \(QS = RQ\). Each irrep subspace = a normal mode.
Water: \(\Gamma^\text{vib} = 2A_1 + B_1\) — two symmetric modes (stretch + bend) and one asymmetric stretch.
Water: Vibrational Mode Decomposition
Selection Rules & Character Tables
The irrep label of each mode tells you the selection rules — which modes are detectable by which spectroscopy:
| \(C_{2v}\) | \(E\) | \(C_2(z)\) | \(\sigma_v(xz)\) | \(\sigma_v(yz)\) | Linear, rot. | Quadratic |
| \(A_1\) | +1 | +1 | +1 | +1 | \(z\) | \(x^2, y^2, z^2\) |
| \(A_2\) | +1 | +1 | −1 | −1 | \(R_z\) | \(xy\) |
| \(B_1\) | +1 | −1 | +1 | −1 | \(x, R_y\) | \(xz\) |
| \(B_2\) | +1 | −1 | −1 | +1 | \(y, R_x\) | \(yz\) |
- IR active if the irrep appears among \((x, y, z)\) — changes in dipole moment
- Raman active if the irrep appears among the quadratics — changes in polarizability
- All three vibrational modes of water are both IR and Raman active
Interlude
Three Operations for Building Representations
Three Fundamental Operations
Direct sum (\(\oplus\)): Stack representations into block-diagonal form. Dimension \(m + n\). This is how we decompose representations into irreps.
Tensor product (\(\otimes\)): Kronecker product element-wise: \(D^{(1 \otimes 2)}(g) = D^{(1)}(g) \overset{\text{kr}}{\otimes} D^{(2)}(g)\). Dimension \(m \times n\). Then decompose into irreps.
Change of basis: \(D'(g) = Q \, D(g) \, Q^{-1}\). Finding the right \(Q\) is exactly \(QS = RQ\).
These three operations — applied to generators instead of group elements — carry over directly to continuous groups.
Act 3
Continuous Groups and SO(3)
From Finite Groups to Lie Groups
Continuous groups (Lie groups) like SO(3) have infinitely many elements, but are built from finitely many generators:
\[ g(\vec{\theta}) = e^{i \sum_k \theta_k X_k} \]
- \(X_k\) are generators (elements of the Lie algebra), \(\vec\theta\) are continuous parameters
- Matrix exponential: \(\;e^{M} = I + M + \frac{M^2}{2!} + \cdots\)
- For small \(\epsilon\): \(\;e^{i\epsilon X} \approx I + i\epsilon X\) — infinitesimal transformation
Key insight: A change of basis on group elements is identical to a change of basis on generators. So all our code and intuition carries over unchanged — just stack constraints for generators instead of all group elements.
SO(\(n\)) — Rotation Groups
SO(\(n\)): all \(n \times n\) orthogonal matrices with det = 1. Near the identity, \(R = e^{i\epsilon X} \approx I + i\epsilon X\).
Require orthogonality \(R^T R = I\) to first order:
\[ (I + i\epsilon X)^T(I + i\epsilon X) = I + i\epsilon(X^T + X) + O(\epsilon^2) = I \]
So \(X^T + X = 0\), i.e. generators must be antisymmetric: \(X^T = -X\).
This gives \(n(n{-}1)/2\) independent generators. For SO(3): 3 generators \(L_x, L_y, L_z\).
Building All Irreps from Tensor Products
Start from the vector representation (\(l = 1\)) and tensor-product recursively, decomposing with \(QS = RQ\):
\[ 1 \otimes 1 = 0 \oplus 1 \oplus 2 \]
- \(l = 0\) (dim 1): scalar \(l = 1\) (dim 3): vector \(l = 2\) (dim 5): symmetric traceless tensor
- Iterate: \(\;2 \otimes 1 = 1 \oplus 2 \oplus 3\), \(3 \otimes 1 = 2 \oplus 3 \oplus 4\), ...
Triangle rule (Clebsch-Gordan series):
\[ l_1 \otimes l_2 = |l_1 - l_2| \oplus (|l_1 - l_2| + 1) \oplus \cdots \oplus (l_1 + l_2) \]
The \(l\)-th irrep has dimension \(2l + 1\).
Clebsch-Gordan Coefficients = Solutions to \(QS = RQ\)
The CG coefficients are exactly the \(Q\) matrices from the similarity transform applied to tensor product decomposition:
\[ \Big(D^{(l_1)}(g) \otimes D^{(l_2)}(g)\Big) \cdot Q = Q \cdot D^{(l_3)}(g) \]
- \(S = D^{(l_1)} \otimes D^{(l_2)}\) is the tensor product representation
- \(R = D^{(l_3)}\) is an irrep in the decomposition
- The solution \(Q\) (shape \((2l_1+1)(2l_2+1) \times (2l_3+1)\)) is a CG matrix
Every Clebsch-Gordan table you have ever looked up is a solution to this equation.
Spherical Harmonics
The spherical harmonics \(Y_l^m(\theta, \phi)\) are the lowest-order polynomials of \((x, y, z)\) that transform as irreps of SO(3):
- \(l = 0\): constant \(1\) (scalar) — \(s\)-orbitals
- \(l = 1\): \(\{x, y, z\}\) (vector) — \(p\)-orbitals
- \(l = 2\): \(\{xy, xz, yz, x^2{-}y^2, 2z^2{-}x^2{-}y^2\}\) — \(d\)-orbitals
- \(l = 3\): seven cubic polynomials — \(f\)-orbitals
Constructed recursively via tensor products and CG coefficients (solutions to \(QS = RQ\)). They are the angular part of atomic orbital wavefunctions.
Parity, O(3), and Crystal Field Splitting
O(3) = SO(3) \(\times\) \(\{I, -I\}\). Adding inversion doubles the group. Irreps now carry parity \(p = \pm 1\):
- Even (\(p = +1\)): scalars, \(d\)-orbitals, pseudovectors (\(\mathbf{L} = \mathbf{r} \times \mathbf{p}\))
- Odd (\(p = -1\)): vectors, \(p\)-orbitals, \(f\)-orbitals
Crystal field splitting — what happens to an O(3) irrep in a lower-symmetry environment?
Take \(S = R = D^{(l=2)}\) restricted to octahedral group \(O_h\), solve \(QS = RQ\):
- 3D eigenspace \(\to\) \(t_{2g}\) orbitals (\(d_{xy}, d_{xz}, d_{yz}\))
- 2D eigenspace \(\to\) \(e_g\) orbitals (\(d_{z^2}, d_{x^2-y^2}\))
The crystal field splitting from inorganic chemistry — derived from one equation.
Act 4
Equivariant Machine Learning
Equivariance
A function \(f\) is equivariant if the group action commutes with the function:
\[ f\big(D(g) \cdot \mathbf{x}\big) = D'(g) \cdot f(\mathbf{x}) \quad \text{for all } g \in G \]
Key insight: We only need to build in the symmetry of empty space — e.g. for 3D atomic systems, the full rotation group O(3) and translations (the Euclidean group E(\(n\))). The data itself lowers the symmetry. An equivariant model starts with full symmetry, and the atomic positions in the input break it down to whatever the actual point group is.
This means a single equivariant architecture can handle any molecule, any crystal, any symmetry — no need for different models for \(C_{2v}\) vs. \(T_d\) vs. \(O_h\).
Equivariant Linear Maps & Parameter Reduction
For a linear layer \(\mathbf{y} = W\mathbf{x}\) to be equivariant:
\[ D_\text{out}(g) \cdot W = W \cdot D_\text{in}(g) \quad \text{for all } g \]
This is exactly \(QS = RQ\)! By Schur's lemma:
- Blocks connecting inequivalent irreps \(\to\) zero
- Blocks connecting the same irrep \(\to\) scalar \(\times\) identity (1 free parameter)
Example: An equivariant layer mapping \(2 \times (l{=}0) + 2 \times (l{=}1) + 1 \times (l{=}2) \to\) same has only 9 free parameters instead of \(13 \times 13 = 169\) — an 18.8\(\times\) reduction.
Equivariant Linear Map Explorer
Choose the irrep content of input and output and see how Schur's lemma constrains \(W\) under the group \(P(3)\) — the symmetry of a triangle:
Equivariant Graph Neural Networks
Modern equivariant GNNs for atomistic simulation (MACE, NequIP, Allegro, BOTNet) are built from three types of operations:
- Tensor product layers: Combine features using CG coefficients (solutions to \(QS = RQ\))
- Equivariant linear layers: Weight matrices constrained by \(QS = RQ\)
- Equivariant non-linearities: Standard point-wise non-linearities (e.g. ReLU) violate equivariance unless the representation is a permutation — equivariant activations require special construction
Important: The similarity transform is solved once, at architecture design time. The CG coefficients and weight constraints are precomputed and baked into the network. After that, the network runs like any other neural network — just with fewer, more structured parameters.
The dramatic parameter reduction (often 10–20\(\times\)) explains why equivariant models achieve state-of-the-art accuracy with far less training data — crucial when each DFT data point costs hours to compute.
Act 5
The Unifying Picture
One Equation, Many Applications
| Application | \(S\) | \(R\) | \(Q\) = ? |
| Rep equivalence | rep\(_1\) | rep\(_2\) | change of basis |
| Schur's lemma | irrep | irrep | \(\propto\) identity |
| Irrep decomposition | rep | rep | eigenspaces = irreps |
| Normal modes | vib rep | irrep | mode shapes |
| CG coefficients | \(l_1 \otimes l_2\) | \(l_3\) | CG matrix |
| Spherical harmonics | \(D^{(l+1)}\) | \(D^{(l)} \otimes D^{(1)}\) | \(Y^{(l+1)}\) projection |
| Crystal field | SO(3) irrep | point group irrep | orbital splitting |
| Equivariant weights | \(D_\text{out}\) | \(D_\text{in}\) | allowed \(W\) matrices |
The Takeaway
Whether you are computing CG coefficients, decomposing vibrational modes, constraining a neural network, or deriving crystal field splittings, you are always doing the same thing:
- Set up \(S\) and \(R\)
- Build \(P_\text{all} = S \overset{\text{kr}}{\otimes} I - I \overset{\text{kr}}{\otimes} R^T\)
- Find \(\ker(P_\text{all})\)
You already know linear algebra.
Representation theory is just knowing which matrices to plug into \(S\) and \(R\).
Resources
- Tutorial page — notes, slides, and notebook links:
symm4ml.mit.edu/symm4ml_s26/tutorials/aps-tutorial-2026
- Tutorial Notebook — live-code Colab notebook
- e3nn — equivariant neural network library for PyTorch
- 6.7970/8.750 — Symmetry and its Application to Machine Learning, MIT