Boson operators
Operators for a truncated bosonic mode, keeping at most cutoff bosons per site. The truncation is not optional: every function in this module takes cutoff as a required keyword argument, e.g. b_num(; cutoff = 4).
Conventions
Basis ordering
The local space is spanned by the occupation-number states in ascending order, so that its dimension is $\mathrm{cutoff} + 1$:
\[|0⟩,\; |1⟩,\; …,\; |\mathrm{cutoff}⟩ \quad \text{(row/column 1 = vacuum)}\]
In this basis the creation and annihilation operators have the usual matrix elements, with the square root set by the occupation of the higher of the two states,
\[⟨n-1 | b^- | n⟩ = ⟨n | b^+ | n-1⟩ = √n, \qquad n = 1, …, \mathrm{cutoff}\]
so that $b^- |0⟩ = 0$ and $b^+ |\mathrm{cutoff}⟩ = 0$, while $n = b^+ b^-$ is diagonal with eigenvalues $0, 1, …, \mathrm{cutoff}$.
Truncating the mode breaks the canonical commutation relation in the top state:
\[[b^-, b^+] = 1 - (\mathrm{cutoff}{+}1)\,|\mathrm{cutoff}⟩⟨\mathrm{cutoff}|\]
i.e. $⟨\mathrm{cutoff} | [b^-, b^+] | \mathrm{cutoff}⟩ = -\mathrm{cutoff}$ instead of $1$. Every operator of this module is exact within the truncated space; only relations that involve states above the cutoff are affected.
Symmetry sectors
| Symmetry | Physical meaning | Sector label | Single-site block structure |
|---|---|---|---|
Trivial | none | — | full $(\mathrm{cutoff}{+}1)×(\mathrm{cutoff}{+}1)$ matrix |
U1Irrep | boson-number conservation | charge $n ∈ \{0, …, \mathrm{cutoff}\}$ | $\mathrm{cutoff}{+}1$ one-dimensional blocks; $b^+$, $b^-$ not individually representable |
The $U(1)$ charge is the boson number itself, and the charge sectors are ordered as 0:cutoff, which coincides with the occupation-number basis. The basis transformation onto the symmetric space is therefore the identity, and every symmetric operator is elementwise equal to its Trivial counterpart.
Only the boson-number conserving operators are representable: b_num, b_plus_b_min, b_min_b_plus and b_hopping. The operators that change the boson number — b_plus, b_min, b_plus_b_plus and b_min_b_min — throw an ArgumentError when requested with U1Irrep.
Operator overview
| Function | Alias | Sites | Supported symmetries |
|---|---|---|---|
boson_space | — | — | Trivial, U1Irrep |
basis_transform | — | — | Trivial, U1Irrep |
b_plus | b⁺ | 1 | Trivial |
b_min | b⁻ | 1 | Trivial |
b_num | n | 1 | Trivial, U1Irrep |
b_plus_b_plus | b⁺b⁺ | 2 | Trivial |
b_plus_b_min | b⁺b⁻ | 2 | Trivial, U1Irrep |
b_min_b_plus | b⁻b⁺ | 2 | Trivial, U1Irrep |
b_min_b_min | b⁻b⁻ | 2 | Trivial |
b_hopping | b_hop | 2 | Trivial, U1Irrep |
Note that the bosonic hopping operator is the sum $b^+_1 b^-_2 + b^-_1 b^+_2$, in contrast with the fermionic one of FermionOperators, where the anticommutation sign turns the same hermitian combination into a difference.
API
TensorKitTensors.BosonOperators.b_hopping — Method
b_hopping([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)
b_hop([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)Return the two-body operator that describes a boson hopping between the first and the second site,
\[b_\mathrm{hop} = b^+_1 b^-_2 + b^-_1 b^+_2 = b^+_1 b^-_2 + (b^+_1 b^-_2)^†,\]
which is hermitian. Note the plus sign: unlike its fermionic counterpart, $b^-_1 b^+_2$ is the plain adjoint of $b^+_1 b^-_2$ and carries no additional sign.
Supported symmetries: Trivial, U1Irrep.
See also b_plus_b_min and b_min_b_plus.
TensorKitTensors.BosonOperators.b_min — Method
b_min([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)
b⁻([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)The truncated bosonic annihilation operator, with matrix elements $⟨n-1 | b^- | n⟩ = √n$ for $n = 1, …, \mathrm{cutoff}$, such that $b^- |0⟩ = 0$.
Supported symmetries: Trivial.
TensorKitTensors.BosonOperators.b_min_b_min — Method
b_min_b_min([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)
b⁻b⁻([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)The truncated bosonic pair-annihilation operator $b^- ⊗ b^-$, which lowers the boson number of both sites by one and therefore changes the total boson number by two.
Supported symmetries: Trivial.
See also b_plus_b_plus (its adjoint).
TensorKitTensors.BosonOperators.b_min_b_plus — Method
b_min_b_plus([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)
b⁻b⁺([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)The truncated bosonic right-hopping operator $b^- ⊗ b^+$, which moves a boson from the first to the second site.
Supported symmetries: Trivial, U1Irrep.
See also b_plus_b_min (its adjoint) and b_hopping.
TensorKitTensors.BosonOperators.b_num — Method
b_num([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)
n([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)The truncated bosonic number operator $n = b^+ b^-$, diagonal in the occupation-number basis with eigenvalues $0, 1, …, \mathrm{cutoff}$.
Supported symmetries: Trivial, U1Irrep.
TensorKitTensors.BosonOperators.b_plus — Method
b_plus([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)
b⁺([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)The truncated bosonic creation operator, with matrix elements $⟨n | b^+ | n-1⟩ = √n$ for $n = 1, …, \mathrm{cutoff}$. The truncation removes the transition out of the top state, $b^+ |\mathrm{cutoff}⟩ = 0$, see boson_space.
Supported symmetries: Trivial.
TensorKitTensors.BosonOperators.b_plus_b_min — Method
b_plus_b_min([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)
b⁺b⁻([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)The truncated bosonic left-hopping operator $b^+ ⊗ b^-$, which moves a boson from the second to the first site.
Supported symmetries: Trivial, U1Irrep.
See also b_min_b_plus (its adjoint) and b_hopping.
TensorKitTensors.BosonOperators.b_plus_b_plus — Method
b_plus_b_plus([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)
b⁺b⁺([elt::Type{<:Number}], [symmetry::Type{<:Sector}]; cutoff::Integer)The truncated bosonic pair-creation operator $b^+ ⊗ b^+$, which raises the boson number of both sites by one and therefore changes the total boson number by two.
Supported symmetries: Trivial.
See also b_min_b_min (its adjoint).
TensorKitTensors.BosonOperators.basis_transform — Method
basis_transform(symmetry::Type{<:Sector}; cutoff::Integer)Return the unitary basis transformation that maps the occupation-number basis $\{|0⟩, |1⟩, …, |\mathrm{cutoff}⟩\}$ of boson_space(Trivial; cutoff) onto the basis of boson_space(symmetry; cutoff), as a TensorMap from boson_space(Trivial; cutoff) to desymmetrize(boson_space(symmetry; cutoff)), as required by symmetrize.
For U1Irrep, the boson number is used as the $U(1)$ charge, and the charge sectors are ordered as 0:cutoff. This coincides with the occupation-number basis, such that the transformation is the identity.
The transformations have exact integer entries and are therefore returned with integer scalar type, such that they promote to any scalar type without loss of precision.
TensorKitTensors.BosonOperators.boson_space — Function
boson_space([symmetry::Type{<:Sector}]; cutoff::Integer)The local Hilbert space for a truncated bosonic mode with at most cutoff bosons, spanned by the occupation-number basis $\{|0⟩, |1⟩, …, |\mathrm{cutoff}⟩\}$, such that its dimension is cutoff + 1. The cutoff is a required keyword argument.
| Symmetry | Space |
|---|---|
Trivial | ComplexSpace(cutoff + 1) |
U1Irrep | U1Space(n => 1 for n in 0:cutoff), using the boson number as charge |
Since $b^+ |\mathrm{cutoff}⟩ = 0$, the truncation breaks the canonical commutation relation in the top state: $[b^-, b^+] = 1 - (\mathrm{cutoff}+1) |\mathrm{cutoff}⟩⟨\mathrm{cutoff}|$. All operators of this module are exact within the truncated space; only relations that involve states above the cutoff are affected.