QuantumSymbolics.jl reference

You can also consult the complete QuantumSymbolics.jl documentation.

Autogenerated API list for QuantumSymbolics

QuantumSymbolics.Create — Constant
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.N — Constant
N

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

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

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

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

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

source
QuantumSymbolics.CreateOp — Type
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.DestroyOp — Type
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.DisplaceOp — Type
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.IdentityOp — Type

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.KrausRepr — Type

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.MixedState — Type
struct MixedState <: SymQObj{QuantumInterface.AbstractOperator}

Completely depolarized state

julia> MixedState(X1⊗X2)𝕄julia> express(MixedState(X1⊗X2))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(X1⊗X2), CliffordRepr())𝒟ℯ𝓈𝓉𝒶𝒷 𝒳ₗ━━+ X_+ _X𝒮𝓉𝒶𝒷 𝒵ₗ━━+ Z_+ _Z
source
QuantumSymbolics.PhaseShiftOp — Type
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.SPartialTrace — Type

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(A⊗B, 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.SqueezeOp — Type
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.StabilizerState — Type
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.conj — Method
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.vec — Method
vec(x::Symbolic{AbstractOperator})

Symbolic vector representation of an operator. See also SVec.

source
QuantumInterface.express — Method
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.qexpand — Method
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.qsimplify — Method
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.@bra — Macro
@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.@ket — Macro
@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.@op — Macro
@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