Dear All,

I am trying to define a constraint to equate two symbolically symmetric matrices and I am wondering if there is a compact way so that `JuMP`

does not store redundant constraints. A simple example is as follows

```
using JuMP, Ipopt
test_model = Model(Ipopt.Optimizer)
n = 2
@variable(test_model, X[1:n,1:n], Symmetric)
@variable(test_model, Y[1:n,1:n], Symmetric)
@constraint(test_model, X .== Y)
```

where the last equality creates redundant constraint `X[1,2] - Y[1,2] == 0.0`

as shown below:

```
2×2 Matrix{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.EqualTo{Float64}}, ScalarShape}}:
X[1,1] - Y[1,1] == 0.0 X[1,2] - Y[1,2] == 0.0
X[1,2] - Y[1,2] == 0.0 X[2,2] - Y[2,2] == 0.0
```

Of course, I can avoid the redundant constraint by:

```
@constraint(test_model, sym_con[i=1:n, j=1:i], X[i,j] == Y[i,j])
```

or

```
for i in 1:n
for j in 1:i
@constraint(test_model, X[i,j] == Y[i,j])
end
end
```

and both work just fine, but is this the best way to do it?

(Note that for the given example one may wonder why I am equating two variables that are the same rather than defining only one of `X`

or `Y`

. But for the problem I am working on, I need to enforce equality between two symbolically symmetric matrices, where the matrix `Y`

corresponds to Y = z z^\top that is an outer product matrix, and the variable `X`

is introduced to turn a cubic constraint into a quadratic constraint.)

Any tips/suggestions will be much appreciated!