You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/src/man/Implementation.md
+70-14Lines changed: 70 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,9 @@
1
1
explain the f-symbol and n-symbol storage system
2
2
3
3
# MultiTensorKit implementation: $\mathsf{Rep_{A_4}}$ as an example
4
-
This tutorial is dedicated to explaining how MultiTensorKit was implemented to be compatible with with TensorKit and MPSKit for matrix product state simulations. In particular, we will be making a generalised anyonic spin chain. We will demonstrate ... (not sure yet what we're going to show here).
4
+
This tutorial is dedicated to explaining how MultiTensorKit was implemented to be compatible with with TensorKit and MPSKit for matrix product state simulations. In particular, we will be making a generalised anyonic spin chain. We will demonstrate how to reproduce the entanglement spectra found in [Lootens_2024](@cite). The model considered there is a spin-1 Heisenberg model with additional terms to break the usual $\mathsf{U_1}$ symmetry to $\mathsf{Rep(A_4)}$, while having a non-trivial phase diagram and relatively easy Hamiltonian to write down.
5
5
6
-
This will be done with the `A4Object = BimoduleSector{A4}``Sector`, which is the multifusion category which contains the structure of the module categories over $\mathsf{Rep_{A_4}}$. Since there are 12 module categories (technically only 8 up to equivalence), `A4Object` is a $r=12$ multifusion category. There are 3 fusion categories up to equivalence:
6
+
This will be done with the `A4Object = BimoduleSector{A4}``Sector`, which is the multifusion category which contains the structure of the module categories over $\mathsf{Rep_{A_4}}$. Since there are 7 module categories, `A4Object` is a $r=7$ multifusion category. There are 3 fusion categories up to equivalence:
7
7
- $\mathsf{Vec A_4}$: the category of $\mathsf{A_4}$-graded vector spaces. The group $\mathsf{A}_4$ is order $4!/2 = 12$. It has thus 12 objects.
8
8
- $\mathsf{Rep_{A_4}}$: the irreducible representations of the group $\mathsf{A}_4$, of which there are 4. One is the trivial representation, two are one-dimension non-trivial and the last is three-dimensional.
9
9
- $\mathsf{Rep H}$: the representation category of some Hopf algebra which does not have a name. It has 6 simple objects.
@@ -13,11 +13,20 @@ using TensorKit, MultiTensorKit, MPSKit, MPSKitModels
13
13
````
14
14
15
15
## Identifying the simple objects
16
-
We first need to select which fusion category we wish to use to grade the physical Hilbert space, and which fusion category to represent e.g. the symmetry category. Say we choose $\mathcal{D} = \mathsf{Vec A_4}$ for the physical Hilbert space and $\mathcal{C} = \mathcal{D}^*_{\mathcal{M}} = \mathsf{Rep_{A_4}}$ the symmetry category. This fixes the module category $\mathcal{M} = \mathsf{Vec}$. When referring to specific fusion and module categories, we will use this non-multifusion notation.
16
+
We first need to select which fusion category we wish to use to grade the physical Hilbert space, and which fusion category to represent e.g. the symmetry category. In our case, we are interested in selecting $\mathcal{D} = \mathsf{Rep(A_4)}$ for the physical Hilbert space. We know the module categories over $\mathsf{Rep(G)}$ to be $\mathsf{Rep^\psi(H)}$ for a subgroup $\mathsf{H} and 2-cocycle $\psi$. Thus, the 7 module categories $\mathcal{M}$ one can choose over $\mathsf{Rep(A_4)}$ are
17
+
- $\mathsf{Rep(A_4)}$ itself as the regular module category,
When referring to specific fusion and module categories, we will use this non-multifusion notation.
17
26
18
27
The easiest way to identify which elements of the multifusion category correspond to the subcategories we wish to use is ... (not sure yet how to do this yet)
19
28
20
-
Once we have identified the fusion and module categories, we now want to select the relevant objects we wish to place in our graded spaces. Unfortunately, due to the nature of how the N-symbol and F-symbol data are generated, the objects of the fusion subcategories are not ordered such that `label=1` corresponds to the unit object. Hence, the simplest way to find the unit object of a fusion subcategory is
29
+
Now that we have identified the fusion and module categories, we want to select the relevant objects we wish to place in our graded spaces. Unfortunately, due to the nature of how the N-symbol and F-symbol data are generated, the objects of the fusion subcategories are not ordered such that `label=1` corresponds to the unit object. Hence, the simplest way to find the unit object of a fusion subcategory is
21
30
22
31
````julia
23
32
one(A4Object(i,i,1))
@@ -39,24 +48,71 @@ The dual object of some simple object $a$ of an arbitrary subcategory $\mathcal{
TensorKit has been made compatible with the multifusion structure by keeping track of the relevant units in the fusion tree manipulations. With this, we can make `GradedSpace`s whose objects are in `A4Object`. With our example in mind, we first select the objects:
51
+
## Hamiltonian
52
+
TensorKit has been made compatible with the multifusion structure by keeping track of the relevant units in the fusion tree manipulations. With this, we can make `GradedSpace`s whose objects are in `A4Object`:
44
53
45
54
````julia
46
-
D0 =one(A4Object(2,2,1)) # unit object of VecA4
47
-
D1 =A4Object(2,2,2) # some self-dual object of VecA4
55
+
D1 =A4Object(6, 6, 1) # unit in this case
56
+
D2 =A4Object(6, 6, 2) # non-trivial 1d irrep
57
+
D3 =A4Object(6, 6, 3) # non-trivial 1d irrep
58
+
D4 =A4Object(6, 6, 4) # 3d irrep
48
59
49
-
M =A4Object(1,2,1) # Vec
60
+
````
61
+
Since we want to replicate a spin-1 Heisenberg model, it makes sense to use the 3-dimensional irrep to grade the physical space, and thus construct our Hamiltonian. We don't illustrate here how to derive the considered Hamiltonian in a $\mathsf{Rep(A_4)}$ basis, but simply give it.
H1 =@mpohamsum(-2* h1{i,j} for (i, j) innearest_neighbours(lattice))
91
+
H2 =@mpohamsum(h2{i,j} for (i, j) innearest_neighbours(lattice))
92
+
H3 =@mpohamsum(2im* h3{i,j} for (i, j) innearest_neighbours(lattice))
93
+
94
+
H = H1 + J1 * H2 + J3 * H3
53
95
````
54
96
55
-
Afterwards, we build the physical and virtual space of the matrix product state:
97
+
98
+
## Constructing the matrix product state
99
+
For now, we will select $\mathsf{Vec}$ as the module category:
56
100
````julia
57
-
P = Vect[A4Object](D0 =>1, D1 =>1)
58
-
V = Vect[A4Object](M => D) # D is the bond dimension
101
+
M =A4Object(1, 6, 1) # Vec
59
102
````
103
+
104
+
Afterwards, we build the physical and virtual space of the matrix product state:
105
+
````julia
106
+
D =40# bond dimension
107
+
V = Vect[A4Object](M => D)
108
+
Vb = Vect[A4Object](M =>1) # non-degenerate boundary virtual space
109
+
init_mps =FiniteMPS(L, P, V; left=Vb, right=Vb)
110
+
````
111
+
> [!IMPORTANT]
112
+
> We must pass on a left and right virtual space to the keyword arguments `left` and `right` of the `FiniteMPS` constructor, since these would by default try to place a trivial space of the `Sector`, which does not exist for `BimoduleSector` due to the semisimple unit.
113
+
114
+
115
+
60
116
### Infinite case
61
117
Now, using MPKSit, we can perform matrix product state calculations. We construct some nearest-neighbour Hamiltonian and find the MPS representation of the ground state.
Copy file name to clipboardExpand all lines: docs/src/man/multifusioncats.md
+5-7Lines changed: 5 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -90,7 +90,7 @@ end
90
90
91
91
`i` and `j` specify which subcategory $\mathcal{C}_{ij}$ we are considering, and `label` selects a particular simple object within that subcategory.
92
92
93
-
We want to consider multifusion categories because **their structure encapsulates that of (bi-)module categories**. Every diagonal category $\mathcal{C}_{ii} \coloneqq \mathcal{C}_i$ is a fusion category, and every off-diagonal category $\mathcal{C}_{ij}$ is an invertible $(\mathcal{C}_{i}, \mathcal{C}_{j})$-bimodule category. That way, as long as we know how the simple objects of the fusion and module categories fuse with one another, and we can determine all the monoidal and module associators, we can treat the multifusion category as one large fusion category with limited fusion rules. In particular, the tensor product
93
+
We want to consider multifusion categories because **their structure encapsulates that of (bi-)module categories**. Every diagonal category $\mathcal{C}_{ii} \coloneqq \mathcal{C}_i$ (also known as a component category) is a fusion category, and every off-diagonal category $\mathcal{C}_{ij}$ is an invertible $(\mathcal{C}_{i}, \mathcal{C}_{j})$-bimodule category. That way, as long as we know how the simple objects of the fusion and module categories fuse with one another, and we can determine all the monoidal and module associators, we can treat the multifusion category as one large fusion category with limited fusion rules. In particular, the tensor product
@@ -152,19 +152,17 @@ where by $\mathbb{1}_a$ we mean the right unit of $a$ (the left unit we would de
152
152
Besides the B-move (and closely related A-move, which we do not illustrate), we can also see how the quantum dimension and Frobenius-Schur indicator expressions get modified. We already know that an F-move of the form $F^{a \bar{a} a}_{a}$ needs to be evaluated for these topological data. Graphically, we find that
need to show other changed expressions like A-move, dimension, frobenius-schur indicator, what else outside of TensorKitSectors in terms of fusion tree manipulations?
159
159
160
160
no figures up till now with arrows, will this even be necessary? maybe if we show B-moves with M->Mop
161
161
162
-
## Examples of multifusion categories
163
-
2x2 thing that is isomorphic to ising
164
-
generalisation to Tambara-Yamagami
165
-
166
-
where to say something about rewriting mpskit to be planar such that braidings with module legs are avoided?
162
+
### Braiding
163
+
A very important aspect of MultiTensorKit is that all `BimoduleSector`s are defined to *not* support braiding: `TensorKitSectors.BraidingStyle(::Type{<:BimoduleSector}) = NoBraiding()`. We do this for two reasons. On the one hand, there is no natural 1-categorical way of defining braidings between the components of the multifusion category. It is possible that the diagonal fusion categories themselves are braided, but a "componentwise" braiding is unwise to support. On the other hand, it is entirely possible to write matrix product state manipulations in a planar manner (which has been done in [MPSKit](https://github.com/QuantumKitHub/MPSKit.jl)), thus avoiding the need of a braiding tensor.
167
164
165
+
## Examples of multifusion categories
168
166
Without specifying any of the categories, the simplest non-trivial multifusion category is a $2\times 2$ one, and the categories can be organised in a matrix as
0 commit comments