# Double sum over two identical variables

**URL:** <https://discourse.julialang.org/t/double-sum-over-two-identical-variables/135703>\
**Category:** Optimization (Mathematical)\
**Tags:** question\
**Created:** [February 17, 2026, 10:13am UTC](https://discourse.julialang.org/t/double-sum-over-two-identical-variables/135703 "2026-02-17T10:13:31Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Saki](https://avatars.discourse-cdn.com/v4/letter/s/35a633/32.png) [@Saki](https://discourse.julialang.org/u/Saki)\
**Post date:** [February 17, 2026, 10:13am UTC](https://discourse.julialang.org/t/double-sum-over-two-identical-variables/135703/1 "2026-02-17T10:13:31Z")

</div>

I am trying to implement a mathematical model in JuMP but cant seem to figure out how i should write this constraint because i needs to be in both A and P

@constraint(m,  
[(i,j) in data.A, i in data.P],  
sum(xs[(i, j), s] for s in data.Si[i]) - x[(i, j)] == 0  
)

the error i get is : LoadError: syntax: local variable name “i” conflicts with an argument  
how can i make this constraint work?

---

<div class="post-metadata">

**Author:** ![technocrat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/technocrat/32/220947_2.png) [@technocrat](https://discourse.julialang.org/u/technocrat)\
**Post date:** [February 17, 2026, 11:36am UTC](https://discourse.julialang.org/t/double-sum-over-two-identical-variables/135703/2 "2026-02-17T11:36:48Z")

</div>

> [@Saki](#):
>
> @constraint(m,  
> [(i,j) in data.A, i in data.P],  
> sum(xs[(i, j), s] for s in data.Si[i]) - x[(i, j)] == 0  
> )
> 
> the error i get is : LoadError: syntax: local variable name “i” conflicts with an argument  
> how can i make this constraint work?

JuMP’s `@constraint` macro with multiple index declarations like `[(i,j) in data.A, i in data.P]` treats `i` as a macro argument in the outer scope, causing a name conflict when `i` is also used inside the generator expression.

Use a single set for iteration that combines both conditions, ensuring `i` is only a local generator variable:

```julia-auto
@constraint(m, [(i,j) in data.A if i in data.P],
    sum(xs[(i, j), s] for s in data.Si[i]) - x[(i, j)] == 0
)

```

---

<div class="post-metadata">

**Author:** ![WalterMadelim](https://avatars.discourse-cdn.com/v4/letter/w/3e96dc/32.png) [@WalterMadelim](https://discourse.julialang.org/u/WalterMadelim)\
**Post date:** [February 17, 2026, 12:37pm UTC](https://discourse.julialang.org/t/double-sum-over-two-identical-variables/135703/3 "2026-02-17T12:37:39Z")

</div>

Additionally, this is not a “double sum” (as written in the title).

* * *

If `(i, j)` represents an arc and `i` is a node, you may want to read

> **[Performance problems with sum-if formulations · JuMP](https://jump.dev/JuMP.jl/stable/tutorials/getting_started/sum_if/#Performance-problems-with-sum-if-formulations)**
>
> This tutorial was generated using Literate.jl. Download the source as a .jl file. | Documentation for JuMP.

And also [https://github.com/jump-dev/JuMP.jl/pull/3810#issuecomment-3783782727](https://github.com/jump-dev/JuMP.jl/pull/3810#issuecomment-3783782727)

---

<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:** [February 17, 2026, 10:39pm UTC](https://discourse.julialang.org/t/double-sum-over-two-identical-variables/135703/4 "2026-02-17T22:39:06Z")

</div>

Hi @Saki, welcome to the forum 😄

You’re looking for the syntax:

```Julia
@constraint(
    m,
    [(i,j) in data.A; i in data.P],
    # ^ note the semicolon
    sum(xs[(i, j), s] for s in data.Si[i]) - x[(i, j)] == 0
)

```

See these parts of the docs:

- [Containers · JuMP](https://jump.dev/JuMP.jl/stable/manual/containers/#manual_sparse_axis_array)
- [Constraints · JuMP](https://jump.dev/JuMP.jl/stable/manual/constraints/#SparseAxisArrays)
