this repo has no description
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%-----------------------------------------------------------------------------%