git-subtree-dir: software/minizinc git-subtree-split: 4f10c82056ffcb1041d7ffef29d77a7eef92cf76
44 lines
847 B
MiniZinc
44 lines
847 B
MiniZinc
/***
|
|
!Test
|
|
solvers: [gecode, chuffed]
|
|
expected: !Result
|
|
solution: !SolutionSet
|
|
- !Solution
|
|
b: false
|
|
i: 0
|
|
- !Solution
|
|
b: true
|
|
i: 1
|
|
- !Solution
|
|
b: false
|
|
i: 2
|
|
- !Solution
|
|
b: false
|
|
i: 3
|
|
options:
|
|
all_solutions: true
|
|
***/
|
|
|
|
% Regression test for bug #244: when asked for all solutions (with G12/FD)
|
|
% this model did not produce the solution (i = 0, b = false). The problem
|
|
% was that the flattening of the reified array lookup in the constraint was
|
|
% incorrect. We were emitting (in pseudcode):
|
|
%
|
|
% (i = i' <-> i <= size(arr)) /\ i >= 1
|
|
%
|
|
% rather than
|
|
%
|
|
% (i = i' <-> i (i >= 1 /\ i <= size(arr)))
|
|
%
|
|
% i' is the fesh index variable.
|
|
|
|
var 0..3: i;
|
|
var bool: b;
|
|
array[1..2] of bool: arr = [true, false];
|
|
constraint b = arr[i];
|
|
solve satisfy;
|
|
output [
|
|
"b = ", show(b), ";\n",
|
|
"i = ", show(i), ";\n"
|
|
];
|