this repo has no description
at develop 1.2 kB view raw
1include "fzn_writes_seq.mzn"; 2include "fzn_writes_seq_reif.mzn"; 3 4/** @group globals.array 5 Creates a new array \a O from an input array \a I with a sequence of changes at positions \a P to take values \a V 6 7 \a I is an array of integers 8 \a O is an array of integers with same index set as \a I 9 \a P is an array of index values in \a I 10 \a V is an array of integer values 11*/ 12predicate writes_seq(array[int] of var int: I, array[int] of var int: P, 13 array[int] of var int: V, array[int] of var int: O) = 14 assert(index_set(O) = index_set(I),"writes: index set of I must be same as O") /\ 15 assert(index_set(P) = index_set(V),"writes: index set of P must be same as V") /\ 16 fzn_writes_seq(I, P, V, O); 17 18function array[int] of var int: writes_seq(array[int] of var int: I, 19 array[int] of var int: P, 20 array[int] of var int: V) = 21 let { 22 array[index_set(I)] of var int: O; 23 constraint assert(index_set(P) = index_set(V),"writes: index set of P must be same as V"); 24 constraint fzn_writes_seq(I,P,V,O); 25 } in O; 26 27%-----------------------------------------------------------------------------%