this repo has no description
1predicate fzn_if_then_else_partiality(array[int] of var bool: c, array[int] of var bool: def, var bool: b) =
2 let { array[index_set(c)] of var bool: d; } in
3 forall(i in index_set(c))
4 (if i > min(index_set(c)) then
5 d[i] = (not c[i-1] /\ d[i-1])
6 else
7 d[i] = true
8 endif) /\
9 forall(i in index_set(c))
10 ( (b /\ c[i] /\ d[i] -> def[i])) /\
11 forall (i in index_set(c)) (d[i] /\ c[i] -> b);