A triangular operator represents an infinite sum of translations of a finite operator, and polynomials of these functions.
Construction
The main method of constructing a triangular operator is via sum_unit
. sum_unit(X(0))
represents the infinite sum
{$\sum_n X(n)$}
where X
is an arbitrary finite operator. The cell index is required, but the value is irrelevant, since it sums over all unit cells.
It is possible to construct triangular operators that act on a larger unit cell, via an optional parameter sum_unit(cells=N,X(0))
constructs the infinite sum ...+X(-N)+X(0)+X(N)+X(2*N)+...
. Now the cell index for X is important, because it gives an offset within the N unit cells. It is also possible to specify sites=x
instead of cells
. But the number of sites must anyway be a multiple of the lattice unit cell size.
Finite momentum
It is possible to also construct operators at finite momentum, for example
{$X_k = \sum_n e^{-ikn} X(n)$}
This is done with the function sum_k(k, X(0))
. For example, sum_k(pi, X(0))
is the operator X
at momentum {$\pi$}, which gives, for example, a staggered order paremeter. In this case, sum_k(pi, X(0))
is roughly equivalent to sum_unit(cells=2, X(0)-X(1))
, although the MPO representation is different (in the first case, the MPO is 1-cell translationally invariant, in the second case it is 2-cell translationally invariant). sum_k()
also allows the optional cells=
or sites=
parameters.
Kink operators
A kink operator is a generalization of a momentum operator. For example, a string correlation can be written as an ordinary correlation of kink operators. Kink operators are also generated implicitly by fermion operators. sum_kink(K(0), X(0))
represents the operator
{$ \sum_i \left( \Pi_{j<i} K_j \right) X_i $}
sum_k(k,X(0))
is equivalent to sum_kink(k*I(0), X(0))
.
Expressions
If A
and B
are triangular operators, then the following expressions are valid:
a*A
, where a
is a scalar
A+B
A*B
[A,B]
A^2
A^N
, where N
is an integer. This is calculated by repeated squaring.
- inner(A,B) -- equivalent to
dot(adjoint(A),B)
.
- dot(A,B)
- conj(A)
- adjoint(A)
cross(A,B)
-- only if A
and B
are {$SU(2)$} spin-1 vector operators.
outer(A,B)
-- outer product, only useful for non-abelian operators.
Addition of a triangular operator and a scalar is not defined. Nor is addition or multiplication of a triangular operator and a finite or product operator.