Skip to content

Commit cd42e10

Browse files
committed
invert images + fix existing markdown errors
1 parent a683b85 commit cd42e10

File tree

3 files changed

+40
-31
lines changed

3 files changed

+40
-31
lines changed

docs/src/man/fusioncats.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@ This way, we can describe fusion categories by a triple $(\otimes, 1_\mathcal{C}
2626

2727
Vectors in these hom-spaces are graphically denoted as living in the trivalent junction
2828
```@raw html
29-
<img src="../img/homvector.svg" alt="" width="50%" class="center"/>
29+
<img src="../img/homvector.svg" alt="" width="50%" class="center color-invertible"/>
3030
```
3131

3232

3333
With the F-symbol, we can perform F-moves:
3434

3535
```@raw html
36-
<img src="../img/Fmove.svg" alt="" width="100%"/>
36+
<img src="../img/Fmove.svg" alt="" width="100%" class="color-invertible"/>
3737
```
3838

3939
TensorKit requires the F-symbols to be unitary. This way, we can interpret the F-symbol $F^{ijk}_l$ as a unitary matrix, and the F-move as a unitary basis transformation. Unitarity is also useful from a diagrammatic point of view because the category is then equipped with a pivotal and spherical structure. This essentially means that morphisms can be drawn and moved around freely on a 2-sphere, such that vector spaces can be moved freely from domain (codomain) to codomain (domain).

docs/src/man/implementation.md

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,26 @@ explain the f-symbol and n-symbol storage system
33
# MultiTensorKit implementation: $\mathsf{Rep(A_4)}$ as an example
44
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.
55

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-
- $\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-
- $\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-dimensional non-trivial and the last is three-dimensional.
9-
- $\mathsf{Rep(H)}$: the representation category of some Hopf algebra which does not have a name. It has 6 simple objects.
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+
- ``\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+
- ``\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-dimensional non-trivial and the last is three-dimensional.
9+
- ``\mathsf{Rep(H)}``: the representation category of some Hopf algebra which does not have a name. It has 6 simple objects.
1010

11+
For this example, we will require the following packages:
1112
````julia
1213
using TensorKit, MultiTensorKit, MPSKit, MPSKitModels
1314
````
1415

1516
## 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. 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,
18-
- $\mathsf{Vec}$: the category of vector spaces,
19-
- $\mathsf{Rep(\mathbb{Z}_2)}$,
20-
- $\mathsf{Rep(\mathbb{Z}_3)}$,
21-
- $\mathsf{Rep(\mathbb{Z}_2 \times \mathbb{Z}_2)}$,
22-
- $\mathsf{Rep^\psi(\mathbb{Z}_2 \times \mathbb{Z}_2)}$,
23-
- $\mathsf{Rep^\psi(A_4)}$.
17+
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
18+
19+
- ``\mathsf{Rep(A_4)}`` itself as the regular module category,
20+
- ``\mathsf{Vec}``: the category of vector spaces,
21+
- ``\mathsf{Rep(\mathbb{Z}_2)}``,
22+
- ``\mathsf{Rep(\mathbb{Z}_3)}``,
23+
- ``\mathsf{Rep(\mathbb{Z}_2 \times \mathbb{Z}_2)}``,
24+
- ``\mathsf{Rep^\psi(\mathbb{Z}_2 \times \mathbb{Z}_2)}``,
25+
- ``\mathsf{Rep^\psi(A_4)}``.
2426

2527
When referring to specific fusion and module categories, we will use this non-multifusion notation.
2628

@@ -34,7 +36,7 @@ one(A4Object(i,i,1))
3436

3537
Left and right units of subcategories are uniquely specified by their fusion rules. For example, the left unit of a subcategory $\mathcal{C}_{ij}$ is the simple object in $\mathcal{C}_i$ for which
3638

37-
$$ ^{}_a \mathbb{1} \times a = a \quad \forall a \in \mathcal{C}_i.$$
39+
$$^{}_a \mathbb{1} \times a = a \quad \forall a \in \mathcal{C}_i.$$
3840

3941
A similar condition uniquely defines the right unit of a subcategory. For fusion subcategories, a necessary condition is that the left and right units coincide.
4042

@@ -45,7 +47,7 @@ Identifying the other simple objects of a (not necessarily fusion) category requ
4547

4648
The dual object of some simple object $a$ of an arbitrary subcategory $\mathcal{C}_{ij}$ is defined as the unique object $a^* \in \mathcal{C}_{ji}$ satisfying
4749

48-
$$ ^{}_a \mathbb{1} \in a \times a^* \quad \text{and} \quad \mathbb{1}_a \in a^* \times a,$$
50+
$$^{}_a \mathbb{1} \in a \times a^* \quad \text{and} \quad \mathbb{1}_a \in a^* \times a,$$
4951

5052
with multiplicity 1.
5153
## Constructing the Hamiltonian and matrix product state
@@ -104,8 +106,9 @@ V = Vect[A4Object](M => D)
104106
Vb = Vect[A4Object](M => 1) # non-degenerate boundary virtual space
105107
init_mps = FiniteMPS(L, P, V; left=Vb, right=Vb)
106108
````
107-
> [!IMPORTANT]
108-
> 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 any `BimoduleSector` due to the semisimple unit.
109+
110+
!!! warning "Important"
111+
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 any `BimoduleSector` due to the semisimple unit.
109112

110113
## DMRG2 and the entanglement spectrum
111114
We can now look to find the ground state of the Hamiltonian with two-site DMRG. We use this instead of the "usual" one-site DMRG because the two-site one will smartly fill up the blocks of the local tensor during the sweep, allowing one to initialise as a product state in one block and more likely avoid local minima, a common occurence in symmetric tensor network simulations.
@@ -128,7 +131,13 @@ This plot will show the singular values per object, as well as include the "effe
128131

129132
## Search for the correct dual model
130133

131-
Consider a quantum lattice model with its symmetries determing the phase diagram. For every phase in the phase diagram, the dual model for which the ground state maximally breaks all symmetries spontaneously is the one where the entanglement is minimised and the tensor network is represented most efficiently [Lootens_2024](@cite). Let us confirm this result, starting with the $\mathsf{Rep(A_4)}$ spontaneous symmetry breaking phase.
134+
Consider a quantum lattice model with its symmetries determing the phase diagram. For every phase in the phase diagram, the dual model for which the ground state maximally breaks all symmetries spontaneously is the one where the entanglement is minimised and the tensor network is represented most efficiently [Lootens_2024](@cite). Let us confirm this result, starting with the $\mathsf{Rep(A_4)}$ spontaneous symmetry breaking phase. The code will look exactly the same as above, except the virtual space of the MPS will change to be graded by the other module categories:
135+
136+
````julia
137+
module_numlabels(i) = MultiTensorKit._numlabels(A4Object, i, 6)
138+
V = Vect[A4Object](A4Object(i, 6, label) => D for label in 1:module_numlabels(i))
139+
Vb = Vect[A4Object](c => 1 for c in first(sectors(V))) # not all charges on boundary, play around with what is there
140+
````
132141

133142

134143

0 commit comments

Comments
 (0)