Skip to content

Commit 076ed21

Browse files
leburgelJutho
andauthored
Apply suggestions from code review
Co-authored-by: Jutho <[email protected]>
1 parent 67f2d01 commit 076ed21

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed

docs/src/appendix/symmetric_tutorial.md

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ using Test # for showcase testing
3131

3232
## Level 0: The 1-dimensional Ising model
3333

34-
As the most basic example, we will consider the
34+
As the most basic example, we consider the
3535
[1-dimensional transverse-field Ising model](https://en.wikipedia.org/wiki/Transverse-field_Ising_model),
3636
whose Hamiltonian is given by
3737

@@ -57,14 +57,14 @@ U = \prod_i X_i.
5757

5858
We will circle back to the implications of this symmetry later.
5959

60-
As a warmup we will implement the Hamiltonian \eqref{eq:isingham} in the standard way by
60+
As a warmup, we implement the Hamiltonian \eqref{eq:isingham} in the standard way by
6161
encoding the matrix elements of the single-site operators $X$ and $Z$ into an array of
6262
complex numbers, and then combine them in a suitable way to get the Hamiltonian terms.
63-
Instead of using plain Julia arrays, we will use a representation in terms of `TensorMap`s
64-
over complex vector spaces. These will essentially just be wrappers around base arrays at
63+
Instead of using plain Julia arrays, we use a representation in terms of `TensorMap`s
64+
over complex vector spaces. These are essentially just wrappers around base arrays at
6565
this point, but their construction requires some consideration of the notion of *spaces*,
6666
which generalize the notion of `size` for arrays. Each of the operators $X$ and $Z$ acts on
67-
a local 2-dimensional complex vector space. In the context of TensorKit.jl such a space can
67+
a local 2-dimensional complex vector space. In the context of TensorKit.jl, such a space can
6868
be represented as `ComplexSpace(2)`, or using the convenient shorthand `ℂ^2`. A single-site
6969
Pauli operator maps from a domain physical space to a codomain physical space, and can
7070
therefore be represented as instances of a `TensorMap(..., ℂ^2 ← ℂ^2)`. The corresponding
@@ -128,8 +128,8 @@ local symmetry transformation $X$ acts trivially on the state $\ket{+}$, corresp
128128
the *trivial irrep*, and yields a minus sign when acting on $\ket{-}$, corresponding to the
129129
*sign irrep*.
130130

131-
Next, let's make the statement that 'the matrix blocks of the local tensors are labeled by
132-
$\mathbb{Z}_2$ irreps' more concrete. To this end, consider the action of $ZZ$ in the irrep
131+
Next, let's make the statement that "the matrix blocks of the local tensors are labeled by
132+
$\mathbb{Z}_2$ irreps" more concrete. To this end, consider the action of $ZZ$ in the irrep
133133
basis, which is given by the four nonzero matrix elements
134134

135135
```math
@@ -164,7 +164,7 @@ irreps, the fusion rules are Abelian, and are given by addition modulo 2,
164164
To see how these fusion rules arise, we can consider the action of the symmetry
165165
transformation $XX$ on the possible two-site basis states, each of which corresponds to a
166166
tensor product of representations. We can see that $XX$ acts trivially on both $\ket{+}
167-
\otimes \ket{+}$ and $\ket{-} \otimes \ket{-}$ meaning these transform under the trivial
167+
\otimes \ket{+}$ and $\ket{-} \otimes \ket{-}$, meaning these transform under the trivial
168168
representation, which gives the first and last entries of the fusion rules. Similarly, $XX$
169169
acts with a minus sign on both $\ket{+} \otimes \ket{-}$ and $\ket{-} \otimes \ket{+}$,
170170
meaning these transform under the sign representation, which gives the second and third
@@ -238,7 +238,7 @@ fields:
238238
- `vertices::NTuple{L,T}`: list of fusion vertex labels of type `T` and length `L = N - 1`
239239

240240
For our current application only `uncoupled` and `coupled` are relevant, since
241-
$\mathbb{Z}_2$ irreps are self-dual and have Abelian fusion rules. We will come back to
241+
$\mathbb{Z}_2$ irreps are self-dual and have Abelian fusion rules, so that irreps on the inner lines of a fusion tree are completely determined by the uncoupled irreps. We will come back to
242242
these other properties when discussion more involved applications. Given some `TensorMap`,
243243
the method `TensorKit.fusiontrees(t::TensorMap)` returns an iterator over all pairs of
244244
splitting and fusion trees that label the subblocks of `t`.
@@ -316,7 +316,7 @@ Given these local operators, we can use them to construct the full manifestly
316316
$\mathbb{Z}_2$-symmetric Hamiltonian.
317317

318318
!!! note
319-
An important observation is that when explicitly imposing the $\mathbb{Z}_2$ symmetry we
319+
An important observation is that, when explicitly imposing the $\mathbb{Z}_2$ symmetry, we
320320
directly constructed the full $ZZ$ operator as a single symmetric tensor. This in contrast
321321
to the case without symmetries, where we constructed a single-site $Z$ operator and then
322322
combined them into a two-site operator. Clearly this can no longer be done when imposing
@@ -329,7 +329,7 @@ $\mathbb{Z}_2$-symmetric Hamiltonian.
329329

330330
## Level 2: The $\mathrm{U}(1)$ Bose-Hubbard model
331331

332-
For our next example we will consider the
332+
For our next example, we consider the
333333
[Bose-Hubbard model](https://en.wikipedia.org/wiki/Bose%E2%80%93Hubbard_model), which
334334
describes interacting bosons on a lattice. The Hamiltonian of this model is given by
335335
```math
@@ -366,7 +366,7 @@ U = \sum_i N_i
366366
```
367367
This invariance corresponds to a $\mathrm{U}(1)$ particle number symmetry, which can again
368368
be manifestly imposed when constructing the Hamiltonian terms as `TensorMap`s. From the
369-
representation theory of $\mathrm{U}(1)$ we know that it's irreps are all one-dimensional
369+
representation theory of $\mathrm{U}(1)$, we know that its irreps are all one-dimensional
370370
and can be labeled by integers $n$ where the tensor product of two irreps is corresponds to
371371
addition of these labels, giving the Abelian fusion rules
372372
```math
@@ -542,7 +542,7 @@ in terms of fusion trees and corresponding subblocks, the symmetries considered
542542
been quite 'simple' in the sense that sectors corresponding to irreps of $\mathbb{Z}_2$ and
543543
$\mathrm{U}(1)$ have [*Abelian fusion rules*](@ref FusionStyle) and
544544
[*bosonic exchange statistics*](@ref BraidingStyle).
545-
This means that the fusion of two irreps always gives a single irrep as the fusion product,
545+
This means that the fusion of two irreps always gives a unique irrep as the fusion product,
546546
and that exchanging two irreps in a tensor product is trivial. In practice, this implies
547547
that for tensors with these symmetries the fusion trees are completely fixed by the
548548
uncoupled charges, which uniquely define both the inner lines and the coupled charge, and
@@ -730,7 +730,7 @@ the `subblocks` of each tensor.
730730
symmetric tensors that correspond to the symmetric Hamiltonian terms was still quite
731731
straightforward, it is far less clear in this case how to construct these terms as
732732
contractions of local symmetric tensors representing individual creation and annihilation
733-
operators in this case. While such a decomposition can always be in principle obtained using
733+
operators. While such a decomposition can always be in principle obtained using
734734
a (now explicitly fermionic) SVD, manually constructing such tensors as we did in the
735735
bosonic case is far from trivial. Trying this would be a good exercise in working with
736736
fermionic symmetries, but it is not something we will do here.
@@ -790,7 +790,7 @@ irreps, $V^{(l_1)} \otimes V^{(l_2)} \cong \bigoplus_{k} V^{(k)}$. The precise n
790790
this decomposition, also refered to as the *Clebsch-Gordan problem*, is given by the
791791
so-called *Clebsch-Gordan coefficients*, which we will denote as $C^{k}_{l_1,l_2}$. This set
792792
of coefficients, which can be interpreted as a $\text{dim}\left( V^{(l_1)} \right) \times
793-
\text{dim}\left( V^{(l_2)} \right) \times \text{dim}\left( V^{(k)} \right)$ array, that
793+
\text{dim}\left( V^{(l_2)} \right) \times \text{dim}\left( V^{(k)} \right)$ array,
794794
encodes how a basis state $\ket{k,n} \in V^{(k)}$ corresponding to some term in the direct
795795
sum can be decomposed into a linear combination of basis vectors $\ket{l_1,m_1} \otimes
796796
\ket{l_2,m_2}$ of the tensor product space:
@@ -842,7 +842,7 @@ is equal to $2l + 1$. The fusion rules of $\mathrm{SU}(2)$ are given by
842842
```math
843843
\begin{equation}
844844
\label{eq:su2_fusion_rules}
845-
l_1 \otimes l_2 \cong \bigoplus_{k=|l_1-l_2|}^{l_1+l_2}s.
845+
l_1 \otimes l_2 \cong \bigoplus_{k=|l_1-l_2|}^{l_1+l_2}k.
846846
\end{equation}
847847
```
848848
These are clearly non-Abelian since multiple terms appear on the right hand side, for
@@ -902,10 +902,10 @@ associated to the corresponding irrep fusion tree.
902902
```
903903

904904
This procedure works for any group symmetry, and all we need are matrix elements of the
905-
operator in the irrep basis and the Clebsch-Gordan coefficients. In the following we
905+
operator in the irrep basis and the Clebsch-Gordan coefficients. In the following, we
906906
demonstrate this explicit procedure for the particular example of $G = \mathrm{SU}(2)$.
907-
However, it should be noted that for general groups the Clebsch-Gordan coefficients may not
908-
be as easy to compute (in general, no closed formulas exist). In addition, the procedure for
907+
However, it should be noted that, for other non-Abelian groups, the Clebsch-Gordan coefficients may not
908+
be as easy to compute (generically, no closed formulas exist). In addition, the procedure for
909909
manually projecting out the reduced tensor elements requires being particularly careful
910910
about the correspondence between the basis states used to define the original matrix
911911
elements and those implied by the Clebsch-Gordan coefficients. Finally, for some symmetries
@@ -916,7 +916,7 @@ some examples of this below.
916916

917917
Having introduced and demonstrated the Clebsch-Gordan decomposition, the corresponding
918918
coefficients and their role in symmetric tensors for the example of $\mathrm{SU}(2)$ using
919-
the WignerSymbols.jl package, we'll continue our discussion using only TensorKit.jl
919+
the WignerSymbols.jl package, we now continue our discussion using only TensorKit.jl
920920
internals. Within TensorKit.jl, the
921921
$\text{dim}\left( V^{(l_1)} \right) \times \text{dim}\left( V^{(l_2)} \right) \times \text{dim}\left( V^{(k)} \right)$
922922
array of coefficients that encodes the splitting of the irrep space $V^{(k)}$ to the tensor
@@ -978,7 +978,7 @@ nothing #hide
978978
```
979979

980980
The next step is to project out the reduced tensor elements by taking the overlap with the
981-
appropriate Clebsch-Gordan coefficients. In our current case of a spin-1 physical space we
981+
appropriate Clebsch-Gordan coefficients. In our current case of a spin-1 physical space, we
982982
have $l_1 = l_2 = l_3 = l_4 = 1$, and the coupled irrep $k$ can therefore take the values
983983
$0, 1, 2$. The reduced tensor element for a given $k$ can be implemented in the
984984
following way:
@@ -1041,7 +1041,7 @@ subblocks(SS)
10411041
We demonstrated this entire procedure of extracting the reduced tensor elements of a
10421042
symmetric tensor map for each fusion tree by projecting out the corresponding fusion tensors
10431043
as an explicit illustration of how symmetric tensor maps work under the hood. In practice
1044-
however, there's no need to perform this procedure explicitly. Given a dense array
1044+
however, there is no need to perform this procedure explicitly. Given a dense array
10451045
representing the matrix elements of a tensor map in the irrep basis, we can convert this to
10461046
the corresponding symmetric tensor map by passing the data array to the `TensorMap`
10471047
constructor along with the corresponding spaces,
@@ -1060,7 +1060,7 @@ SS_auto = TensorMap(SS_arr, V ⊗ V ← V ⊗ V)
10601060
number $m = -1, 0, 1$, seems quite natural, for many symmetries there is no transparent
10611061
natural choice. In those cases, the only way to use this approach is to explicitly check the
10621062
basis convention used by [`TensorKitSectors.fusiontensor`](@ref) for that specific symmetry.
1063-
On top of thes, there's some additional complications when considering graded spaces which
1063+
On top of this, there are some additional complications when considering graded spaces which
10641064
contain multiple sectors with non-trivial degeneracies. In that case, to even initialize the
10651065
dense data array in the first place, you would need to know the order in which the sectors
10661066
appear in each space internally. This information can be obtained by calling `axes(V, c)`,
@@ -1080,7 +1080,7 @@ for the Heisenberg model. First, we rewrite the exchange interaction in the foll
10801080
\vec{S}_i \cdot \vec{S}_j = \frac{1}{2} \left( \left( \vec{S}_i + \vec{S}_j \right)^2 - \vec{S}_i^2 - \vec{S}_j^2 \right)
10811081
\end{equation}
10821082
```
1083-
Here, $\vec{S}_i$ and $\vec{S}_j$ are spin operators on the physcial irrep, while total spin
1083+
Here, $\vec{S}_i$ and $\vec{S}_j$ are spin operators on the physical irrep, while total spin
10841084
operator $\vec{S}_i + \vec{S}_j$ can be decomposed onto the different coupled irreps $k$. It
10851085
is a well known fact that the quadratic sum of the generators of $\mathrm{SU}(2)$, often
10861086
refered to as the
@@ -1287,5 +1287,5 @@ subblocks(h)
12871287
However, for categorical symmetries such as the Fibonacci anyons, there are no
12881288
Clebsch-Gordan coefficients. Therefore, the 'matrix elements of the operator in the irrep
12891289
basis' are not well-defined, meaning that a Fibonacci-symmetric tensor cannot actually be
1290-
converted to a plain array in a meaningful way.
1290+
converted to a plain array in a straightforward way.
12911291

0 commit comments

Comments
 (0)