this repo has no description
at develop 638 B view raw
1include "seq_precede_chain.mzn"; 2 3predicate fzn_value_precede_chain_int(array[int] of int: T, array[int] of var int: X) = 4 if min(index_set(T)) = 1 /\ forall (i in index_set(T))(T[i] = i) 5 /\ max(T) = ub_array(X) 6 then 7 seq_precede_chain(X) 8 else 9 let { 10 int: l = lb_array(X); 11 int: u = ub_array(X); 12 array[1.. u -l +1] of int : p 13 = [sum([i | i in index_set(T) where T[i] = j]) | j in l..u]; 14 array [int] of var 0..length(T): Y 15 = array1d(index_set(X),[p[X[i]-l+1] | i in index_set(X)]); 16 } in seq_precede_chain(Y) 17 endif;