Your second comment looks like it’s on the right track, but you might want to double check your logic.
I’d probably write your model as:
using JuMP
import HiGHS
function main(N)
model = Model(HiGHS.Optimizer)
@variable(model, x[1:N, 1:2N], Bin)
@variable(model, y[1:N, 1:2(N-1)], Bin)
@constraints(model, begin
[j in 1:2N], sum(x[:,j]) == 1
[i in 1:N], sum(y[i,1:(2N-1-i)]) == 1
[k in 1:N, i in 1:(2N-1-k)], y[k,i] --> {x[k,i] + x[k,i+k+1] == 2}
end)
optimize!(model)
assert_is_solved_and_feasible(model)
return value.(x), value.(y)
end