TensorKit.jl
A Julia package for large-scale tensor computations, with a hint of category theory.
Package summary
TensorKit.jl aims to be a generic package for working with tensors as they appear throughout the physical sciences. TensorKit implements a parametric type Tensor
(which is actually a specific case of the type TensorMap
) and defines for these types a number of vector space operations (scalar multiplication, addition, norms and inner products), index operations (permutations) and linear algebra operations (multiplication, factorizations). Finally, tensor contractions can be performed using the @tensor
macro from TensorOperations.jl.
Currently, most effort is oriented towards tensors as they appear in the context of quantum many body physics and in particular the field of tensor networks. Such tensors often have large dimensions and take on a specific structure when symmetries are present. To deal with generic symmetries, we employ notations and concepts from category theory all the way down to the definition of a tensor.
At the same time, TensorKit.jl focusses on computational efficiency and performance. The underlying storage of a tensor's data can be any DenseArray
. Currently, certain operations are already multithreaded, either by distributing the different blocks in case of a structured tensor (i.e. with symmetries) or by using multithreading provided by the package Strided.jl. In the future, we also plan to investigate using CuArray
s as underlying storage for the tensors data, so as to leverage GPUs for the different operations defined on tensors.
Contents of the manual
- Introduction
- Optional introduction to category theory
- Categories, functors and natural transformations
- Monoidal categories
- Duality: rigid, pivotal and spherical categories
- Braidings, twists and ribbons
- Adjoints and dagger categories
- Direct sums, simple objects and fusion categories
- Topological data of a unitary pivotal fusion category
- Bibliography
- Vector spaces
- Sectors, representation spaces and fusion trees
- Representation theory and unitary fusion categories
- Sectors
- Existing group representations
- Combining different sectors
- Defining a new type of sector
- Generalizations
- Graded spaces
- Fusion trees
- Canonical representation
- Manipulations on a fusion tree
- Manipulations on a splitting - fusion tree pair
- Inspecting fusion trees as tensors
- Fermions
- Anyons
- Tensors and the
TensorMap
type - Storage of tensor data
- Constructing tensor maps and accessing tensor data
- Random and uninitialized tensor maps
- Tensor maps from existing data
- Constructing similar tensors
- Special purpose constructors
- Tensor properties
- Reading and writing tensors:
Dict
conversion - Vector space and linear algebra operations
- Index manipulations
- Tensor factorizations
- Bosonic tensor contractions and tensor networks
- Fermionic tensor contractions
- Anyonic tensor contractions