1include "span.mzn"; 2 3predicate fzn_alternative_reif(var opt int: s0, var int: d0, 4 array[int] of var opt int: s, 5 array[int] of var int: d, var bool: b) = 6 b <-> ( sum(i in index_set(s))(bool2int(occurs(s[i]))) <= 1 /\ 7 span(s0,d0,s,d) );