1
0
This repository has been archived on 2025-03-06. You can view files and clone it, but cannot push or open issues or pull requests.
Jip J. Dekker f2a1c4e389 Squashed 'software/mza/' content from commit f970a59b17
git-subtree-dir: software/mza
git-subtree-split: f970a59b177c13ca3dd8aaef8cc6681d83b7e813
2021-07-11 16:34:30 +10:00

44 lines
1.5 KiB
MiniZinc

predicate bool_clause_reif(array[int] of var bool: p, array[int] of var bool: n, var bool: c) =
c = ( sum(i in index_set(p))( bool2int(p[i]) )
- sum(i in index_set(n))( bool2int(n[i]) )
+ length(n)
>= 1
);
predicate array_float_minimum(var float: m, array[int] of var float: x) =
if false then
array_float_minimum__IND(m, x) %% transfer to Concert because of prepro
else
array_float_minimum_I( m, [ x[i] | i in index_set(x)])
endif;
predicate array_float_maximum(var float: m, array[int] of var float: x) =
if false then
array_float_maximum__IND(m, x)
else
array_float_minimum_I(-m, [-x[i] | i in index_set(x)])
endif;
predicate array_int_minimum(var int: m, array[int] of var int: x) =
if false then
array_int_minimum__IND(m, x)
else
array_float_minimum_I( int2float(m), [ int2float(x[i]) | i in index_set(x)])
endif;
predicate array_int_maximum(var int: m, array[int] of var int: x) =
if false then
array_int_maximum__IND(m, x)
else
array_float_minimum_I(-int2float(m), [-int2float(x[i]) | i in index_set(x)])
endif;
% predicate array_int_maximum__OLD_SYMMETRIES(var int: m, array[int] of var int: x) =
% let { int: l = min(index_set(x)),
% int: u = max(index_set(x)),
% int: ly = lb_array(x),
% int: uy = ub_array(x),
% array[l..u] of var ly..uy: y } in
% y[l] = x[l] /\
% m = y[u] /\
% forall (i in l+1 .. u) ( y[i] == max(x[i],y[i-1]) );