Papers
Topics
Authors
Recent
Search
2000 character limit reached

TensorKit.jl: Symmetry-Aware Tensor Computations

Updated 8 July 2026
  • TensorKit.jl is a Julia package for tensor computations that supports dense, group-symmetric, and anyonic tensors through a unified TensorMap interface.
  • It achieves high performance by exploiting block-sparse structures via optimized backends such as BLAS, cuTENSOR, and others, reducing computational costs.
  • The package provides a mid-level framework that abstracts symmetry management from model-specific algorithms, facilitating scalable tensor-network simulations.

Searching arXiv for the cited TensorKit.jl paper and closely related context. I’m checking arXiv metadata for TensorKit.jl and related tensor-symmetry software. TensorKit.jl is a Julia-based software package for tensor computations, especially focusing on tensors with internal symmetries. It is described as a mid-level Julia package for large-scale tensor computations with internal symmetries, with primary goals of flexibility, performance, and extensibility. Its central abstraction is the TensorMap type, which treats tensors as morphisms in a unitary fusion category, optionally braided, and thereby provides a uniform framework for dense tensors, group-symmetric tensors, and tensors with categorical or anyonic symmetries (Devos et al., 13 Aug 2025).

1. Scope, goals, and software position

TensorKit.jl is designed around three stated goals. Flexibility denotes a symmetry-agnostic API that works uniformly for dense tensors, group-symmetric tensors, and tensors with categorical or anyonic symmetries. Performance denotes exploitation of the block-sparse structure induced by symmetries in order to reduce memory and computation, while delegating heavy operations to highly-optimized backends including BLAS/LAPACK, cuTENSOR, TBLIS, and Strided/HPTT/TBLIS for transpositions. Extensibility denotes the possibility of adding new symmetry types by supplying the topological data of a unitary fusion category, including NN-, FF-, and RR-symbols, dimensions, and duals, while also serving as a substrate for higher-level tensor-network libraries such as MPSKit.jl, PEPSKit.jl, and TNRKit.jl (Devos et al., 13 Aug 2025).

The package is positioned between low-level array kernels and higher-level tensor-network applications. A plausible implication is that this “mid-level” role is meant to separate symmetry management and tensor-algebra semantics from model-specific algorithms such as DMRG or PEPS optimization. The data explicitly states that tensor-network ecosystems built on TensorKit.jl include MPSKit.jl, PEPSKit.jl, TNRKit.jl, and FiniteMPS.jl.

A common misconception is that the package is restricted to ordinary dense or group-symmetric tensors. The stated scope is broader: it covers abelian, non-abelian, and anyonic symmetries through the same core abstraction. Another misconception is that symmetry support is necessarily exposed as a separate user-facing mode. The design instead emphasizes that symmetry handling is hidden behind a symmetry-agnostic API, even though the implementation is symmetry-aware.

2. Category-theoretic formulation

TensorKit.jl treats tensors as morphisms in a unitary fusion category, optionally braided. In this formulation, objects are graded spaces, namely direct sums of simple objects or representation sectors, while morphisms are intertwiners, implemented as TensorMap. The monoidal structure includes tensor products \otimes of spaces and morphisms, direct sums \oplus, duals and (co)evaluation maps, and, when applicable, associator and braiding data encoded by FF- and RR-symbols. Coherence identities—specifically the snake, triangle, pentagon, and hexagon identities—ensure consistency of index manipulations such as transpose, permute, trace, and network contraction (Devos et al., 13 Aug 2025).

This categorical viewpoint is reflected directly in the package’s formalization. A rank-NN tensor may be interpreted as a vector

tV1VN,t \in V_1 \otimes \cdots \otimes V_N,

or as a rank-(N1,N2)(N_1,N_2) tensor map

FF0

With unitary grouping and splitting isomorphisms, the matrix representation is

FF1

Composition is then ordinary matrix multiplication:

FF2

The category-theory perspective also determines how duality is implemented. Evaluation and co-evaluation maps satisfy the snake equations

FF3

and similarly for FF4. These relations are not decorative formalism; they are the stated mechanism by which line bending and index transposition are made coherent.

This suggests that the package’s categorical structure is intended not only as a mathematical interpretation, but as a design constraint on data structures and index transformations. The paper explicitly states that category theory informs both API and data structures.

3. Core abstractions: graded spaces and TensorMap

A space FF5 is represented as a direct sum of representation sectors, with optional degeneracies:

FF6

Here FF7 is the irrep sector, described as the “inner” degrees of freedom, and FF8 is the degeneracy space, described as the “outer” degrees of freedom. In the abelian case, all FF9 are one-dimensional; in the non-abelian case, RR0 (Devos et al., 13 Aug 2025).

TensorMap represents a linear map

RR1

Its storage model is a block-diagonal matrix representation combined with unitary grouping and splitting isomorphisms:

RR2

The blocks of RR3 are labeled by a coupled charge, or more generally by a simple object. The package stores RR4 together with structural metadata, including domain and codomain spaces, fusion and splitting trees, and coupled charges; the unitary maps RR5 and RR6 need not be stored explicitly but are applied implicitly for grouping and splitting.

The index structure is symmetry dependent. The data distinguishes outer indices RR7, inner indices RR8 inside RR9 for non-abelian sectors, and fusion channels \otimes0 for non-abelian and anyonic cases. Fusion and splitting trees record a canonical fusion order for non-abelian and anyonic sectors. A plausible implication is that these trees act as the discrete bookkeeping object that allows the package to reconcile abstract monoidal coherence with explicit storage layout.

The package’s use of Schur’s lemma is central. For a graded space carrying unitary representations of a compact group,

\otimes1

and equivariant maps block-diagonalize as

\otimes2

This is the formal basis for the block-sparse and reduced-block computations that characterize the package.

4. Symmetry classes and tensor representations

The package distinguishes three principal symmetry regimes. In the abelian case, charges label one-dimensional irreducible representations, tensor products fuse uniquely, and selection rules enforce vanishing of incompatible components. The stated rule is

\otimes3

The corresponding representation is block-sparse, with one block per coupled charge.

In the non-abelian case, fusion rules take the form

\otimes4

Fusion and splitting tensors \otimes5, described as Clebsch–Gordan basis tensors, satisfy orthogonality and completeness relations. The Wigner–Eckart theorem is implemented in the form

\otimes6

so tensor components factor into reduced parts carrying degeneracy degrees of freedom and fusion tensors carrying inner irrep degrees of freedom. The package therefore computes on reduced blocks and repeats “identity on irrep space” rather than materializing full dense structure (Devos et al., 13 Aug 2025).

Recoupling between fusion orders is governed by associators and unitary \otimes7-symbols:

\otimes8

The pentagon equation ensures coherence. If the category is braided, braiding is encoded by \otimes9-symbols through

\oplus0

with consistency guaranteed by the hexagon equation.

In the anyonic or categorical case, the package uses the topological data of a unitary fusion category: simple objects, a unit object, duals, dimensions \oplus1, \oplus2-symbols, \oplus3-symbols, and possibly \oplus4-symbols. TensorKit.jl uses these memoized linear transformations of fusion trees to implement index manipulations without explicit Clebsch–Gordan coefficients, and the data states that this is applicable to any category with the required topological data. The examples given are \oplus5 for finite or compact groups such as \oplus6 and \oplus7, \oplus8 for fermionic parity, and anyon models including Fibonacci and Ising.

A common misunderstanding is that non-abelian support and anyonic support are variations of the same group-theoretic machinery. The stated distinction is more precise: non-abelian group symmetries are treated through irreps, fusion multiplicities, and Wigner–Eckart factorization, whereas anyonic symmetries are treated at the level of unitary fusion categories, with fusion spaces, associators, braiding, duality \oplus9-morphisms, and explicit consistency equations. The package nevertheless presents them through the same TensorMap interface.

5. Index manipulations, linear-algebra operations, and algorithms

TensorKit.jl reduces tensor-network computations to pairwise contractions, outer products, and traces, and uses TensorOperations.jl backends for these steps. Pairwise contractions reduce to compositions, so that for each coupled block FF0,

FF1

Reshape, group, and split operations are described as unitary isomorphisms FF2 that rearrange indices consistently with symmetry and are effectively free at the storage-layout level because they are metadata operations (Devos et al., 13 Aug 2025).

Transpose, permute, and trace are symmetry-sensitive. Transpose bends indices using (co)evaluation maps and duals; in the abelian case this is a cyclic permutation of charges with conjugation, whereas in the non-abelian and anyonic cases bending induces recoupling of fusion trees and redistribution of reduced coefficients across blocks. Permute is trivial swap in the abelian case, but in the non-abelian case it is implemented by braiding via FF3 and recoupling via FF4, described as an FF5 sequence for adjacent swaps. Trace connects pairs of legs via evaluation; in the non-abelian case traced legs are made adjacent, recoupled to a tadpole, and annihilated using snake and loop identities, yielding sums of reduced blocks weighted by dimensions and FF6-symbols.

Adjoints and matrix decompositions are likewise defined at the level of reduced block matrices. With unitary grouping and splitting maps, the adjoint is

FF7

The paper states block-wise implementations of eigenvalue decomposition, SVD, QR, and polar decomposition. For the SVD,

FF8

where FF9 is codomain-isometric, RR0 is diagonal as a rank-RR1 tensor, and RR2 is domain-isometric. For the polar decomposition,

RR3

with the isometric factor aligned with the original indices.

This suggests that the package seeks to preserve the semantic distinction between tensor-network operations and ordinary linear algebra, even though many kernels ultimately reduce to block-wise matrix computations. The formalism of morphisms, duals, and associators is therefore not separated from the implementation of decomposition routines.

6. Performance characteristics, ecosystem, and limitations

The performance model follows directly from block structure. In the dense case, costs scale with ordinary linear algebra, for example RR4 for matrix multiplication. In the symmetric case, block-diagonal structure reduces both block sizes and block counts. The paper gives the abelian estimate that RR5 blocks of size RR6 lead to RR7 cost for matrix multiplication, with analogous reductions for decompositions. In the non-abelian case there is an additional reduction because each block RR8 is computed once rather than RR9 times, due to the factor NN0 (Devos et al., 13 Aug 2025).

The reported benchmarks are specific. For the NN1 spin-1 Heisenberg model, imposing symmetry yields approximately NN2 speedup versus no symmetry at comparable physical dimensions; NN3 symmetry crosses over around NN4, while NN5 gains immediately. For the NN6 adjoint Heisenberg model, NN7-symmetric tensors yield approximately NN8 speedup over trivial symmetry at comparable NN9. For the half-filled Hubbard model, tV1VN,t \in V_1 \otimes \cdots \otimes V_N,0 symmetry achieves more than tV1VN,t \in V_1 \otimes \cdots \otimes V_N,1 speedup over tV1VN,t \in V_1 \otimes \cdots \otimes V_N,2-only symmetry, although for small tV1VN,t \in V_1 \otimes \cdots \otimes V_N,3 the bookkeeping overhead can dominate.

Within the broader software ecosystem, the data lists ITensors.jl in Julia; TeNPy, quimb, YASTN, and peps-torch in Python; Cytnx and Uni10 in C++/Python; and QSpace and SyTen. Most are described as supporting abelian symmetries, only QSpace as supporting general non-abelian symmetries, and none as providing general categorical anyonic support. TensorKit.jl is distinguished by uniform handling of abelian, non-abelian, and anyonic symmetries; symmetry management hidden behind a symmetry-agnostic API; memoized fusion-tree manipulations based on category data without explicit Clebsch–Gordan input; Julia-native performance with multiple backends; and AD support through ChainRules and Zygote.

The principal limitations and edge cases are also explicitly stated. In braided categories with nontrivial twist tV1VN,t \in V_1 \otimes \cdots \otimes V_N,4, tensor networks must be specified as planar diagrams or augmented with explicit over/under crossings; only symmetric braiding with trivial twist recovers graph-only specification. Symmetry bookkeeping can dominate at small dimensions, and the crossover depends on spaces and backends. The current scope is unitary fusion categories with finitely many simple objects, or locally finite settings, while multi-fusion categories and broader categorical settings are described as in progress. Point-group and chemistry-oriented symmetries are identified as natural extensions. Automatic computation of tV1VN,t \in V_1 \otimes \cdots \otimes V_N,5 data from Clebsch–Gordan coefficients or from defining data remains manual, and tooling to automate or approximate this is described as an open area. Ongoing work is also noted for multithreading, multi-node execution, and GPU backends for symmetric kernels.

These limitations delimit the package’s domain of validity. In particular, the paper does not present symmetry as a universal acceleration mechanism independent of problem scale, nor does it claim that graph-theoretic tensor-network notation suffices in all braided settings. Instead, the package is framed as a coherent implementation of tensor algebra in unitary fusion categories, with the practical advantages and constraints that follow from that formal commitment.

Definition Search Book Streamline Icon: https://streamlinehq.com
References (1)

Topic to Video (Beta)

No one has generated a video about this topic yet.

Whiteboard

No one has generated a whiteboard explanation for this topic yet.

Follow Topic

Get notified by email when new papers are published related to TensorKit.jl.