git-subtree-dir: software/minizinc git-subtree-split: 4f10c82056ffcb1041d7ffef29d77a7eef92cf76
21 lines
684 B
MiniZinc
21 lines
684 B
MiniZinc
%-----------------------------------------------------------------------------%
|
|
% Requires that the array 'x' is in strict increasing order
|
|
%-----------------------------------------------------------------------------%
|
|
|
|
predicate fzn_strictly_increasing_int_opt(array[int] of var opt int: x) =
|
|
let {
|
|
array[int] of var opt int: xx = array1d(x);
|
|
array[1..length(xx)] of var int: y;
|
|
constraint forall(i in 1..length(xx)) (
|
|
y[i] = if occurs(xx[i]) then
|
|
deopt(xx[i])
|
|
elseif i = 1 then
|
|
lb_array(xx) - 1
|
|
else
|
|
y[i-1]
|
|
endif
|
|
);
|
|
} in forall (i in 2..length(y) where occurs(xx[i])) (
|
|
deopt(xx[i]) > y[i-1]
|
|
);
|