1%-----------------------------------------------------------------------------% 2% Constrains two arrays of int variables to represent inverse functions. 3% All the values in each array must be within the index set of the other array. 4% 5% Linear version. 6%-----------------------------------------------------------------------------% 7 8include "fzn_inverse_in_range.mzn"; 9 10predicate fzn_inverse(array[int] of var int: f, 11 array[int] of var int: invf) = 12 forall(i in index_set(f)) ( f[i] in index_set(invf) ) /\ 13 forall(j in index_set(invf)) ( invf[j] in index_set(f) ) /\ 14 fzn_inverse_in_range(f, invf); 15