I’m new to the Symbolics.jl package, and I’m currently trying to use it in combination with other packages. However I keep getting the error ERROR: TypeError: non-boolean (Num) used in boolean context
when I try to use symbolic variables with a couple other packages.
For example, I’ve tried with the Polynomials.jl package: (Full stacktrace at the bottom of this post for visual clarity.)
julia> using Polynomials, Symbolics
julia> @variables x
(x,)
julia> Polynomial([x, 1, 2])
Polynomial(Error showing value of type Polynomial{Num}:
ERROR: TypeError: non-boolean (Num) used in boolean context
Stacktrace:
...
I’ve also tried with the ControlSystems.jl package (creating a transfer function), and I get the same error:
julia> using ControlSystems, Symbolics
julia> @variables x
(x,)
julia> tf([1],[x,1])
TransferFunction{Continuous, ControlSystems.SisoRational{Num}}
Error showing value of type TransferFunction{Continuous, ControlSystems.SisoRational{Num}}:
ERROR: TypeError: non-boolean (Num) used in boolean context
Stacktrace:
...
Would someone be willing to explain what the cause of this issue might be?
Julia version Info:
julia> versioninfo()
Julia Version 1.6.0-rc3
Commit 23267f0d46 (2021-03-16 17:04 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-11.0.1 (ORCJIT, skylake)
Package versions:
- Symbolics.jl:
(practice1) pkg> st --manifest Symbolics
Status `~/code3/julia/AI/practice1/Manifest.toml`
[0c5d862f] Symbolics v0.1.9
- Polynomials.jl:
(practice1) pkg> st --manifest Polynomials
Status `~/code3/julia/AI/practice1/Manifest.toml`
[f27b6e38] Polynomials v1.2.0
- ControlSystems.jl:
(practice1) pkg> st --manifest ControlSystems
Status `~/code3/julia/AI/practice1/Manifest.toml`
[a6e380b2] ControlSystems v0.9.2
Stacktraces:
- For the Polynomial.jl example:
julia> using Polynomials, Symbolics
julia> @variables x
(x,)
julia> Polynomial([x, 1, 2])
Polynomial(Error showing value of type Polynomial{Num}:
ERROR: TypeError: non-boolean (Num) used in boolean context
Stacktrace:
[1] printsign(io::IOContext{Base.TTY}, pj::Num, first::Bool, mimetype::MIME{Symbol("text/plain")})
@ Polynomials ~/.julia/packages/Polynomials/OvhiS/src/show.jl:168
[2] showterm(io::IOContext{Base.TTY}, #unused#::Type{Polynomial{Num}}, pj::Num, var::Symbol, j::Int64, first::Bool, mimetype::MIME{Symbol("text/plain")})
@ Polynomials ~/.julia/packages/Polynomials/OvhiS/src/polynomials/standard-basis.jl:9
[3] printpoly(io::IOContext{Base.TTY}, p::Polynomial{Num}, mimetype::MIME{Symbol("text/plain")}; descending_powers::Bool, offset::Int64, var::Symbol, compact::Bool, mulsymbol::String)
@ Polynomials ~/.julia/packages/Polynomials/OvhiS/src/show.jl:145
[4] printpoly
@ ~/.julia/packages/Polynomials/OvhiS/src/show.jl:138 [inlined]
[5] show(io::IOContext{Base.TTY}, mimetype::MIME{Symbol("text/plain")}, p::Polynomial{Num})
@ Polynomials ~/.julia/packages/Polynomials/OvhiS/src/show.jl:56
[6] (::REPL.var"#38#39"{REPL.REPLDisplay{REPL.LineEditREPL}, MIME{Symbol("text/plain")}, Base.RefValue{Any}})(io::Any)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:220
[7] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:462
[8] display(d::REPL.REPLDisplay, mime::MIME{Symbol("text/plain")}, x::Any)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:213
[9] display(d::REPL.REPLDisplay, x::Any)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:225
[10] display(x::Any)
@ Base.Multimedia ./multimedia.jl:328
[11] #invokelatest#2
@ ./essentials.jl:708 [inlined]
[12] invokelatest
@ ./essentials.jl:706 [inlined]
[13] print_response(errio::IO, response::Any, show_value::Bool, have_color::Bool, specialdisplay::Union{Nothing, AbstractDisplay})
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:247
[14] (::REPL.var"#40#41"{REPL.LineEditREPL, Pair{Any, Bool}, Bool, Bool})(io::Any)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:231
[15] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:462
[16] print_response(repl::REPL.AbstractREPL, response::Any, show_value::Bool, have_color::Bool)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:229
[17] (::REPL.var"#do_respond#61"{Bool, Bool, REPL.var"#72#82"{REPL.LineEditREPL, REPL.REPLHistoryProvider}, REPL.LineEditREPL, REPL.LineEdit.Prompt})(s::REPL.LineEdit.MIState, buf::Any, ok::Bool)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:798
[18] #invokelatest#2
@ ./essentials.jl:708 [inlined]
[19] invokelatest
@ ./essentials.jl:706 [inlined]
[20] run_interface(terminal::REPL.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
@ REPL.LineEdit /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/LineEdit.jl:2441
[21] run_frontend(repl::REPL.LineEditREPL, backend::REPL.REPLBackendRef)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:1126
[22] (::REPL.var"#44#49"{REPL.LineEditREPL, REPL.REPLBackendRef})()
@ REPL ./task.jl:406
- For the ControlSystems.jl example:
julia> using ControlSystems, Symbolics
julia> @variables x
(x,)
julia> tf([1],[x,1])
TransferFunction{Continuous, ControlSystems.SisoRational{Num}}
Error showing value of type TransferFunction{Continuous, ControlSystems.SisoRational{Num}}:
ERROR: TypeError: non-boolean (Num) used in boolean context
Stacktrace:
[1] printsign(io::IOContext{IOBuffer}, pj::Num, first::Bool, mimetype::MIME{Symbol("text/plain")})
@ Polynomials ~/.julia/packages/Polynomials/OvhiS/src/show.jl:168
[2] showterm(io::IOContext{IOBuffer}, #unused#::Type{Polynomial{Num}}, pj::Num, var::Symbol, j::Int64, first::Bool, mimetype::MIME{Symbol("text/plain")})
@ Polynomials ~/.julia/packages/Polynomials/OvhiS/src/polynomials/standard-basis.jl:9
[3] printpoly(io::IOBuffer, p::Polynomial{Num}, mimetype::MIME{Symbol("text/plain")}; descending_powers::Bool, offset::Int64, var::Symbol, compact::Bool, mulsymbol::String)
@ Polynomials ~/.julia/packages/Polynomials/OvhiS/src/show.jl:145
[4] #90 (repeats 2 times)
@ ~/.julia/packages/ControlSystems/D98Nv/src/utilities.jl:57 [inlined]
[5] sprint(f::Function, args::Polynomial{Num}; context::Nothing, sizehint::Int64)
@ Base ./strings/io.jl:105
[6] sprint
@ ./strings/io.jl:101 [inlined]
[7] print_siso(io::IOContext{Base.TTY}, f::ControlSystems.SisoRational{Num}, var::Symbol)
@ ControlSystems ~/.julia/packages/ControlSystems/D98Nv/src/types/SisoTfTypes/SisoRational.jl:48
[8] show(io::IOContext{Base.TTY}, G::TransferFunction{Continuous, ControlSystems.SisoRational{Num}})
@ ControlSystems ~/.julia/packages/ControlSystems/D98Nv/src/types/TransferFunction.jl:174
[9] show(io::IOContext{Base.TTY}, #unused#::MIME{Symbol("text/plain")}, x::TransferFunction{Continuous, ControlSystems.SisoRational{Num}})
@ Base.Multimedia ./multimedia.jl:47
[10] (::REPL.var"#38#39"{REPL.REPLDisplay{REPL.LineEditREPL}, MIME{Symbol("text/plain")}, Base.RefValue{Any}})(io::Any)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:220
[11] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:462
[12] display(d::REPL.REPLDisplay, mime::MIME{Symbol("text/plain")}, x::Any)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:213
[13] display(d::REPL.REPLDisplay, x::Any)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:225
[14] display(x::Any)
@ Base.Multimedia ./multimedia.jl:328
[15] #invokelatest#2
@ ./essentials.jl:708 [inlined]
[16] invokelatest
@ ./essentials.jl:706 [inlined]
[17] print_response(errio::IO, response::Any, show_value::Bool, have_color::Bool, specialdisplay::Union{Nothing, AbstractDisplay})
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:247
[18] (::REPL.var"#40#41"{REPL.LineEditREPL, Pair{Any, Bool}, Bool, Bool})(io::Any)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:231
[19] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:462
[20] print_response(repl::REPL.AbstractREPL, response::Any, show_value::Bool, have_color::Bool)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:229
[21] (::REPL.var"#do_respond#61"{Bool, Bool, REPL.var"#72#82"{REPL.LineEditREPL, REPL.REPLHistoryProvider}, REPL.LineEditREPL, REPL.LineEdit.Prompt})(s::REPL.LineEdit.MIState, buf::Any, ok::Bool)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:798
[22] #invokelatest#2
@ ./essentials.jl:708 [inlined]
[23] invokelatest
@ ./essentials.jl:706 [inlined]
[24] run_interface(terminal::REPL.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
@ REPL.LineEdit /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/LineEdit.jl:2441
[25] run_frontend(repl::REPL.LineEditREPL, backend::REPL.REPLBackendRef)
@ REPL /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:1126
[26] (::REPL.var"#44#49"{REPL.LineEditREPL, REPL.REPLBackendRef})()
@ REPL ./task.jl:406