this repo has no description
1include "../std/fzn_lex_less_bool_reif.mzn";
2
3predicate fzn_lex_less_bool_imp(array[int] of var bool: x,
4 array[int] of var bool: y,
5 var bool: c) =
6 let { int: lx = min(index_set(x)),
7 int: ux = max(index_set(x)),
8 int: ly = min(index_set(y)),
9 int: uy = max(index_set(y)),
10 int: size = max(ux - lx, uy - ly),
11 array[0..size+1] of var bool: b }
12 in
13 (c -> b[0])
14 /\
15 forall(i in 0..size) (
16 b[i] = ( x[lx + i] <= y[ly + i]
17 /\
18 (x[lx + i] < y[ly + i] \/ b[i+1]) )
19 )
20 /\
21 b[size + 1] = (ux - lx < uy - ly);