Context
get_algebra returns the isomorphism label of the dynamical Lie algebra generated by a set of Pauli strings — one of the four canonical types from Theorem 1 in Aguilar et al. 2024. For example,
generators = p(["XY", "XZ"], n=4)
generators.get_algebra() # -> "sp(4)"
The label fixes the family (u, so, sp) and the dimension parameter, but it is a name, not a usable mathematical object. Anything algebraic with the result — dimension checks, structure-constant computations, feeding into a Cartan-decomposition pipeline like Wierichs et al. 2025, arXiv:2503.19014 — needs the algebra instantiated as a concrete basis of operators.
This issue is the first step: expose the algebra in defining representation. Cartan involutions, k/p split, and CSAs come in a follow-up.
Task
Add a function that returns the algebra named by get_algebra as a list of matrices in its defining representation, partitioned by direct summand. The output is fully determined by the label, so this is table-driven — no input-dependent computation.
| Canonical type |
Algebra per summand |
Defining rep |
# summands |
| A |
so(n+3) |
(n+3)×(n+3) real antisymmetric |
2^{n_1} |
| B1 |
sp(2^{n_2}) |
2^{n_2+1}×2^{n_2+1} symplectic |
2^{n_1} |
| B2 |
so(2^{n_2+3}) |
2^{n_2+3}×2^{n_2+3} real antisymmetric |
2^{n_1} |
| B3 |
su(2^{n_2+2}) |
2^{n_2+2}×2^{n_2+2} traceless anti-Hermitian |
2^{n_1} |
Per summand the basis is a textbook construction:
so(N): {E_{ij} − E_{ji} : 1 ≤ i < j ≤ N}.
su(N): a fixed traceless anti-Hermitian basis (generalized Gell-Mann is the obvious choice).
sp(N): standard basis of anti-Hermitian X with X^T J + J X = 0, with J = [[0, I_N], [-I_N, 0]].
Whatever convention is chosen, it must be fixed and documented — downstream consumers need a stable basis ordering.
The task is to find a basis for the direct sum of these simple Lie algebras.
API sketch
from paulie import get_pauli_string as p
generators = p(["XY", "XZ"], n=4)
basis = generators.get_algebra_basis()
# basis: list of np.ndarray, one per summand,
# each of shape (dim, N, N) with N the defining-rep size
For a single-summand algebra (n_1 = 0) the list has length 1.
Acceptance criteria
Out of scope (separate follow-ups)
- Cartan involutions, induced
k/p decomposition, and horizontal CSA per family — needed to feed the recursive-CD pipeline of arXiv:2503.19014. Tab. II of that paper specifies the conventions; matching them in the follow-up will minimize friction.
References
Context
get_algebrareturns the isomorphism label of the dynamical Lie algebra generated by a set of Pauli strings — one of the four canonical types from Theorem 1 in Aguilar et al. 2024. For example,The label fixes the family (
u,so,sp) and the dimension parameter, but it is a name, not a usable mathematical object. Anything algebraic with the result — dimension checks, structure-constant computations, feeding into a Cartan-decomposition pipeline like Wierichs et al. 2025, arXiv:2503.19014 — needs the algebra instantiated as a concrete basis of operators.This issue is the first step: expose the algebra in defining representation. Cartan involutions,
k/psplit, and CSAs come in a follow-up.Task
Add a function that returns the algebra named by
get_algebraas a list of matrices in its defining representation, partitioned by direct summand. The output is fully determined by the label, so this is table-driven — no input-dependent computation.so(n+3)(n+3)×(n+3)real antisymmetric2^{n_1}sp(2^{n_2})2^{n_2+1}×2^{n_2+1}symplectic2^{n_1}so(2^{n_2+3})2^{n_2+3}×2^{n_2+3}real antisymmetric2^{n_1}su(2^{n_2+2})2^{n_2+2}×2^{n_2+2}traceless anti-Hermitian2^{n_1}Per summand the basis is a textbook construction:
so(N):{E_{ij} − E_{ji} : 1 ≤ i < j ≤ N}.su(N): a fixed traceless anti-Hermitian basis (generalized Gell-Mann is the obvious choice).sp(N): standard basis of anti-HermitianXwithX^T J + J X = 0, withJ = [[0, I_N], [-I_N, 0]].Whatever convention is chosen, it must be fixed and documented — downstream consumers need a stable basis ordering.
The task is to find a basis for the direct sum of these simple Lie algebras.
API sketch
For a single-summand algebra (
n_1 = 0) the list has length 1.Acceptance criteria
get_algebra_basisis exposed at the same level asget_algebra.get_algebrasucceeds,get_algebra_basisreturns the corresponding defining-rep matrix basisJ) is documented in the function's docstring.tests/docs/source/user/classification.rstgets a short example reusing the two examples already on that page.Out of scope (separate follow-ups)
k/pdecomposition, and horizontal CSA per family — needed to feed the recursive-CD pipeline of arXiv:2503.19014. Tab. II of that paper specifies the conventions; matching them in the follow-up will minimize friction.References
paulie.get_algebra