QuantumSavory / QuantumSymbolics.jl

Computer algebra tools for symbolic manipulations in quantum mechanics and quantum information
MIT License
29 stars 9 forks source link

Wrong distributive scaling properties #54

Closed apkille closed 2 months ago

apkille commented 2 months ago
julia> @op A
A

julia> (1+im)*A
1 + 1imA
apkille commented 2 months ago

Could be that printing functionalities are misleading here:

julia> QuantumSymbolics.arguments((1+im)*A)
2-element Vector{Any}:
 1 + 1im
    A

Will address in upcoming PR.

apkille commented 2 months ago

Also, we currently have

julia> @bra b; @ket k;

julia> (b*k)*A
ERROR: TypeError: non-boolean (SymbolicUtils.BasicSymbolic{Bool}) used in boolean context
Stacktrace:
 [1] *(c::SBraKet, x::SOperator)
   @ QuantumSymbolics ~/Documents/Julia Packages/QuantumJulia/QuantumSymbolics.jl/src/QSymbolicsBase/basic_ops_homogeneous.jl:33
 [2] top-level scope
   @ REPL[16]:1
apkille commented 2 months ago

Could be that printing functionalities are misleading here:

julia> QuantumSymbolics.arguments((1+im)*A)
2-element Vector{Any}:
 1 + 1im
    A

Will address in upcoming PR.

Another printing issue is when you multiply a tensor product with an operator, say A*(B ⊗ C), which currently gives AB⊗C, rather than the preferred A(B ⊗ C).