20 lines
665 B
MiniZinc
20 lines
665 B
MiniZinc
include "fzn_inverse.mzn";
|
|
include "fzn_inverse_reif.mzn";
|
|
include "analyse_all_different.mzn";
|
|
|
|
/** @group globals.channeling
|
|
Constrains two arrays of int variables, \a f and \a invf, to represent
|
|
inverse functions. All the values in each array must be within the index
|
|
set of the other array.
|
|
*/
|
|
predicate inverse(array[int] of var int: f,
|
|
array[int] of var int: invf) =
|
|
analyse_all_different(f) /\
|
|
analyse_all_different(invf) /\
|
|
fzn_inverse(f, invf);
|
|
|
|
predicate inverse_reif(array[int] of var int: f,
|
|
array[int] of var int: invf,
|
|
var bool: b) =
|
|
fzn_inverse_reif(f, invf, b);
|