Ladder
Set up
using QuantumHamiltonianParticle
electron_up, electron_dn = Fermion("e↑"), Fermion("e↓")
particle_sector = ParticleSector(electron_up, electron_dn)
cup(i) = ParticleLadderUnit(particle_sector, 1, i, ANNIHILATION)
cdn(i) = ParticleLadderUnit(particle_sector, 2, i, ANNIHILATION)
cupdag(i) = ParticleLadderUnit(particle_sector, 1, i, CREATION)
cdndag(i) = ParticleLadderUnit(particle_sector, 2, i, CREATION)Ladder Unit
julia> cup(10)
ParticleLadderUnit{ParticleSector{Tuple{Fermion{Symbol("e↑")}, Fermion{Symbol("e↓")}}}, Int64, Int64}(1, 10, ANNIHILATION)
julia> cup(10) == cup(10)
true
julia> cup(10) == cdn(10)
false
julia> exchangesign(cup(10), cup(3))
-1
julia> exchangesign(cup(10), cdn(3))
1
julia> maxoccupancy(cup(1))
1
julia> iszero(cup(1))
false
julia> adjoint(cup(10))
ParticleLadderUnit{ParticleSector{Tuple{Fermion{Symbol("e↑")}, Fermion{Symbol("e↓")}}}, Int64, Int64}(1, 10, CREATION)
julia> using LinearAlgebra
julia> ishermitian(cup(10))
false
julia> prettyprintln(cup(1))
ψ(e↑,1)Ladder Product
julia> cupdag(3) * cup(1)
ParticleLadderProduct{ParticleSector{Tuple{Fermion{Symbol("e↑")}, Fermion{Symbol("e↓")}}}, Int64, Int64}(ParticleLadderUnit{ParticleSector{Tuple{Fermion{Symbol("e↑")}, Fermion{Symbol("e↓")}}}, Int64, Int64}[ParticleLadderUnit{ParticleSector{Tuple{Fermion{Symbol("e↑")}, Fermion{Symbol("e↓")}}}, Int64, Int64}(1, 3, CREATION), ParticleLadderUnit{ParticleSector{Tuple{Fermion{Symbol("e↑")}, Fermion{Symbol("e↓")}}}, Int64, Int64}(1, 1, ANNIHILATION)])
julia> adjoint(cupdag(3) * cup(1))
ParticleLadderProduct{ParticleSector{Tuple{Fermion{Symbol("e↑")}, Fermion{Symbol("e↓")}}}, Int64, Int64}(ParticleLadderUnit{ParticleSector{Tuple{Fermion{Symbol("e↑")}, Fermion{Symbol("e↓")}}}, Int64, Int64}[ParticleLadderUnit{ParticleSector{Tuple{Fermion{Symbol("e↑")}, Fermion{Symbol("e↓")}}}, Int64, Int64}(1, 1, CREATION), ParticleLadderUnit{ParticleSector{Tuple{Fermion{Symbol("e↑")}, Fermion{Symbol("e↓")}}}, Int64, Int64}(1, 3, ANNIHILATION)])
julia> using LinearAlgebra
julia> ishermitian(cupdag(3) * cup(1))
false
julia> ishermitian(cupdag(1) * cup(1))
true
julia> prettyprintln(cupdag(3)*cdn(1))
ψ†(e↑,3)⋅ψ(e↓,1)