QuantumSymbolics.jl reference
You can also consult the complete QuantumSymbolics.jl documentation.
Autogenerated API list for QuantumSymbolics
QuantumSymbolics.CNOT — Constant
CNOTCNOT gate
QuantumSymbolics.CPHASE — Constant
CPHASECPHASE gate
QuantumSymbolics.Create — Constant
CreateCreation operator, also available as the constant âꜛ, in an infinite dimension Fock basis. There is no unicode dagger superscript, so we use the uparrow
QuantumSymbolics.Destroy — Constant
DestroyAnnihilation operator, also available as the constant â, in an infinite dimension Fock basis.
QuantumSymbolics.F₁ — Constant
Single photon state
QuantumSymbolics.H — Constant
HHadamard gate
QuantumSymbolics.I — Constant
Identity operator in qubit basis
QuantumSymbolics.N — Constant
NNumber operator, also available as the constant n̂, in an infinite dimension Fock basis.
QuantumSymbolics.Pm — Constant
PmPauli "minus" operator, also available as the constant σ₋
QuantumSymbolics.Pp — Constant
PpPauli "plus" operator, also available as the constant σ₊
QuantumSymbolics.X — Constant
XPauli X operator, also available as the constant σˣ
QuantumSymbolics.X1 — Constant
X1Basis state of σˣ
QuantumSymbolics.X2 — Constant
X2Basis state of σˣ
QuantumSymbolics.Y — Constant
YPauli Y operator, also available as the constant σʸ
QuantumSymbolics.Y1 — Constant
Y1Basis state of σʸ
QuantumSymbolics.Y2 — Constant
Y2Basis state of σʸ
QuantumSymbolics.Z — Constant
ZPauli Z operator, also available as the constant σᶻ
QuantumSymbolics.Z1 — Constant
Z1Basis state of σᶻ
QuantumSymbolics.Z2 — Constant
Z2Basis state of σᶻ
QuantumSymbolics.vac — Constant
vacSingle-mode vacuum state
QuantumSymbolics.AmplifierCPTP — Type
AmplifierCPTP(r::Number, noise::Int)Amplification CPTP map, defined by the squeezing amplitude parameter r and thermal noise parameter noise.
QuantumSymbolics.AttenuatorCPTP — Type
AttenuatorCPTP(theta::Number, noise::Int)Attenuation CPTP map, defined by the beam splitter rotation parameter theta and thermal noise parameter noise.
QuantumSymbolics.BeamSplitterOp — Type
Two-mode beamsplitter operator in defined Fock basis.
QuantumSymbolics.BosonicThermalState — Type
Thermal bosonic state in defined Fock basis.
QuantumSymbolics.CoherentState — Type
struct CoherentState <: QuantumSymbolics.AbstractSingleBosonStateCoherent state in defined Fock basis.
QuantumSymbolics.CreateOp — Type
struct CreateOp <: QuantumSymbolics.AbstractSingleBosonOpCreation (raising) operator.
julia> f = FockState(2)|2⟩julia> create = CreateOp()a†julia> qsimplify(create*f, rewriter=qsimplify_fock)(sqrt(3))|3⟩QuantumSymbolics.DephasingCPTP — Type
Single-qubit dephasing CPTP map
QuantumSymbolics.DestroyOp — Type
struct DestroyOp <: QuantumSymbolics.AbstractSingleBosonOpAnnihilation (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⟩QuantumSymbolics.DisplaceOp — Type
struct DisplaceOp <: QuantumSymbolics.AbstractSingleBosonGateDisplacement operator in defined Fock basis.
julia> f = FockState(0)|0⟩julia> displace = DisplaceOp(im)D(im)julia> qsimplify(displace*f, rewriter=qsimplify_fock)|im⟩QuantumSymbolics.FockState — Type
struct FockState <: QuantumSymbolics.AbstractSingleBosonStateFock state in defined Fock basis.
QuantumSymbolics.GateCPTP — Type
A unitary gate followed by a CPTP map
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)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_+ _ZQuantumSymbolics.NumberOp — Type
struct NumberOp <: QuantumSymbolics.AbstractSingleBosonOpNumber operator.
julia> f = FockState(2)|2⟩julia> num = NumberOp()njulia> qsimplify(num*f, rewriter=qsimplify_fock)2|2⟩QuantumSymbolics.PhaseShiftOp — Type
struct PhaseShiftOp <: QuantumSymbolics.AbstractSingleBosonGatePhase-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⟩QuantumSymbolics.QuantumToolboxRepr — Type
Representation using kets, bras, density matrices, and superoperators governed by QuantumToolbox.jl.
QuantumSymbolics.SAdd — Type
Addition of quantum objects (kets, operators, or bras).
julia> @ket k₁; @ket k₂;julia> k₁ + k₂|k₁⟩+|k₂⟩QuantumSymbolics.SAnticommutator — Type
Symbolic anticommutator of two operators.
julia> @op A; @op B;julia> anticommutator(A, B){A,B}QuantumSymbolics.SBra — Type
Symbolic bra
QuantumSymbolics.SCommutator — Type
Symbolic commutator of two operators.
julia> @op A; @op B;julia> commutator(A, B)[A,B]julia> commutator(A, A)𝟎QuantumSymbolics.SDagger — Type
Dagger, i.e., adjoint of quantum objects (kets, bras, operators).
julia> @ket a; @op A;julia> dagger(2*im*A*a)(0 - 2im)|a⟩†A†julia> @op B;julia> dagger(A*B)B†A†julia> ℋ = SHermitianOperator(:ℋ); U = SUnitaryOperator(:U);julia> dagger(ℋ)ℋjulia> dagger(U)U⁻¹QuantumSymbolics.SHermitianOperator — Type
struct SHermitianOperator <: SymQObj{QuantumInterface.AbstractOperator}Symbolic Hermitian operator
QuantumSymbolics.SHermitianUnitaryOperator — Type
Symbolic Hermitian and unitary operator
QuantumSymbolics.SKet — Type
Symbolic ket
QuantumSymbolics.SOperator — Type
Symbolic operator
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⟩)AQuantumSymbolics.SScaled — Type
Scaling of a quantum object (ket, operator, or bra) by a number.
julia> @ket k|k⟩julia> 2*k2|k⟩julia> @op AAjulia> 2*A2AQuantumSymbolics.SSuperOpApply — Type
Symbolic application of a superoperator on an operator
julia> @op A; @superop S;julia> S*AS[A]QuantumSymbolics.SSuperOperator — Type
Symbolic superoperator
QuantumSymbolics.STrace — Type
Trace of an operator
julia> @op A; @op B;julia> tr(A)tr(A)julia> tr(commutator(A, B))0julia> @bra b; @ket k;julia> tr(k*b)⟨b||k⟩QuantumSymbolics.SUnitaryOperator — Type
struct SUnitaryOperator <: SymQObj{QuantumInterface.AbstractOperator}Symbolic unitary operator
QuantumSymbolics.SZeroBra — Type
Symbolic zero bra
QuantumSymbolics.SZeroKet — Type
Symbolic zero ket
QuantumSymbolics.SZeroOperator — Type
Symbolic zero operator
QuantumSymbolics.SqueezeOp — Type
struct SqueezeOp <: QuantumSymbolics.AbstractSingleBosonGateSqueezing operator in defined Fock basis.
julia> S = SqueezeOp(pi)S(π)julia> qsimplify(S*vac, rewriter=qsimplify_fock)|0,π⟩QuantumSymbolics.SqueezedState — Type
Squeezed vacuum state in defined Fock basis.
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.0imQuantumSymbolics.TwoSqueezeOp — Type
Two-mode squeezing operator in defined Fock basis.
QuantumSymbolics.TwoSqueezedState — Type
Two-mode squeezed vacuum state, or EPR state, in defined Fock basis.
Base.exp — Method
exp(x::Symbolic{AbstractOperator})Symbolic exponential of an operator. See also SExpOperator.
Base.inv — Method
inv(x::Symbolic{AbstractOperator})Symbolic inverse of an operator. See also SInvOperator.
Base.transpose — Method
transpose(x::Symbolic{AbstractKet})
transpose(x::Symbolic{AbstractBra})
transpose(x::Symbolic{AbstractOperator})Symbolic transpose operation. See also STranspose.
LinearAlgebra.tr — Method
tr(x::Symbolic{AbstractOperator})Symbolic trace operation. See also STrace.
QuantumInterface.dagger — Method
dagger(x::Symbolic{AbstractBra})Symbolic adjoint operation. See also SDagger.
QuantumInterface.dagger — Method
dagger(x::Symbolic{AbstractKet})Symbolic adjoint operation. See also SDagger.
QuantumInterface.dagger — Method
dagger(x::Symbolic{AbstractOperator})Symbolic adjoint operation. See also SDagger.
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())+ XQuantumInterface.projector — Method
projector(x::Symbolic{AbstractKet})Symbolic projection operation. See also SProjector.
QuantumInterface.ptrace — Method
ptrace(x::Symbolic{AbstractOperator})Symbolic partial trace operation. See also SPartialTrace.
QuantumSymbolics.anticommutator — Function
anticommutator(o1, o2)The anticommutator of two operators.
QuantumSymbolics.commutator — Function
commutator(o1, o2)The commutator of two operators.
QuantumSymbolics.consistent_representation — Method
Pick a representation that is consistent with given representations and appropriate for the given state.
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₂⟩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𝕀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₂|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₂⟩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