Basic concepts#

Tensors#

Tensors are multilinear maps from products of several vector spaces

\[T:\quad V^i\otimes V^j\otimes V^k\otimes...\otimes V_a\otimes V_b\otimes V_c\otimes... \rightarrow scalar,\]

where \(V^j\) and \(V_j\) refers to vector space that is either covariant or contravariant with respect to transformations acting on these spaces. YASTN refers to individual spaces \(V\) as ‘’legs``. The tensor \(T\) expressed in bases and components is

\[T = \sum_{abc...ijk...} T^{abc...}_{ijk...} e^ie^je^k...e_ae_be_c...\]

For tensors we introduce graphical notation where shapes represent tensors and lines protruding from the shape (legs) correspond to individual vector spaces

(generic) tensor,    matrix,             vector
      ___
V^i--|   |--V_a            ___                 _
V^j--| T |--V_b      V^i--|_M_|--V_a     V^i--|W|
V^k--|   |--V_c
  ...|___|...

Note

YASTN defines a vector space and its abelian symmetry structure through yastn.Leg.

In quantum mechanics, we introduce an operator

\[T = \sum_{abc...ijk...} T^{abc...}_{ijk...} |i \rangle|j \rangle|k \rangle ... \langle a |\langle b |\langle c |...\]

where due to different actions of symmetry transformations vector spaces are split between \(\langle bra |\) and \(|ket \rangle\) spaces, or Hilbert space \(\mathcal{H}\) and its dual \(\mathcal{H}^*\). In YASTN, similar to other implementations (see below), the distinction between \(\langle bra |\) and \(|ket \rangle\) spaces, is encoded through ‘’signature`` atribute of yastn.Leg assigned to a tensor.

Note

Signature of the tensor, i.e, yastn.Tensor.s, is a tuple of signs \(\pm 1\) matching signatures of individual legs.

Action of abelian symmetry#

For any element \(g\) of abelian group \(G\), its action on tensor elements \(T^{ab...}_{ij...}\) in a proper basis can be represented by diagonal matrices \(U(g)\) acting on each of the vector spaces

\[(gT)^{ab...}_{ij...} = \sum_{a'b'...i'j'...} T^{a'b'...}_{i'j'...} [U(g)^*]^{a}_{a'} [U(g)^*]^{b}_{b'} ... {U(g)}^{i'}_{i} {U(g)}^{j'}_{j}...,\]

where the elements of \(U(g)\) are complex phases defined by charges \(t_i\). In YASTN the charges are integers \(t_i\in\mathbb{Z}\) or their subset. They are related to symmetry transformation

\[U(g)^j_k=\exp(-i\theta_g t_j)\delta_{jk}\]

where \(\delta_{jk}\) is a Kronecker delta and the angle \(\theta_g \in [0,2\pi)\) depends on \(g \in G\). The structure gives a simple selection rule that all symmetric tensors must obey.

Taking group element \(g \in G\) for all non-zero elements of \(T\), it must hold that

\[(gT)^{ab...}_{ij...} = T^{ab...}_{ij...}exp[i\theta_g(t_a+t_b+...-t_i-t_j-...)].\]

The selection rule can be equivalently expressed as charge conservation

\[\sum_j s_{j} t_{j} = n\]

where \(s_j\) is the signature and \(t_j\) is the change of corresponding sectors. For example, for the tensor \(T\) inthe examples above

\[t_a+t_b+...-t_i-t_j-... = n\]

with total charge of the tensor \(n\) being independent of tensor elements \(T^{ab...}_{ij...}\). For \(n=0\) a tensor is invariant (unchanged) under the action of the symmetry. Otherwise, it transforms covariantly as all its elements are altered by the same complex phase \(\exp(i\theta_g n)\).

The charges \(t_i,\ n\) and precise form of their addition \(+\) depends on the abelian group considered.

Note

Examples for selected groups#

  • \(\mathbf{U(1)}\): allowed charges are integers \(t_i \in \mathbb{Z}\) with usual integer addition

    and \(\theta_g\) is usual angle \(\theta_g \in [0,2\pi)\).

  • \(\mathbf{Z_2}\): allowed charges are a subset of integers \(t_i \in \{0,1\}\) with addition \(\textrm{mod 2}\).

    Two elements of the group map to angles \(\{0,1\}\xrightarrow{\theta} \{0,\pi\}\).

  • \(\mathbf{Z_2 \times U(1)}\): direct product of two symmetries lead to allowed charges

    that are individual group charges accummulated in a vector \(t_i \in \{0,1\} \otimes \mathbb{Z}\). The addition is distributed, i.e.,

\[\begin{split}t_i+t'_i := \begin{pmatrix} t_{i,0} \\ t_{i,1} \end{pmatrix} + \begin{pmatrix} t'_{i,0} \\ t'_{i,1} \end{pmatrix} = \begin{pmatrix} t_{i,0} + t'_{i,0}\ \textrm{mod}\ 2\\ t'_{i,1} + t'_{i,1} \end{pmatrix}\end{split}\]

Note

See the above examples and how YASTN defines symmetries in API docs.

Conjugation#

Conjugation of a tensor acts such as all tensor elements are complex-conjugated, tensor leg signature is flipped by replacing \(\pm 1 \to \mp 1\) in leg signature yastn.Tensor.s, and, similarly, the total charge is flipped \(n \to -n\). In the latter, the change of a sign by \(-\) depends on the abelian group.

Individual flip of the signature of a specific leg is also possible and is accompanied by negation of charges on that leg.

Note

See API docs, for various types of conjugation.