# Symbolics and Convex

**URL:** <https://discourse.julialang.org/t/symbolics-and-convex/92628>\
**Category:** Optimization (Mathematical)\
**Tags:** symbolics, convex\
**Created:** [January 7, 2023, 7:50am UTC](https://discourse.julialang.org/t/symbolics-and-convex/92628 "2023-01-07T07:50:29Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![iHany](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ihany/32/18151_2.png) [@iHany](https://discourse.julialang.org/u/iHany)\
**Post date:** [January 7, 2023, 7:50am UTC](https://discourse.julialang.org/t/symbolics-and-convex/92628/1 "2023-01-07T07:50:29Z")

</div>

Hi, I’d like to consider a symbolic variable as a constant from Convex.  
For example,

```julia
julia> using Symbolics

julia> using Convex

julia> @variables x
1-element Vector{Num}:
 x

julia> u = Convex.Variable(1)
Variable
size: (1, 1)
sign: real
vexity: affine
id: 120…439

julia> x + u
ERROR: TypeError: non-boolean (Num) used in boolean context
Stacktrace:
 [1] _sign
   @ ~/.julia/packages/Convex/ukggP/src/constant.jl:17 [inlined]
 [2] Constant (repeats 2 times)
   @ ~/.julia/packages/Convex/ukggP/src/constant.jl:37 [inlined]
 [3] +(x::Num, y::Convex.Variable)
   @ Convex ~/.julia/packages/Convex/ukggP/src/atoms/affine/add_subtract.jl:117
 [4] top-level scope
   @ REPL[4]:1
 [5] top-level scope
   @ ~/.julia/packages/Infiltrator/r3Hf5/src/Infiltrator.jl:710

julia> Convex.Constant(x)
ERROR: TypeError: non-boolean (Num) used in boolean context
Stacktrace:
 [1] _sign
   @ ~/.julia/packages/Convex/ukggP/src/constant.jl:17 [inlined]
 [2] Constant (repeats 2 times)
   @ ~/.julia/packages/Convex/ukggP/src/constant.jl:37 [inlined]
 [3] top-level scope
   @ REPL[5]:1
 [4] top-level scope
   @ ~/.julia/packages/Infiltrator/r3Hf5/src/Infiltrator.jl:710

```

Is there any way to do this?

---

<div class="post-metadata">

**Author:** ![bowenszhu](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bowenszhu/32/44677_2.png) [@bowenszhu](https://discourse.julialang.org/u/bowenszhu)\
**Post date:** [January 7, 2023, 8:20am UTC](https://discourse.julialang.org/t/symbolics-and-convex/92628/2 "2023-01-07T08:20:50Z")

</div>

The stack trace is informative. `Convex.Constant` needs the `_sign` of its argument. `x >= 0` is a symbolic expression instead of a boolean.  
If your `x` is positive, you could define

```julia
function Convex._sign(v::Num)
    if isequal(v, x)
        return Convex.Positive()
    end
end

```

---

<div class="post-metadata">

**Author:** ![iHany](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ihany/32/18151_2.png) [@iHany](https://discourse.julialang.org/u/iHany)\
**Post date:** [January 7, 2023, 8:54am UTC](https://discourse.julialang.org/t/symbolics-and-convex/92628/3 "2023-01-07T08:54:20Z")

</div>

What if it cannot determine the sign of `x` in advance, what should I do?

---

<div class="post-metadata">

**Author:** ![odow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/odow/32/28685_2.png) [@odow](https://discourse.julialang.org/u/odow)\
**Post date:** [January 7, 2023, 9:16am UTC](https://discourse.julialang.org/t/symbolics-and-convex/92628/4 "2023-01-07T09:16:22Z")

</div>

No. There is no way to integrate Convex.jl with Symbolics.jl
