# JuMP @constraint macro modifies existing expression

**URL:** <https://discourse.julialang.org/t/jump-constraint-macro-modifies-existing-expression/107864>\
**Category:** Optimization (Mathematical)\
**Tags:** jump\
**Created:** [December 20, 2023, 4:05pm UTC](https://discourse.julialang.org/t/jump-constraint-macro-modifies-existing-expression/107864 "2023-12-20T16:05:55Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ethan-Russell](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ethan-russell/32/47111_2.png) [@Ethan-Russell](https://discourse.julialang.org/u/Ethan-Russell)\
**Post date:** [December 20, 2023, 4:05pm UTC](https://discourse.julialang.org/t/jump-constraint-macro-modifies-existing-expression/107864/1 "2023-12-20T16:05:55Z")

</div>

I have encountered cases where JuMP will modify an expression if it is used in a constraint. This seems like undesirable behavior, as the expression could be used later thinking it is the same as the original. Here is a minimum working example:

```julia
julia> using JuMP
julia> model = Model();

julia> @variable(model, 0 <= x <= 5);

julia> @expression(model, e, x + 5)
x + 5

julia> @constraint(model, -10 <= e <= 10)
x in [-15, 5]

julia> e
x

```

---

<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:** [December 20, 2023, 9:03pm UTC](https://discourse.julialang.org/t/jump-constraint-macro-modifies-existing-expression/107864/2 "2023-12-20T21:03:10Z")

</div>

Ouch! This is a nasty bug: [Constraint macro modifies expression · Issue #3638 · jump-dev/JuMP.jl · GitHub](https://github.com/jump-dev/JuMP.jl/issues/3638)

I’ll take a look.

Edit: fix in-bound: [Fix modifying user-expressions in macros by odow · Pull Request #3639 · jump-dev/JuMP.jl · GitHub](https://github.com/jump-dev/JuMP.jl/pull/3639)
