Вы можете вычислить новые переменные решения, чтобы сохранить только значения больше 1, а затем использовать min:
dvar int x[1..4];
dvar int x2[1..4]; // derive from x, if x positive then x else max of x+1
dvar int y;
dvar int M;
subject to
{
x[1]==0;
x[2]==-6;
x[3]==4;
x[4]==5;
M==max(i in 1..4) x[i];
forall(i in 1..4)
{
x[i]<=0 => x2[i]==M+1;
x[i]>=1 => x2[i]==x[i];
}
y==min(i in 1..4) x2[i];
}
execute
{
writeln("y=",y);
}
, что дает
y=4