this repo has no description
at develop 516 B view raw
1include "all_different.mzn"; 2 3predicate fzn_circuit(array[int] of var int: x) = 4 let { set of int: S = index_set(x), 5 int: l = min(S), 6 int: n = card(S), 7 array[S] of var 1..n: order 8 } in 9 all_different(x) /\ 10 all_different(order) /\ 11 forall(i in S)(x[i] != i) /\ 12 order[l] = 1 /\ 13 forall(i in S)(order[i] != n -> order[x[i]] = order[i] + 1) /\ 14 forall(i in S)(order[i] == n -> x[i] = l ); 15 16%-----------------------------------------------------------------------------%