给定以下 minizinc 程序:
var 0..4: a;
var 0..5: b;
var -5..2: c;
var -8..-3: d;
var 0..8: m;
var bool: r;
constraint r <-> m = max([a,b,c,d]);
solve satisfy;
和redefinitions-2.0.mzn
文件
predicate array_int_maximum(var int: m, array[int] of var int: x);
predicate array_int_maximum_reif(var int: m, array[int] of var int: x, var bool: r);
predicate array_int_maximum_imp(var int: m, array[int] of var int: x, var bool: r);
我希望得到一个具体化的版本作为展平的输出,但我确实得到了:
predicate array_int_maximum(var int: m,array [int] of var int: x);
predicate int_eq_imp(var int: a,var int: b,var bool: r);
var 0..4: a:: output_var;
var 0..13: b:: output_var;
var -5..2: c:: output_var;
var -8..-3: d:: output_var;
var 0..16: m:: output_var;
var bool: r:: output_var;
var -8..13: X_INTRODUCED_1_ ::var_is_introduced :: is_defined_var;
array [1..4] of var int: X_INTRODUCED_0_ ::var_is_introduced = [a,b,c,d];
constraint array_int_maximum(X_INTRODUCED_1_,X_INTRODUCED_0_):: defines_var(X_INTRODUCED_1_);
constraint int_eq_imp(m,X_INTRODUCED_1_,r);
solve satisfy;
我如何以及在哪里添加我支持该谓词的 reif 和 imp 版本的信息,因此处理速度可能比自动翻译快?(这个未解决问题的重复)