QuantumSymbolics.jl reference

You can also consult the complete QuantumSymbolics.jl documentation.

Autogenerated API list for QuantumSymbolics

QuantumSymbolics.CreateConstant
Create

Creation operator, also available as the constant âꜛ, in an infinite dimension Fock basis. There is no unicode dagger superscript, so we use the uparrow

source
QuantumSymbolics.NConstant
N

Number operator, also available as the constant , in an infinite dimension Fock basis.

source
QuantumSymbolics.AmplifierCPTPType
AmplifierCPTP(r::Number, noise::Int)

Amplification CPTP map, defined by the squeezing amplitude parameter r and thermal noise parameter noise.

source
QuantumSymbolics.AttenuatorCPTPType
AttenuatorCPTP(theta::Number, noise::Int)

Attenuation CPTP map, defined by the beam splitter rotation parameter theta and thermal noise parameter noise.

source
QuantumSymbolics.CreateOpType
struct CreateOp <: QuantumSymbolics.AbstractSingleBosonOp

Creation (raising) operator.

julia> f = FockState(2)|2⟩julia> create = CreateOp()a†julia> qsimplify(create*f, rewriter=qsimplify_fock)(sqrt(3))|3⟩
source
QuantumSymbolics.DestroyOpType
struct DestroyOp <: QuantumSymbolics.AbstractSingleBosonOp

Annihilation (lowering or destroy) operator in defined Fock basis.

julia> f = FockState(2)|2⟩julia> destroy = DestroyOp()ajulia> qsimplify(destroy*f, rewriter=qsimplify_fock)(sqrt(2))|1⟩
source
QuantumSymbolics.DisplaceOpType
struct DisplaceOp <: QuantumSymbolics.AbstractSingleBosonGate

Displacement operator in defined Fock basis.

julia> f = FockState(0)|0⟩julia> displace = DisplaceOp(im)D(im)julia> qsimplify(displace*f, rewriter=qsimplify_fock)|im⟩
source
QuantumSymbolics.IdentityOpType

The identity operator for a given basis

julia> IdentityOp(X1⊗X2)
𝕀

julia> express(IdentityOp(Z2))
Operator(dim=2x2)
  basis: Spin(1/2)sparse([1, 2], [1, 2], ComplexF64[1.0 + 0.0im, 1.0 + 0.0im], 2, 2)
source
QuantumSymbolics.KrausReprType

Kraus representation of a quantum channel

julia> @op A₁; @op A₂; @op A₃;julia> K = kraus(A₁, A₂, A₃)𝒦(A₁,A₂,A₃)julia> @op ρ;julia> K*ρA₁ρA₁†+A₂ρA₂†+A₃ρA₃†
source
QuantumSymbolics.MixedStateType
struct MixedState <: SymQObj{QuantumInterface.AbstractOperator}

Completely depolarized state

julia> MixedState(X1X2)𝕄julia> express(MixedState(X1X2))Operator(dim=4x4)  basis: [Spin(1/2) ⊗ Spin(1/2)] 0.25 + 0.0im        ⋅             ⋅             ⋅            ⋅       0.25 + 0.0im        ⋅             ⋅       ⋅             ⋅       0.25 + 0.0im        ⋅       ⋅             ⋅             ⋅       0.25 + 0.0imjulia> express(MixedState(X1X2), CliffordRepr())𝒟ℯ𝓈𝓉𝒶𝒷 𝒳ₗ━━+ X_+ _X𝒮𝓉𝒶𝒷 𝒵ₗ━━+ Z_+ _Z
source
QuantumSymbolics.PhaseShiftOpType
struct PhaseShiftOp <: QuantumSymbolics.AbstractSingleBosonGate

Phase-shift operator in defined Fock basis.

julia> c = CoherentState(im)|im⟩julia> phase = PhaseShiftOp(pi)U(π)julia> qsimplify(phase*c, rewriter=qsimplify_fock)|1.2246467991473532e-16 - 1.0im⟩
source
QuantumSymbolics.SPartialTraceType

Partial trace over system i of a composite quantum system

julia> @op 𝒪 SpinBasis(1//2)SpinBasis(1//2);julia> op = ptrace(𝒪, 1)tr1(𝒪)julia> QuantumSymbolics.basis(op)Spin(1/2)julia> @op A; @op B;julia> ptrace(AB, 1)(tr(A))Bjulia> @ket k; @bra b;julia> factorizable = A  (k*b)A⊗|k⟩⟨b|julia> ptrace(factorizable, 1)(tr(A))|k⟩⟨b|julia> ptrace(factorizable, 2)(⟨b||k⟩)Ajulia> mixed_state = (A(k*b)) + ((k*b)B)(A⊗|k⟩⟨b|)+(|k⟩⟨b|⊗B)julia> ptrace(mixed_state, 1)(tr(A))|k⟩⟨b|+(⟨b||k⟩)Bjulia> ptrace(mixed_state, 2)(tr(B))|k⟩⟨b|+(⟨b||k⟩)A
source
QuantumSymbolics.SqueezeOpType
struct SqueezeOp <: QuantumSymbolics.AbstractSingleBosonGate

Squeezing operator in defined Fock basis.

julia> S = SqueezeOp(pi)S(π)julia> qsimplify(S*vac, rewriter=qsimplify_fock)|0,π⟩
source
QuantumSymbolics.StabilizerStateType
struct StabilizerState{T} <: SymQObj{QuantumInterface.AbstractKet}

State defined by a stabilizer tableau

For full functionality you also need to import the QuantumClifford library.

julia> using QuantumClifford, QuantumOptics # needed for the internal representation of the stabilizer tableaux and the conversion to a ketjulia> StabilizerState(S"XX ZZ")𝒮₂julia> express(StabilizerState(S"-X"))Ket(dim=2)  basis: Spin(1/2)  0.7071067811865475 + 0.0im -0.7071067811865475 + 0.0im
source
Base.conjMethod
conj(x::Symbolic{AbstractKet})
conj(x::Symbolic{AbstractBra})
conj(x::Symbolic{AbstractOperator})
conj(x::Symbolic{AbstractSuperOperator})

Symbolic complex conjugate operation. See also SConjugate.

source
Base.vecMethod
vec(x::Symbolic{AbstractOperator})

Symbolic vector representation of an operator. See also SVec.

source
QuantumInterface.expressMethod
express(s, repr::AbstractRepresentation=QuantumOpticsRepr()[, use::AbstractUse])

The main interface for expressing symbolic quantum objects in various representations.

julia> express(X1)Ket(dim=2)  basis: Spin(1/2) 0.7071067811865475 + 0.0im 0.7071067811865475 + 0.0imjulia> express(X1, CliffordRepr())𝒟ℯ𝓈𝓉𝒶𝒷+ Z𝒮𝓉𝒶𝒷+ Xjulia> express(QuantumSymbolics.X)Operator(dim=2x2)  basis: Spin(1/2)      ⋅       1.0 + 0.0im 1.0 + 0.0im       ⋅julia> express(QuantumSymbolics.X, CliffordRepr(), UseAsOperation())sXjulia> express(QuantumSymbolics.X, CliffordRepr(), UseAsObservable())+ X
source
QuantumSymbolics.qexpandMethod
qexpand(s)

Manually expand a symbolic expression of quantum objects.

julia> @op A; @op B; @op C;julia> qexpand(commutator(A, B))-1BA+ABjulia> qexpand(A(B+C))(A⊗B)+(A⊗C)julia> @ket k₁; @ket k₂;julia> qexpand(A*(k₁+k₂))A|k₁⟩+A|k₂⟩
source
QuantumSymbolics.qsimplifyMethod
qsimplify(s; rewriter=nothing)

Manually simplify a symbolic expression of quantum objects.

If the keyword rewriter is not specified, then qsimplify will apply every defined rule to the expression. For performance or single-purpose motivations, the user has the option to define a specific rewriter for qsimplify to apply to the expression. The defined rewriters for simplification are the following objects: - qsimplify_pauli - qsimplify_commutator - qsimplify_anticommutator - qsimplify_fock

julia> qsimplify(σʸ*commutator(σˣ*σᶻ, σᶻ))(0 - 2im)Zjulia> qsimplify(anticommutator(σˣ, σˣ), rewriter=qsimplify_anticommutator)2𝕀
source
QuantumSymbolics.@braMacro
@bra(name, basis=SpinBasis(1//2))

Define a symbolic bra of type SBra. By default, the defined basis is the spin-1/2 basis.

julia> @bra b₁⟨b₁|julia> @bra b₂ FockBasis(2)⟨b₂|
source
QuantumSymbolics.@ketMacro
@ket(name, basis=SpinBasis(1//2))

Define a symbolic ket of type SKet. By default, the defined basis is the spin-1/2 basis.

julia> @ket k₁|k₁⟩julia> @ket k₂ FockBasis(2)|k₂⟩
source
QuantumSymbolics.@opMacro
@op(name, basis=SpinBasis(1//2))

Define a symbolic operator of type SOperator. By default, the defined basis is the spin-1/2 basis.

julia> @op AAjulia> @op B FockBasis(2)B
source