Register array of symbolic functions

JuMP v1.15 released a rewrite of the nonlinear interface that intended to fix the many issues related to the @NL interface: ANN: JuMP v1.15 is released

See the new docs:

If your functions support tracing, you may be able to do:

@constraint(model, [k in 1:num_cnsts], gn[k](x...) <= 0)

otherwise, do:

for k in 1:num_cnsts
    op_g = add_nonlinear_operator(model, num_vars, gn[k]; name = Symbol("g$k"))
    @constraint(model, op_g(x...) <= 0)
end