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}$.

The truncated commutator

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

SymmetryPhysical meaningSector labelSingle-site block structure
Trivialnonefull $(\mathrm{cutoff}{+}1)×(\mathrm{cutoff}{+}1)$ matrix
U1Irrepboson-number conservationcharge $n ∈ \{0, …, \mathrm{cutoff}\}$$\mathrm{cutoff}{+}1$ one-dimensional blocks; $b^+$, $b^-$ not individually representable
U(1) charge = occupation number

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

FunctionAliasSitesSupported symmetries
boson_spaceTrivial, U1Irrep
basis_transformTrivial, U1Irrep
b_plusb⁺1Trivial
b_minb⁻1Trivial
b_numn1Trivial, U1Irrep
b_plus_b_plusb⁺b⁺2Trivial
b_plus_b_minb⁺b⁻2Trivial, U1Irrep
b_min_b_plusb⁻b⁺2Trivial, U1Irrep
b_min_b_minb⁻b⁻2Trivial
b_hoppingb_hop2Trivial, 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_hoppingMethod
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.

source
TensorKitTensors.BosonOperators.b_minMethod
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.

See also b_plus (its adjoint $b^+ = (b^-)^†$) and b_num.

source
TensorKitTensors.BosonOperators.b_min_b_minMethod
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).

source
TensorKitTensors.BosonOperators.b_min_b_plusMethod
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.

source
TensorKitTensors.BosonOperators.b_numMethod
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.

source
TensorKitTensors.BosonOperators.b_plusMethod
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.

See also b_min (its adjoint $b^- = (b^+)^†$) and b_num.

source
TensorKitTensors.BosonOperators.b_plus_b_minMethod
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.

source
TensorKitTensors.BosonOperators.b_plus_b_plusMethod
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).

source
TensorKitTensors.BosonOperators.basis_transformMethod
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.

source
TensorKitTensors.BosonOperators.boson_spaceFunction
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.

SymmetrySpace
TrivialComplexSpace(cutoff + 1)
U1IrrepU1Space(n => 1 for n in 0:cutoff), using the boson number as charge
Truncation

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.

source