this repo has no description
at develop 1.5 kB view raw
1predicate bool_clause_reif(array[int] of var bool: p, array[int] of var bool: n, var bool: c) = 2 c = ( sum(i in index_set(p))( bool2int(p[i]) ) 3 - sum(i in index_set(n))( bool2int(n[i]) ) 4 + length(n) 5 >= 1 6 ); 7 8 9predicate array_float_minimum(var float: m, array[int] of var float: x) = 10 if false then 11 array_float_minimum__IND(m, x) %% transfer to Concert because of prepro 12 else 13 array_float_minimum_I( m, [ x[i] | i in index_set(x)]) 14 endif; 15predicate array_float_maximum(var float: m, array[int] of var float: x) = 16 if false then 17 array_float_maximum__IND(m, x) 18 else 19 array_float_minimum_I(-m, [-x[i] | i in index_set(x)]) 20 endif; 21predicate array_int_minimum(var int: m, array[int] of var int: x) = 22 if false then 23 array_int_minimum__IND(m, x) 24 else 25 array_float_minimum_I( int2float(m), [ int2float(x[i]) | i in index_set(x)]) 26 endif; 27predicate array_int_maximum(var int: m, array[int] of var int: x) = 28 if false then 29 array_int_maximum__IND(m, x) 30 else 31 array_float_minimum_I(-int2float(m), [-int2float(x[i]) | i in index_set(x)]) 32 endif; 33 34% predicate array_int_maximum__OLD_SYMMETRIES(var int: m, array[int] of var int: x) = 35% let { int: l = min(index_set(x)), 36% int: u = max(index_set(x)), 37% int: ly = lb_array(x), 38% int: uy = ub_array(x), 39% array[l..u] of var ly..uy: y } in 40% y[l] = x[l] /\ 41% m = y[u] /\ 42% forall (i in l+1 .. u) ( y[i] == max(x[i],y[i-1]) ); 43