predicate fzn_value_precede_int(int: s, int: t, array[int] of var int: x) = let { var index_set(x): pos_s; constraint forall (i in index_set(x)) ( (pos_s <= i) -> (x[i] = s) \/ (pos_s < i) ); } in forall(i in index_set(x)) ( (x[i] = t) -> (pos_s < i) );